gradient设置上下渐变_图解CSS: CSS渐变

CSS的渐变主要分布在 conic-gradient()和repeating-conic-gradient()两个属性。在CSS中,CSS的渐变相当于图像,我们可以使用线性渐变(linear-gradient()和repeating-linear-gradient())、径向渐变(radial-gradient()和repeating-radial-gradient())和锥形渐变(conic-gradient()和repeat-conic-gradient())。事实上这三种渐变就相当于背景图像,而且渐变通常是一种颜色渐变到另一种颜色,但是CSS允许你控制渐变发生的每一个方面,从方向、形状到颜色,以及它们如何从一个渐变到另一个渐变。在这篇文章中,主要和大家一起探讨有关于CSS渐变相关的话题。

CSS 渐变简介

渐变一般指的是从一种颜色平滑地过渡到另一种颜色,而且用户代理(比如浏览器)将其渲染为图像,这个图像可以是背景图像(background-image)、边框图像(border-image)和遮罩图像(mask-image)等,即CSS中可以接受图像的任何属性。开发者可以使用一些指定的 CSS渐变函数来指定这些图像,这样用户代理就要以在渲染页面时自动生成图像。其主要语法:

= [

| |

| |

|

]

比如我们将渐变运用到background-image属性上:

background-image: linear-gradient(#ff8a00, #e52e71);

background-image: repeating-linear-gradient(to right,#ff8a00 10%,#e52e71 20%);}

background-image: radial-gradient(#ff8a00, #e52e71);

background-image: repeating-radial-gradient(circle, #ff8a00 10%, #e52e71 20%);

background-image: conic-gradient(#ff8a00, #e52e71);

background-image: repeating-conic-gradient(#ff8a00 10%, #e52e71 20%);

效果如下:

渐变中的色标

不管使用哪一个渐变函数绘制的渐变图像都由一组指定的颜色构成,并且每个颜色都有对应的位置,在渐变中将其称为,它主要由两部分组成,颜色和渐变线。即渐变函数中指定的 每一个点的颜色。我们通常把这个颜色和相应的位置称为渐变中的色标:

6e2fe4470e588021352a49f94ec921ad.png

颜色停止()和过渡提示是在一个颜色停止列表()中指定的,这个颜色停止列表是一个包含两个或更多颜色停止和可选过渡提示的列表:

= , [ ? , ]#

= && ?

=

比如下面这个示例:

background-image: linear-gradient(to right, rgb(56, 0, 253) 0%, rgb(255, 0, 146) 20%, rgb(255, 111, 177) 40%, rgb(255, 71, 64) 80%, rgb(30,90,88) 100%);

c89e3e10210b049bcb88a4fbb4a1b21c.png

在这个示例中,渐变的梯度线(也称为“渐变线”)是矩形的左侧边缘至右侧边缘,在这个渐变梯度线上有一个五个颜色组成的颜色停止列表,每个颜色的停止位置分别是0%、20%、40%、80%和100%。颜色的停止位置可以是百分比也可以其他的长度值(),比如px。如果颜色停止位置是百分比,它的计算是根据起始点和结束点之间梯度线的长度来确定,起始点为0%,结束点是100%。梯度线长度从元素的起始点沿终点方向沿梯度线测量。

CSS中的百分比计算是个复杂的体系,假设我们把上面的线性渐变运用于一个宽度为835px的容器中,它的渐变梯度线长度是835px,那么上对应的百分比转换成px的话是用颜色停止位置的百分比值乘以元素的宽度(width):

91a66f6255f0177fa262abdba2346ba4.png

注意,上面这个示例算是一个特殊的示例,渐变的角度是0(即to right或to left),但渐变的梯度线长度和渐变角度是有关的,比如,我们把to right换成45deg:

background-image: linear-gradient(45deg, rgb(56, 0, 253) 0%, rgb(255, 0, 146) 20%, rgb(255, 111, 177) 40%, rgb(255, 71, 64) 80%, rgb(30,90,88) 100%);

梯度线长度就变了:

f9b4bc498e0733804391166cd569a9e9.png

这个时候渐变梯度线长度的计算就复杂了。具体如何计算,我们后面会花一定的篇幅来专门介绍。

在渐变中,颜色停止和过渡提示的位置通常位于元素盒子的起始点和结束点之间,但这不是必需的。比如,我们在线上渐变使用多个渐变颜色,但并没有显式指定颜色停止的位置:

background-image: linear-gradient(to right, rgb(56, 0, 253) , rgb(255, 0, 146) , rgb(255, 111, 177) , rgb(255, 71, 64), rgb(30,90,88) );

这个时候会自动被分配一个位置。颜色停止列表中的第一个或最后一个颜色停止分别被指定为渐变梯度线的0%位置(渐变梯度线起始位置)和渐变梯度线的100%位置(渐变梯度线终点位置)。就该示例来说,由五个颜色组成的颜色停止列表,构建四个颜色区间,那么每个区间将会平均分配渐变梯度线的长度,也就是说示例中的第二个颜色的停止位置位于渐变梯度线的25%位置,第三个颜色的停止位置位于渐变梯度线的50%位置,第四个颜色的停止位置位于渐变梯度线的75%位置:

0c75f8458f2a267acf49a0a74a313832.png

你可能已经发现了,在上面这个示例中,并没有显式的给每个停止颜色指定停止位置,但用户代理在渲染该图像时对每个停止颜色做了一个修正处理。这个过程是一个自动过程,并且这个过程也称为颜色停止修正。用户代理在解析每个色块(停止颜色)的使用位置时,会按下面的步骤来处理:

① 如果第一个停止颜色没有显式设置停止位置,将其停止位置设置为0%;如果最后一个停止颜色没有显式设置停止位置,将其停止位置设置为100%

② 如果一个停止颜色或过渡提示的位置小于停止颜色列表中它前面的任何停止颜色或过渡提示的指定位置,则将其停止位置设置为等于它前面的任何停止颜色或过渡提示的指定位置的最大位置

③ 如果任何停止颜色没有停止位置,那么它们的停止位置会均分有停止位置的前后停止颜色之间的间隔

应用这些规则,所有停止颜色和过渡提示都将有明确的停止位置和停止颜色,并按升序排列。下面这几对渐变,每一对中的后者是前者的手工“修正”版本,通过应用上述规则获得。对于每一对,两个渐变渲染的结果都是相同的。每个箭头中的数字指定在转换中调用了哪些修正步骤。

background-image: linear-gradient(to right, rgb(56, 0, 253) , rgb(255, 0, 146) 20%, rgb(255, 71, 64));

// = ① >>

background-image: linear-gradient(to right, rgb(56, 0, 253) 0% , rgb(255, 0, 146) 20%, rgb(255, 71, 64) 100%);

根据“规则①”对第一个停止颜色和最后一个停止颜色做修正,第一个停止颜色的停止位置位于渐变线的0%,最后一个停止颜色的停止位置位于渐变线的100%:

3384cad9c4a765399f025fe38932d527.png

background-image: linear-gradient(to right, rgb(56, 0, 253) 40% , rgb(255, 0, 146), rgb(255, 71, 64), rgb(188,188,90));

// = ①, ③>>

background-image: linear-gradient(to right, rgb(56, 0, 253) 40% , rgb(255, 0, 146) 60%, rgb(255, 71, 64) 80%, rgb(188,188,90) 100%);

根据“规则①”将最后一个停止颜色(rgb(188, 188, 90))的停止位置修正为渐变线的100%位置,然后根据“规则③”对第二个停止颜色(rgb(255, 0, 146))和第三个停止颜色(rgb(255, 71, 64))的停止位置进行修正。因为这两个停止颜色都没有显式设置停止位置,因此它会均分第一个停止颜色和最后一个停止颜色之间的间距(即渐变线的100% - 40% = 60%),根据计算可以得到第二个停止颜色的停止位置位于渐变线的60%,第三个停止颜色的停止位置位于渐变线的80%:

f2911b5355a9d796f10399ea5aebe8d8.png

background-image: linear-gradient(to right, rgb(56, 0, 253) -10% , rgb(255, 0, 146), rgb(255, 71, 64));

// = ①, ③ >>

background-image: linear-gradient(to right, rgb(56, 0, 253) -10% , rgb(255, 0, 146) 45%, rgb(255, 71, 64) 100%);

这个示例也是根据“规则①, ③”来进行修正的,最后一个停止颜色的停止位置会位于渐变线的100%,第二个停止颜色(rgb(255, 0, 146))没有显式设置停止位置,将会均分第一个和最后一个停止颜色位于渐变线上的间距(即100% - (-10%) ÷ 2 = 55%),也就是容器宽度的45%:

1427e411188458486bc23f3dc2bfe255.png

background-image: linear-gradient(to right, rgb(56, 0, 253) -50px , rgb(255, 0, 146), rgb(255, 71, 64));

// = ①, ③ >>

background-image: linear-gradient(to right, rgb(56, 0, 253) -50px , rgb(255, 0, 146) calc(50% - 25px), rgb(255, 71, 64) 100%);

这个示例和上面的示例是相似的,不同之处停止颜色的停止位置有两种不同的单位(px和%),但修正规则是相同的,第二个停止颜色rgb(255, 0, 146)没有显式设置停止位置,它会是均分与其相邻两停止颜色位置之间的间距(即100% - (-50px) ÷ 2),最终的值是100% - (-50px) ÷ 2 - 50px = 50% - 25px,在CSS中不同单位之间的混合计算需要使用calc()函数来表达,即calc(50% - 25px):

61889680b44728b17787351415b76d5a.png

注意:如果在渐变中停止颜色的停止位置使用混合单位值(比如px,em,vw或 %)时要多加小心,因为这可能会导正停止颜色在之前的停止颜色之前无意地移动。比如background-image: linear-gradient(yellow 100px, blue 50%),当容器高度不小于200px时不会触发任何颜色停止位置的修正,然而,当容器高度是150px时,那么blue的停止位置就相当于75px,位于yellow之前,根据前面“规则②”,blue停止颜色的停止位置会得到修正,会修正为和yellow相同的停止位置,即100px。

background-image: linear-gradient(to right, rgb(56, 0, 253) 20%, rgb(255, 0, 146) 0%, rgb(255, 71, 64) 40%);

// = ② >>

background-image: linear-gradient(to right, rgb(56, 0, 253) 20%, rgb(255, 0, 146) 20%, rgb(255, 71, 64) 40%);

在这个示例中,虽然三个停止颜色都显式指定了停止位置,但第二个停止颜色的停止位置设置了0%,它比前面的停止颜色的停止位置要小,这个时候会根据“规则②”进行调整,会将其停止位置设置为前面最大的位置,即20%:

b2156f4995d125cee602899542e903d9.png

再来看一个示例:

background-image: linear-gradient(to right, rgb(56, 0, 253), rgb(255, 0, 146) -20%, rgb(32,123,225) 50%,rgb(255, 111, 177) 120%, rgb(55, 71, 164));

// = ①, ② >>

background-image: linear-gradient(to right, rgb(56, 0, 253) 0%, rgb(255, 0, 146) 0%, rgb(32,123,225) 50%,rgb(255, 111, 177) 120%, rgb(55, 71, 164) 120%);

2e598da5713155856a483bb847ab6842.png

上面我们都是以线性渐变为例向大家阐述了渐变中色标相关的细节,但在径向渐变和锥形渐变中色标的计算有所差异,我们先来看径向渐变为例:

background-image: radial-gradient(50% 100%, #FFFFFF 0%, #972929 34%, #3571DF 67%, #C014CF 100%);

径向渐变和线性渐变的梯度线(渐变线)略有不同,径向渐变的渐变线长度是以其半径,那么对应的百分比也是相对于其半径为基础计算:

7e9a39c34161eb2e062cddd9d44befb4.png

如果径向渐变是一个椭圆形渐变:

background-image: radial-gradient(50% 100%, #FFFFFF 50%, #972929 67%, #3571DF 83%, #C014CF 100%);

其停止颜色的百分比也是相对于其半径做计算:

b45a3a5eb47a7661d22f3c67efae5f46.png

在锥形渐变中,颜色停止就更独特一点,其渐变线是其周长,如果停止颜色的位置是百分比,那么它是相对于360deg来计算的:

background-image: conic-gradient(at 50% 50%, #FFFFFF 0%, #972929 25%, #3571DF 50%, #B60A46 75%, #3DD69F 100%);

第一个停止颜色(#ffffff)位置对应的是0deg,第二个停止颜色(#972929)位置对应的是90deg、第三个颜色(#3571df)对应的是180deg,第四个颜色(#b60a46)对应的是270deg,第四个颜色(#3dd69f)对应的是360deg:

94204d7f9d49a0cb95a95685137ebfd7.png

不管是哪种类型的CSS渐变,每个停止颜色都有相应的停止位置,即使未显式设置。当然每种渐变的停止颜色的停止位置计算方式都有所差异。

线性渐变

在Web设计中最为常见的渐变类型是 linear-gradient(),它也常称为“线性渐变”,因为该类型的渐变颜色是从左到右、从上到下、或者在一个方向上行何角度上的渐变。

线性渐变的语法规则如下:

linear-gradient() = linear-gradient([ | to ]? ,)

= [left | right] || [top | bottom]

linear-gradient()函数的第一个参数或 to 是用来指定渐变线方向,并决定停止颜色在渐变线上的停止位置。如果省略该参数,那么它的值是to bottom,即从顶部到底部。该参数接受两种方式指定的值:

:通过角度来指定渐变线的方向,它的单位可以是deg、turn、grads和rad;而且值可以是正负值,其中正值代表顺时针旋转,负值代表逆时针旋转

使用关键字:这里关键字指的是,可以是to top、to right、to bottom、to left、to top right、to bottom right、to bottom left和to top left等。如果参数是to top、to right、to bottom或to left,则渐变线的角度分别是0deg、90deg、180deg或270deg。如果参数指定了方向是某个方框的角度(比如to top left),则渐变线必须具有一定的角度,使其与指定的角相交于同一象限,并且垂直于渐变框的两个相邻角相交的直线。

我们来看一些简单的示例,以双色线性渐变在不同角度和关键词下的效果:

/* CSS */

:root {

--color-start: #09f;

--color-stop: #e52e71;

--linear-direction: to top;

}

div {

width: 100%;

height: 30vh;

border-radius: 5px;

position: relative;

background-image: linear-gradient(

var(--linear-direction),

var(--color-start),

var(--color-stop)

);

}

效果如下:

在渐变中,我们不局限于只有两种颜色!事实上,我们可以有任意多的逗号分隔的渐变色(即),比如下面这个示例,就用了四个渐变颜色:

body {

background-image: linear-gradient(to right, red, #f06d06, rgb(255, 255, 0), green);

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/560579.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2021泗阳致远中学高考成绩查询,2021高考成绩什么时候发布?可通过哪些途径查询?...

3、安徽省高考成绩预计将于6月23日公布各批次录取分数线和高考成绩,考生可通过安徽省教育招生考试院自行查分;4、湖南高考成绩将于6月25日左右公布,本科不再分一二三批,考生可通过湖南教育政务网、湖南省普通高校招生考试考生综合…

mysql数据库的字符集_mysql数据库中字符集乱码问题原因及解决

前言有的时候我们在查看数据库数据时,会看到乱码。实际上,无论何种数据库只要出现乱码问题,这大多是由于数据库字符集设定的问题。下面我们就介绍一下,数据库的字符集的设定及乱码问题的解决。mysql数据库的字符集直白的说&#x…

1主5从mysql数据库_MySQL主从复制虽好,能完美解决数据库单点问题吗?

一、单个数据库服务器的缺点数据库服务器存在单点问题;数据库服务器资源无法满足增长的读写请求;高峰时数据库连接数经常超过上限。二、如何解决单点问题增加额外的数据库服务器,组建数据库集群;同一集群中的数据库服务器需要具有…

惠普z6计算机进不去桌面,HP Z6 桌面工作站 | HP® HK 惠普香港

Intel、Thunderbolt 及 Xeon 均為 Intel Corporation 於美國及/或其他國家或地區的商標。Microsoft 及 Windows 為 Microsoft Corporation 於美國及/或其他國家或地區的註冊商標或商標。NVIDIA 是 NVIDIA Corporation 在美國及其他國家或地區的商標及/或註冊商標。USB Type-C™…

mysql定义条件和处理_mysql sql存储过程条件定义与处理

一、条件定义DECLARE condition_name CONDITION FOR condition_valecondition_value:sqlstate[value] sqldata_value |mysql教程_error_code二、条件处理DECLARE htype HANDLER FOR cond_value[...] sp_statementhandtype_value:sqlstate [value] saltate_value|contentname|sq…

长沙医学院学位计算机考试内容,湖南长沙医学院2017年9月计算机等级考试报名时间...

长沙医学院2017年下半年第49次全国计算机等级考试(以下简称NCRE)将于2017年9月23至25日举行。为做好本次考试报名及相关考务工作,现将有关事项通知如下:一、报名时间:2016年6月7日—2016年6月18日,逾期不接受任何理由的补报名。二…

mysql dnslog_dnslog小技巧

一、dnslog利用场景主要针对无回显的情况。Sql-BlindRCESSRFRFI(Remote File Inclusion)二、原理将dnslog平台中的特有字段payload带入目标发起dns请求,通过dns解析将请求后的关键信息组合成新的三级域名带出,在ns服务器的dns日志中显示出来。三、案例展…

2019哈佛计算机专业录取,2019哈佛大学早申请录取数据公布 录取率再降1个点仅为13.4%...

出结果了,出结果了,作为美国在全球范围内最负盛名的哈佛大学,与近日公布2019美国本科申请提前录取的相关数据。今年哈佛大学本科学院向6,968位在2023届提前录取轮次申请人中的935位发出了录取通知,申请录取率约为13.4%&#xff0c…

mysql中pi是什么意思_MySQL 基础知识与常用命令

MySQLMySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。MySQL在过去由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,因此被广泛地应用在Inte…

科幻计算机类小说,短篇科幻小说推荐 | 黄金时代的五部科幻杰作

编注:本文是少数派读书月「我读过的好书」征文活动的入围文章。本文仅代表作者本人观点,少数派对标题和排版略作调整。想了解如何参与本次读书征文,赢取各种丰厚奖品,你可以 点此查看 活动规则和奖品清单。文章包含五个故事的情节…

计算机中丢失msc,mscvr120.dll32位/64位版_修复计算机中丢失msvcr120.dll

mscvr120.dll32位/64位版_修复计算机中丢失msvcr120.dllmscvr120.dll是系统的非常重要的一个文件,相信很多的人都是遇到文件丢失的情况,这个时候就需要你在下载一个dll文件使用了!现在就为大家提供最新的dll文件下载,需要的可以看…

mysql解压缩版配置_MySQL 5.6 for Windows 解压缩版配置安装

1、MySQL安装文件分为两种,一种是msi格式的,一种是zip格式的。如果是msi格式的可以直接点击安装,按照它给出的安装提示进行安装(相信大家的英文可以看懂英文提示),一般MySQL将会安装在C:\Program Files\MySQL\MySQL Server 5.6 该…

计算机二级考试开考多久能出来,【计算机二级】明天就要开考了,你们准备好了吗?...

原标题:【计算机二级】明天就要开考了,你们准备好了吗?计算机二级考试马上要来了现在距离考试只有不到几个小时的时间了不知道各位同学准备的怎么样了呢?人有多大胆,复习拖多晚但这可不是什么好习惯奔赴“战场”之前先…

办公室中有一台计算机连接打印机,办公室就一个打印机,怎么让多个电脑一起用...

中小型企业的办公室一般只配一台打印机,每次打印东西都要把文件拷在U盘再转到连接打印机的那台电脑,很麻烦。那么怎么才能实现打印机多台电脑共享呢?以下把连接打印机的电脑成为“主电脑”,把需要的共享的电脑叫“客电脑”。1.设置…

php修改mysql数据找不到_php 如何修改mysql数据

PHP MYSQL 修改删除数据创建userinfo_update.php,用于查询用户信息,先显示信息,在修改:先通过GET获取用户编号查询用户信息:$sql "select * from user_info where user_id".$_GET[userId]."";$re…

人工智能训练机器人的服务器,人工智能系统教会机器人如何在荒野中行走

对救援人员和户外运动爱好者来说,穿越荒野小径是一项有用的技能,但对机器人来说却很难。这并不是说这些机械动物没有能力在爬上山坡的同时避开倒下的树枝——最先进的机器学习算法可以做到这一点。问题在于它们缺乏通用性:人工智能驱动的机器…

世界手机号码格式_脑炎康复之旅——世界脑炎日病友征文

○○脑炎康复之旅世界脑炎日病友征文2月22日是世界脑炎日(World Encephalitis Day)。2014年发起的世界脑炎日旨在致敬和鼓励全世界经历过脑炎的患者和脑炎医疗工作者。几年来,全球已有1.87亿人次参与世界脑炎日活动。2021年的世界脑炎日即将到来,今年世界…

树莓派和微信和服务器,用树莓派搭建微信公共平台

1、首先你需要一个公网ip, 需要做好映射, 把80端口映射到你的树莓派ip。2、打开你的树莓派终端, 创建文件夹“templates ” 和文件“weixind.py”。3、文件“weixind.py”中写入以下代码。安装“sudo apt-get install python-lxml”。5、申请…

mysql数据异常增长_mysql表到一定数据量后会异常的增长

如题InnoDB的table,里面的字段非常简单,如图中的类型才100多W的数据量,数据是慢慢积累起来的,到了最近发现涨到12G后,会每天成倍的增长,最高到达过50G,而数据量还是那些,longtext的字…

舰r4月28服务器维护,崩坏3 11月28日版本更新维护通知

亲爱的舰长:为了给舰长更好的游戏体验,休伯利安号将在11月28日进行版本更新维护,维护完成后战舰将更新为3.6版本——「绯夜霞隐」。维护时间安卓国服、iOS服和各渠道服:11月28日07:00~12:00全平台服(桌面服):11月28日0…