css渐变基础和效果收集
linear-gradient
1. 多段百分比值,规则
linear-gradient 不能直接实现斑马条纹,它会将渐变充满整个容器。配合background-size可以实现条纹,但是需要计算,颜色也不能直接顺序写,一种颜色要分多段来写,才能达到整个容器一致的重复渐变。并且更换倾斜角度,background-size的值要重新计算。代价很高,不推荐使用。 2.1 斑马条
5.1 虚线
切角多种实现方法
1. 固定距离使用 clip-path 2. 固定切角使用 conic-gradient(at 100% 0, #B89DFF 250deg, transparent 0) 3. 局部切角使用 linear-gradient 具体可参考 css实现切角 6. 渐变种类 linear-gradient : 线性渐变 radial-gradient : 径向渐变 conic-gradient: 圆锥渐变
repeating-linear-gradient 重复线性渐变 repeating-radial-gradient 重复径向渐变 repeating-conic-gradient 重复锥形渐变
repeating-radial-gradient
可以实现 环形波纹 环形loading 黑胶唱片
conic-gradient
可以实现 饼图 炫酷刻度表 环形进度条 彩色矩形边框 彩色环形 loading
具体可参考 神奇的 conic-gradient 圆锥渐变 认识“新”朋友—conic-gradient
linear-gradient(45deg, red 0%, orange 25%, yellow 50%, green 75%, blue 100%);
渐变角是容器垂直线顺时针旋转的角度
1. 多段百分比值,规则
/* 百分比 */ linear-gradient(red 0%, orange 25%, yellow 50%, green 75%, blue 100%); linear-gradient(red, blue); /*相当于*/ linear-gradient(red 0%, blue 100%); /* 不写百分比则均匀分布 */ linear-gradient(red, orange, yellow, green, blue);百分比简写规则 1. 第一个颜色,0%为起始点,大于0则为终止点 2. 后面颜色,百分比皆为起始点 3. 颜色在起始点为纯色,在起始点和终止点之间为纯色块 4. 百分比后者小于前者,后者使用前者的终止值
linear-gradient(red 50%, orange 40%); /*相当于*/ linear-gradient(red 50%, orange 50%);使用0,可以方便的制作纯色条
background:linear-gradient(
red 0%,
red 14.3%,
orange 0,
orange 50%
yellow 0,
yellow 100%
);
5. 颜色的起始值和终止值有多种写法
下面3种写法等价
/*一个颜色两次两个值*/ linear-gradient(red 0%, orange 10%, orange 30%, yellow 50%, yellow 70%, green 90%, green 100%); /*一个颜色一次两个值*/ linear-gradient(red, orange 10% 30%, yellow 50% 70%, green 90%); /*一个颜色一次两个值*/ linear-gradient(red 0%, orange 10% 30%, yellow 50% 70%, green 90% 100%);2. 条纹(斑马)滚动条 repeating-linear-gradient 可以方便的实现斑马条纹
linear-gradient 不能直接实现斑马条纹,它会将渐变充满整个容器。配合background-size可以实现条纹,但是需要计算,颜色也不能直接顺序写,一种颜色要分多段来写,才能达到整个容器一致的重复渐变。并且更换倾斜角度,background-size的值要重新计算。代价很高,不推荐使用。 2.1 斑马条
width: 200px;
height: 20px;
margin: 50px auto;
background-color: yellowgreen;
background-image: linear-gradient(45deg, rgba(255, 255, 255, .3) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .3) 50%, rgba(255, 255, 255, .3) 75%, transparent 75%, transparent 100%);
background-size: 20px 20px;
2.2 斑马条 带滚动效果
.progress { margin: 300px auto; width: 600px; height: 20px; background-image: repeating-linear-gradient( 45deg, #2ed573 0%, #2ed573 1%, #7bed9f 1%, #7bed9f 2% ); background-position: -2% 0; background-size: 150%; animation: slider 5s linear infinite; } @keyframes slider { 100% { background-position: -100% 0; } }3. 渐变中transparent应用 渐变中,可以使用transparent透明色,可以达到特别的效果。例如,生成不规则图形,生成虚线等 4. 多背景和渐变结合使用 background可以使用多背景,并且前面的背景优先级高,可以覆盖后面的背景,结合background-size和background-position,可以配合生成复杂的图形。background-image支持渐变,渐变本身就可以绘制复杂的图形,加上可以配合图片,背景色等,绘制特定的图形,不是问题。 5. 渐变实现效果记录
5.1 虚线
.dashed { height: 1px; background: linear-gradient(to right, #000000, #000000 5px, transparent 5px, transparent); background-size: 10px 100%; }虚线 带滚动
.g-section { position: relative; padding: 10px; box-sizing: border-box; border: 1px solid transparent; &:focus-within { background: linear-gradient(90deg, #03a9f4 50%, transparent 0) repeat-x, linear-gradient(90deg, #03a9f4 50%, transparent 0) repeat-x, linear-gradient(0deg, #03a9f4 50%, transparent 0) repeat-y, linear-gradient(0deg, #03a9f4 50%, transparent 0) repeat-y; background-size: 8px 1px, 8px 1px, 1px 8px, 1px 8px; background-position: 0 0, 0 100%, 0 0, 100% 0; animation: linearGradientMove .5s infinite linear; } } @keyframes linearGradientMove { 100% { background-position: 6% 0, -6% 100%, 0 -6%, 100% 6%; } }5.2 气泡框的尖头
.tri { width: 6px; height: 6px; background: linear-gradient(to top, #ddd, #ddd) no-repeat, linear-gradient(to right, #ddd, #ddd) no-repeat, linear-gradient(135deg, #fff, #fff 6px, hsla(0,0%,100%,0) 6px) no-repeat; background-size: 6px 1px, 1px 6px, 6px 6px; transform: rotate(-45deg); }5.3 加减号
.btn-plus { background-image: linear-gradient(to top, currentColor, currentColor), linear-gradient(to top, currentColor, currentColor); background-size: 10px 2px, 2px 10px; } .btn-minus { background-image: linear-gradient(to top, currentColor, currentColor); background-size: 10px 2px; }具体可参考 CSS3 linear-gradient线性渐变实现虚线等简单实用图形 5.6 铜钱
width: 100px;
height: 100px;
border-radius: 50%;
background-color: #fff;
background-image: linear-gradient(to right, yellow 25%, transparent 25%, transparent 75%, yellow 75%),
linear-gradient(to top, yellow 25%, transparent 25%, transparent 75%, yellow 75%);
5.7 三角
background-image:linear-gradient(to bottom right,orange 0,orange 49%,transparent 50%,transparent 100%)
5.8 镂空
background-image:radial-gradient(transparent 0,transparent 49%,orange 50%,orange 100%)
5.9. 切角
四个角三角形切角
.bgc{ width:195px; height: 200px; background-color: #425df3; background: linear-gradient(-135deg, transparent 20px, #425df3 0) top right , linear-gradient(-45deg, transparent 20px, #425df3 0) bottom right, linear-gradient(45deg, transparent 20px, #425df3 0) bottom left , linear-gradient(135deg, transparent 20px, #425df3 0) top left; background-size: 50% 50%; background-repeat: no-repeat; }linear-gradient实现切角有缺陷
切角多种实现方法
1. 固定距离使用 clip-path 2. 固定切角使用 conic-gradient(at 100% 0, #B89DFF 250deg, transparent 0) 3. 局部切角使用 linear-gradient 具体可参考 css实现切角 6. 渐变种类 linear-gradient : 线性渐变 radial-gradient : 径向渐变 conic-gradient: 圆锥渐变
repeating-linear-gradient 重复线性渐变 repeating-radial-gradient 重复径向渐变 repeating-conic-gradient 重复锥形渐变
repeating-radial-gradient
可以实现 环形波纹 环形loading 黑胶唱片
conic-gradient
可以实现 饼图 炫酷刻度表 环形进度条 彩色矩形边框 彩色环形 loading
具体可参考 神奇的 conic-gradient 圆锥渐变 认识“新”朋友—conic-gradient