css实现渐变色边框

阅读数:57 评论数:0

跳转到新版页面

分类

html/css/js

正文

一、使用border-image

与 background-image 类似,我们可以在 border 中展示image和linear-gradient。

这种方法需要简单,但不支持设置border-radius

div {
  border: 4px solid;
  border-image: linear-gradient(to right, #8f41e9, #578aef) 1;
}

/* 或者 */
div {
  border: 4px solid;
  border-image-source: linear-gradient(to right, #8f41e9, #578aef);
  border-image-slice: 1;
}

1、border-image

参数包括:图片、裁剪位置、重复性

(1)图片border-image-source

采用url()调用,可以是相对/绝对路径。

(2)图片的裁剪位置 border-image-slice

参数没有单位,专指像素;支持百分比,百分比相对于边框图片而言;

裁剪特性,

有1~4个参数,方位符合CSS普遍的方位规则(上右下左,顺时针)                                                                                              

               border-image:url(border.png)30%  35% 40%  30%  repeat;        


在图片上部30%的地方裁剪一下,在右部35%的地方裁剪一下,在底部40%的地方裁剪一下,在左部30%的地方裁剪一下。
 
(3)重复性border-image-repeat
参数0~2个,2个参数一个水平,一个垂直。
这里重复与background的背景重复,差异较大。background图片的重复包括:重复、不重复、水平重复、垂直重复。对于border-image而言包括:repeat(重复)、round(平铺)、stretch(拉伸),其中stretch是默认值。
 

二、使用background-image

思路是:使用两个盒子叠加,给下层的盒子设置渐变色背景和 padding,给上层盒子设置纯色背景。

.border-box {
  width: 300px;
  height: 200px;
  margin: 25px 0;
}

.border-bg {
  padding: 4px;
  background: linear-gradient(to right, #8f41e9, #578aef);
  border-radius: 16px;
}

.content {
  height: 100%;
  background: #222;
  border-radius: 13px; /*trciky part*/
}

三、两层元素:background-image background-clip

为了解决方法 2 中 border-radius 不准确的问题,可以使用一个单独的元素作为渐变色背景放在最下层,上层设置一个透明的 border 和纯色的背景(需要设置 background-clip: padding-box 以避免盖住下层元素的 border), 上下两层设置相同的 border-radius。

.border-box {
  border: 4px solid transparent;
  border-radius: 16px;
  position: relative;
  background-color: #222;
  background-clip: padding-box; /*important*/
}

.border-bg {
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  bottom: 0;
  z-index: -1;
  margin: -4px;
  border-radius: inherit; /*important*/ 
  background: linear-gradient(to right, #8f41e9, #578aef);
}

 1、background-clip

用于规定背景的绘制区域:默认值为border-box,可选padding-box和content-box

四、伪元素

方法三的简化,使用伪元素替换div.border-bg

.border-box {
  border: 4px solid transparent;
  border-radius: 16px;
  position: relative;
  background-color: #222;
  background-clip: padding-box; /*important*/
}

.border-box::before {
  content: '';
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  bottom: 0;
  z-index: -1;
  margin: -4px;
  border-radius: inherit; /*important*/
  background: linear-gradient(to right, #8F41E9, #578AEF);
}

五、单层元素 background-clip background-origin background-image

分别设置 background-clip、background-origin、background-image 这三个属性,每个属性设置两组值,第一组用于设置border内的单色背景,第二组用于设置border上的渐变色。

.border-box {
  border: 4px solid transparent;
  border-radius: 16px;
  background-clip: padding-box, border-box;
  background-origin: padding-box, border-box;
  background-image: linear-gradient(to right, #222, #222), linear-gradient(90deg, #8F41E9, #578AEF);
}

1、background-origin

它有两个值:

padding-box(默认):指定背景图片由padding开始展示

content-box:指定背景图片在内容区域开始展示

border-box:指定背景图片在边框区域开始展示

 




相关推荐

一、概述 overflow属性用于当一个元素太大而无法适应父级窗口的大小时行为。具体又可以分为: overflow-x 属性规定是否对内容的左/右边缘进行裁剪 - 如果溢出元素内容区域的话。 over

一、概述 background是css简写属性,可有一个或多个值,且可以按任意顺序放置: background: <bg-color> <bg-image> <position/bg-size>

前提是定义了background-image属性,然后用background-attachment

局部作用域 css的规则都是全局的,任何一个组件的样式规则,都对整个页面有效。产生局部作用域的唯一方法,就是使用一个独一无二的class的名字,不会与其他选择器重名,但是当我们

less作为css的一种形式的扩展,它并没有阉割CSS的功能,而是在现有的CSS语法 上,添加了很多额外的功能。 变量 在less中利用@符号进行变量的定义</p

css预处理器是一种语言用来为css增加一些编程的特性,无需考虑浏览器的兼容性问题,最为普遍的三款

module.exports = { "plugins": { "postcss-import": {},

Less是一个CSS的超集,Less允许我们定义变量,使用嵌套式声明,定义函数等。严格说Less包含两部分:(1)Less的语法 (2)Less预处理器。浏览器终究只认识CSS,所以Less文件

最近自己做了一个网站,使用了cdn加速bootstrap和jquery的加载。这里先解释一下什么是cdn。 c

一、概述 CSS3中新增的一个函数,calculate(计算)的缩写。用于动态计算宽/高,你可以使用calc()给元素的各个属性设置值【margin、border、padding、font-size】