渐变是真的好玩,真是一个有趣的特性

简介: css 渐变是一种特殊的 image 格式,使用 gradient 表示, gradient 属于 image 的子集,用于表示渐变的 image , gradient 的语法如下

css渐变是一种特殊的image格式,使用gradient表示,gradient属于image的子集,用于表示渐变的imagegradient的语法如下:

1. gradient 语法

div {
   
    background-image: linear-gradient(gradient_direction, color_stop1, color_stop2, ...);
}

其中,gradient_direction表示渐变的方向,color_stop表示渐变的颜色,可以有多个,表示渐变的颜色。

2. gradient_direction

gradient_direction表示渐变的方向,可以是角度,也可以是方向,如下:

div {
   
    background-image: linear-gradient(90deg, red, blue);
    background-image: linear-gradient(to right, red, blue);
}

默认gradient_direction是可以省略的,省略后,渐变的方向是从上到下。

角度使用更加灵活,但是方向更加直观;

角度的取值范围是0deg360deg

方向的取值范围是to topto rightto bottomto leftto top rightto top leftto bottom rightto bottom left

3. color_stop

color_stop表示渐变的颜色,可以是颜色值,也可以是颜色值加上百分比,如下:

div {
   
    background-image: linear-gradient(red, blue);
    background-image: linear-gradient(red 10%, blue 20%);
}

这里的数值表示渐变色的位置,数值的取值范围是0%100%,这里的10%表示渐变色从左边的10%的位置开始,20%表示渐变色从左边的20%的位置结束。

当然这里的数值也可以超过100%,然后可以使用position属性来控制渐变色的位置,这个后面可以使用实际的例子来说明。

除了可以使用%表示渐变色的位置,还可以使用px表示渐变色的位置,同时这里的颜色可以有无数个,如下:

div {
   
    background-image: linear-gradient(red 10px, blue 20px, green 30px, yellow 40px);
}

这里如果不指定位置,那么就是平均分配,如果起始位置大于或者等于结束位置,那么就不会显示渐变色。

div {
   
    background-image: linear-gradient(red 50%, blue 50%);
}

这样就不会显示渐变色,而是上下平分两个颜色,即上面是红色,下面是蓝色。

4. 使用场景

渐变色可以理解为一个图片,所以在css任何可以使用image的地方都可以使用渐变色,如下:

li {
   
    background-image: linear-gradient(red, blue);
    border: 30px solid;
    border-image: linear-gradient(green, yellow) 1;
    list-style-image: linear-gradient(orange, purple);
}

这里的border-image表示边框的图片,list-style-image表示列表的图片。

5. 例子

5.1 创建一个三角形

div {
   
    width: 100px;
    height: 100px;
    background-image: linear-gradient(45deg, red 50%, transparent 50%);
}

这里的45deg表示渐变的方向是从左上角到右下角,red 50%表示渐变色从左上角的50%的位置开始,transparent 50%表示渐变色从左上角的50%的位置结束,这样就可以创建一个三角形。

以前我们可以使用border来创建一个三角形,但是这样的话,三角形的颜色是固定的,不仅代码多,大小不好控制,而且还不能设置渐变色,现在我们可以使用background-image来创建一个三角形,同时可以设置渐变色。

5.2 色相环

div {
   
    width: 100px;
    height: 100px;
    background: conic-gradient(
            from 90deg,
            hsl(0deg, 100%, 50%),
            hsl(60deg, 100%, 50%),
            hsl(120deg, 100%, 50%),
            hsl(180deg, 100%, 50%),
            hsl(240deg, 100%, 50%),
            hsl(300deg, 100%, 50%),
            hsl(360deg, 100%, 50%)
    );
    border-radius: 50%;}

这里使用了conic-gradient来创建一个色相环,hs1表示色相,s表示饱和度,l表示亮度,from 90deg表示从90度开始,这样就可以创建一个色相环。

5.3 做一个渐变的边框

div {
   
    width: 100px;
    height: 100px;
    background: repeating-linear-gradient(-45deg, red, red 5px, blue 5px, blue 10px);
    background-size: 200% 200%;
    background-position: 10px 10px;
    border-radius: 10px;
    -webkit-mask:
            linear-gradient(black 10px, transparent 10px),
            linear-gradient(90deg, black 10px, transparent 10px),
            linear-gradient(360deg, black 10px, transparent 10px),
            linear-gradient(270deg, black 10px, transparent 10px);
    transition: all .3s;
}

div:hover {
   
    background-position: 20px 20px;
}

这里没有使用border-image,而是使用了background来创建一个渐变的边框,因为border-image不支持圆角,同时使用了-webkit-mask来创建一个遮罩,这样就可以创建一个渐变的边框。

同时还加上了一个hover的动画,让这个边框动起来,更有乐趣。

代码片段

6. 参考

CSS3渐变

目录
相关文章
|
2月前
|
敏捷开发 前端开发 数据可视化
如何用低代码的思路设计文字描边渐变组件
如何用低代码的思路设计文字描边渐变组件
43 1
|
7月前
|
机器学习/深度学习 算法 图形学
Unity小游戏——无限滚动的背景的改良
Unity小游戏——无限滚动的背景的改良
|
7月前
|
算法 图形学
Unity小游戏——武士击杀小怪兽(无限滚动的背景)
Unity小游戏——武士击杀小怪兽(无限滚动的背景)
|
2月前
|
前端开发
【零基础入门前端系列】—旋转、缩放、倾斜、过渡(二十三)
【零基础入门前端系列】—旋转、缩放、倾斜、过渡(二十三)
|
2月前
|
前端开发
【零基础入门前端系列】—浏览器内核、背景渐变、转换(二十二)
【零基础入门前端系列】—浏览器内核、背景渐变、转换(二十二)
|
前端开发
妙用滤镜构建高级感拉满的磨砂玻璃渐变背景
妙用滤镜构建高级感拉满的磨砂玻璃渐变背景
197 0
妙用滤镜构建高级感拉满的磨砂玻璃渐变背景
|
Python
Python实现超级玛丽游戏系列教程04背景滚动及摄像机(Camera)原理
Python实现超级玛丽游戏系列教程04背景滚动及摄像机(Camera)原理
92 0
|
前端开发
前端知识案例学习8-设置渐变背景
前端知识案例学习8-设置渐变背景
61 0
前端知识案例学习8-设置渐变背景
|
前端开发 iOS开发
巧用渐变实现高级感拉满的背景光动画
巧用渐变实现高级感拉满的背景光动画
193 0
巧用渐变实现高级感拉满的背景光动画
|
前端开发 JavaScript 开发者
让交互更加生动!有意思的鼠标跟随 3D 旋转动效
让交互更加生动!有意思的鼠标跟随 3D 旋转动效
341 0
让交互更加生动!有意思的鼠标跟随 3D 旋转动效