深入了解CSS属性*-gradient的使用技巧

本篇文章带大家了解一下css属性*-gradient的使用技巧。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

深入了解CSS属性*-gradient的使用技巧

【推荐教程:CSS视频教程 】

先介绍一下一个有趣的属性 —— conic-gradient

圆锥渐变

对其感兴趣是因为我发现它竟然可以用来做圆饼图
比如这样的:
锥形渐变-没有百分比
这样的:
圆饼图-有百分比
其原理也很简单:就是以起始点为中心,然后以顺时针方向绕中心实现渐变效果。其必须接收多种颜色值参数,每个颜色值后可以跟两个百分比,为当前颜色值的起始点和终止点(中间用空格隔开):

立即学习“前端免费学习笔记(深入)”;

background: conic-gradient(pink 0 30%, yellow 0 70%, lime 0 100%);

还可以分开来写:

background: conic-gradient(pink 0, pink 30%, yellow 30%, yellow 70%, lime 70%, lime 100%);

(第二种方式兼容性比第一种好一点)

慢着!上面第二张图片不就是我们想要的吗?
根据图片,我们不难得出下面的代码:

{    width: 200px;    height: 200px;    background: conic-gradient(deeppink 0, deeppink 30%, yellowgreen 30%, yellowgreen 70%, teal 70%, teal 100%);    border-radius: 50%;}

But,这里面完全是“静态”的。

我们大概大部分人都用过echarts绘制图形:根据后端传来的数据渲染到echarts的Map对象的指定参数(数组)中就能得到一个符合要求的不同颜色显示的圆饼图了。这用CSS怎么做呢?

我们当然要借助JS的帮助 —— 因为CSS3推出了 自定义变量 ,它可以很好的让css属性与JavaScript变量相结合:
经过探索,目前比较好的实践应该就是给gradient的颜色开始与结束位置设置为自定义变量,然后当JavaScript拿到数据后通过改变其值从而改变圆饼图中的颜色分布!

放一个以前写过的演示demo:

:root{--zero:0;--one:50%;}.circle{width: 300px;height: 300px;border-radius: 50%;/* background: conic-gradient(red, yellow, lime, aqua, blue, fuchsia, red); */background: conic-gradient(red var(--zero) var(--one),yellow var(--one) 100%);}
but.onclick=function(){document.documentElement.style.setProperty('--zero', '10%');document.documentElement.style.setProperty('--one', '70%');}

如果要动态增加颜色值(比如新增调查对象),可以动态修改style中的属性:

xxx.style.xxx="xxx";   //改变

这要比用“::after伪元素”实现起来方便多了!

伪元素的方式可能很多人也玩过:利用transform的rotate属性将一个content盒子旋转并显示部分以达到目的。

还有很多“骚操作”网上应该一搜一堆,这里就不再赘述了(:相比于前两年浏览器对此属性的“漠不关心”到现在的部分支持,也是很大进步了,让我们继续期待吧)

关于 linear-gradient

这个属性除了在一些网站上用作某个元素的背景以外,似乎并没有什么值得关注的地方:
比如 条纹背景
“如果多个色标具有相同的位置,它们会产生一个无限小的过渡区域,
过渡的起止色分别是第一个和最后一个指定值。从效果上看,颜色会在那
个位置突然变化,而不是一个平滑的渐变过程。”
因为渐变是一种由代码生成的图像,我们能像对待其他任何背景图像那样对待它,而且还可以通过 background-size 来调整其尺寸;并且由于背景在默认情况下是重复平铺的,整个容器其实已经被填满了水平条纹:

background: linear-gradient(#fb3 50%, #58a 50%);background-size: 100% 30px;

linear1
垂直条纹
垂直条纹的代码跟水平条纹几乎是一样的,差别主要在于:我们需要在
开头加上一个额外的参数来指定渐变的方向。在水平条纹的代码中,我们其
实也可以加上这个参数,只不过它的默认值 to bottom 本来就跟我们的意
图一致,于是就省略了。最后,我们还需要把 background-size 的值颠倒
一下:

background: linear-gradient(to right, #fb3 50%, #58a 0);background-size: 30px 100%;

需要注意的是:linear-gradient如果加了第一个参数,则其默认方向就会变为“从下向上”的,为此,笔者还向菜鸟教程投过邮件建议他们在文档中修改措辞。

linear2

倾斜条纹
“传统的”仅仅改变linear-gradient第一个参数——角度值的方式或者通过background-size增加“精确度”的方式都不能有效的达到真正意义上完美的倾斜背景:它们总是会在大小改变或者换一个倾斜度时把整个图案搞乱!
幸运的是,我们还有更好的方法来创建斜向条纹:一个鲜为人知的真相是 linear-gradient() 和 radial-gradient() 还各有一个循环式的加强版:repeating-linear-gradient() 和 repeating-radial-gradient()。
它们的工作方式跟前两者类似,只有一点不同:色标是无限循环重复的,直
到填满整个背景!

background: repeating-linear-gradient(45deg, #fb3, #58a 30px);

linear3
哦,对了,同上面一样,所有的“-gradient”属性在没有限制起始位置和终止位置时都会有“渐变光晕”,如果我们改为下面这样:

background: repeating-linear-gradient(60deg, #fb3 0 15px, #58a 0 30px);

linear4

看到这张图你有没有想到一个著名的案例——三角形?

background: #eee;background-image: linear-gradient(45deg, transparent 75%, #bbb 0);

而我们以前用CSS一般是像这样写的:

width: 0;height: 0;border: 50px solid transparent;border-top-color: black ;

其实,linear-gradient用处还远远不止这些…

2020-10-17更新

radial-gradient及整体应用

我们大概都知道:滚动条是一种常见的界面控件,用来提示一个元素除了可以看到的内容之外,还包含了更多内容。但是,它往往太过笨重,在视觉上喧宾夺主,因此现代操作系统已经开始简化它的外观,当用户不与可滚动的元素交互时,滚动条就会被完全隐藏。
目前已知的“去除滚动条”的方法中,最常用的有:::-webkit-scrollbar{display:none;} ,但是很显然,IE上无法使用 —— 它只允许改变滚动块的颜色。

在CSS3的时代,我们可以在想要加滚动条的地方外包裹一层p,为其设置overflow:hidden,内部用calc()函数动态计算width使其溢出!这可以有效解决IE下兼容性问题。

我们现在已经很少通过滚动条来滚动页面了(更多的是使用触摸手势),但滚动条对于元素内容可滚动的提示作用仍然是十分有用的,哪怕对于那些没有发生交互的元素也是如此;而且这种提示方式十分巧妙。
据说曾经 Google 推出了一款 RSS 阅读器(已经没了),它的用户体验设计师找到了一种非常优雅的方式来作出类似的提示:当侧边栏的容器还有更多内容时,一层淡淡的阴影会出现在容器的顶部和底部。就像这样:
shadow

让我们首先从一段简单的结构代码开始,一个带有示意性内容的普通无序列表:

  • Ada Catlace
  • Alan Purring
  • Schrödingcat
  • Tim Purrners-Lee
  • WebKitty
  • Json
  • Void
  • Neko
  • NaN
  • Cat5
  • Vector
  • Ada Catlace
  • Alan Purring
  • Schrödingcat
  • Tim Purrners-Lee
  • WebKitty
  • Json
  • Void
  • Neko
  • NaN
  • Cat5
  • Vector
  • Ada Catlace
  • Alan Purring
  • Schrödingcat
  • Tim Purrners-Lee
  • WebKitty
  • Json
  • Void
  • Neko
  • NaN
  • Cat5
  • Vector
  • Ada Catlace
  • Alan Purring
  • Schrödingcat
  • Tim Purrners-Lee
  • WebKitty
  • Json
  • Void
  • Neko
  • NaN
  • Cat5
  • Vector

我们可以给

    元素设置一些基本的样式,让它的高度略短于内容,从而让其内容可以滚动:

    overflow: auto;width: 10em;height: 8em;padding: .3em .5em;border: 1px solid silver;

    接下来,有趣的事情即将发生。我们用一个径向渐变在顶部添加一条阴影:

    background: radial-gradient(at top, rgba(0,0,0,.2),transparent 70%) no-repeat;background-size: 100% 15px;

    现在,当我们滚动列表时,这条阴影会一直停留在相同的位置。这正是背景图像的默认行为:它的位置是相对于元素固定的!不论元素的内容是否发生了滚动。这一点也适用于 background-attachment: fixed 的背景图像。它们唯一的区别是,当页面滚动时,后者是相对于视口固定的。有没有办法让背景图像跟着元素的内容一起滚动呢?

    现在常见的值只有inheritscrollfixed,但是从W3C文档中可以看到:后来为background-attachment 属性增加了一个新的关键字,叫作 local
    如果将此属性应用到这条阴影上,它会带给我们正好相反的效果:当我们滚动到最顶端时,能看到一条阴影;但当我们向下滚动时,这条阴影就消失了。

    但这不重要,我们的思路对了!

    我想到了一个很常用的hack:我们需要两层背景:一层用来生成那条阴影,另一层基本上就是一个用来遮挡阴影的白色矩形,其作用类似于遮罩层。生成阴影的那层背景将具有默认的 background-attachment 值(scroll),因为我们希望它总是保持在原位。我们把遮罩背景的 background-attachment 属性设置为 local,这样它就会在我们滚动到最顶部时盖住阴影,在向下滚动时跟着滚动,从而露出阴影。

    background: linear-gradient(white 30%, transparent), radial-gradient(at 50% 0, rgba(0,0,0,.2),transparent 70%);background-repeat: no-repeat;background-size: 100% 50px, 100% 15px;background-attachment: local, scroll;

    没错,这就是linear-gradient的另一个应用 —— 渐变遮罩层!

    但是现在我们会发现:现在只有上边有,下边怎么搞?
    这就需要用到css中的“简写”以及对*-gradient的理解了:如果不加第一个参数(不指明方向),则默认是从上到下渐变的,但是如果加了第一个参数但是没有指明to bottom100%,那么它默认是从下向上渐变的!

    background: linear-gradient(white 30%, transparent) top / 100% 50px,radial-gradient(at 50% 0, rgba(0,0,0,.2),transparent 72%) top / 100% 15px,linear-gradient(to top, white 15px, hsla(0,0%,100%,0)) bottom / 100% 50px, radial-gradient(at bottom, rgba(0,0,0,.2), transparent 72%) bottom / 100% 15px;background-repeat: no-repeat;background-attachment: local, scroll,local, scroll;

    更多编程相关知识,请访问:编程视频!!

    以上就是深入了解CSS属性*-gradient的使用技巧的详细内容,更多请关注创想鸟其它相关文章!

    版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
    如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
    发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1617980.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2025年12月24日 06:05:09
    下一篇 2025年12月24日 06:05:20

    相关推荐

    • css怎么设置文字1行

      css设置文字1行的方法:1、给文字元素设置“display: inline-block;”样式,让其转为行内块元素;2、给文字元素“white-space: nowrap;”样式实现文字强制不换行;3、给文字元素设置“overflow: hidden;text-overflow:ellipsis;…

      2025年12月24日
      000
    • css阴影的设置与取消

      以前一直在使用mui布局样式,但是这样会产生一个问题,阴影。 那么我们该如何取消阴影呢? 设置阴影 立即学习“前端免费学习笔记(深入)”; /* 长 宽 模糊度 颜色*/box-shadow: 0 1px 6px #ccc; 取消的话直接设置为0就行了,不建议直接去mui.css里面删掉,如果改掉m…

      2025年12月24日
      000
    • 用css实现图片右边有字

      用css实现图片右边有字的方法:首先创建一个HTML示例文件;然后通过img标签引入一张图片;接着定义一段文字内容;最后通过css中的float属性实现图片右边有字即可。 本教程操作环境:windows7系统、HTML5&&CSS3版、Dell G3电脑。 html+css 左边是图…

      2025年12月24日
      000
    • css怎么把字体颜色改为白色

      在css中,可以通过color属性把字体颜色改为白色,只需要将color属性的值设置为“white”、“#FFFFFF”、“rgb(255,255,255)”、“hsl(0,0%,100%)”中的一个即可。 本教程操作环境:windows7系统、CSS3&&HTML5版、Dell G…

      2025年12月24日
      000
    • css如何控制图片宽度

      在css中,如果是img图片,可以使用width属性来控制图片宽度,例“img{width:100px;}”;如果是背景图片,则使用background-size属性来控制图片宽度,语法“background-size:宽度 高度;”。 本教程操作环境:windows7系统、CSS3&&am…

      2025年12月24日 好文分享
      000
    • 什么是CSS,其主要作用是什么

      CSS指的是层叠样式表,一种用来表现HTML或XML等文件样式的计算机语言,是可以做到网页和内容进行分离的样式语言。作用是:可以有效地对页面的布局、字体、颜色、背景和其它效果实现更加精确的控制;使页面的字体变得更漂亮,更容易编排。 本教程操作环境:windows7系统、CSS3&&H…

      2025年12月24日
      000
    • css引入本地图片的方法是什么

      css引入本地图片的方法:可以使用background属性来实现,如【background:url(images/2.jpg) no-repeat;】。background属性可以在一个声明中设置所有的背景属性。 本文操作环境:windows10系统、css3、thinkpad t480电脑。 属性…

      2025年12月24日
      000
    • css中的浮动属性值有哪些

      css中的浮动属性值有:left、right、none、inherit。float浮动属性可以使元素向左或向右移动,其周围的元素也会重新排列,往往用于图像布局中。 本文操作环境:windows10系统、css 3、thinkpad t480电脑。 浮动属性介绍: CSS 的 Float(浮动),会使…

      2025年12月24日
      000
    • css link与import的区别是什么

      区别:link属于html标签,而@import是css提供的一种方式,link标签不仅可以引入css,还可以做其他事,而@import只能引入css;@import只有在IE5以上才支持;而link标签不存在兼容性问题。 本教程操作环境:windows7系统、CSS3&&HTML5…

      2025年12月24日
      000
    • css中如何让文字大小改变

      css中让文字大小改变的方法:可以使用font-size属性来改变文字大小,如【h1{font-size:250%;}】,表示将h1元素设置为基于父元素的一个百分比值。 本文操作环境:windows10系统、css 3、thinkpad t480电脑。 文字属性介绍: font-size 属性用于设…

      2025年12月24日
      000
    • 在css中设置边框可以用哪些属性

      在css中设置边框可以用border属性、border-style属性、border-width属性、border-color属性等。边框属性允许我们指定一个元素边框的样式和颜色。 本文操作环境:windows10系统、css 3、thinkpad t480电脑。 边框属性简介: CSS边框属性允许…

      2025年12月24日
      000
    • css怎么改字体粗细

      在CSS中,字体粗细可用font-weight属性来修改,只需要将font-weight属性的值设置为“bold”、“bolder”、“lighter”或“500”、“600”、“700”、“800”、“900”值即可,属性值越大字体越粗。 本教程操作环境:windows7系统、CSS3&&…

      2025年12月24日
      000
    • css怎么设置宽为100vw

      在css中,可以使用“width:100vw;”样式来设置宽为100vw,width属性可以设置元素的宽度。vw是一个视口单位,是指相对于视口的宽度;1vw等于视口宽度的1%,比如浏览器的宽度为1920px,则“1vw=19.2px”。 本教程操作环境:windows7系统、CSS3版、Dell G…

      2025年12月24日
      000
    • css行级元素和块级元素之间怎么转换

      在css中,可以使用display属性来实现行级元素和块级元素的转换,给行级元素设置“display:block;”样式即可转换为块级元素,给块级元素设置“display:inline;”样式即可转换为行级元素。 本教程操作环境:windows7系统、CSS3&&HTML5版、Del…

      2025年12月24日
      000
    • css怎么设置变成小手

      在css中可以通过将cursor属性值设置为pointer来实现光标为小手样式,该属性定义了鼠标指针放在一个元素边界范围内时所用的光标形状。 本教程操作环境:windows7系统、css3版、Dell G3电脑。 cursor 定义和用法 cursor 属性规定要显示的光标的类型(形状)。 该属性定…

      2025年12月24日
      000
    • css的选择器不包括什么

      css的选择器不包括“超文本标记选择器”,而包括类选择器、标签选择器、ID选择器、伪类选择器等等,其中“选择器”指明了{}中的“样式”的作用对象。 本文操作环境:Windows7系统、css3、Dell G3电脑。 css的选择器不包括“超文本标记选择器”。 css的选择器包括类选择器、标签选择器、…

      2025年12月24日
      000
    • css怎么让div文字竖着

      css让div文字竖着的实现方法:首先创建一个HTML示例文件;然后创建一个div;最后通过设置css样式为“div{writing-mode: tb-rl;} ”即可让div文字竖着。 本文操作环境:Windows7系统、HTML5&&CSS3、Dell G3电脑。 css设置文字…

      2025年12月24日
      000
    • css怎么去除table的间隙

      css去除table间隙的方法:首先打开相应的HTML代码文件;然后通过代码“table{border-collapse:collapse;}”即可去掉单元格之间的间隔。 本文操作环境:Windows7系统、HTML5&&CSS3、Dell G3电脑。 css table去掉表格中单…

      2025年12月24日
      000
    • 什么是css的高度塌陷

      在文档流中,父元素的高度默认是被子元素撑开的,也就是子元素多高,父元素就多高。但是当子元素设置浮动之后,子元素会完全脱离文档流,此时将会导致子元素无法撑起父元素的高度,导致父元素的高度塌陷。 本教程操作环境:windows7系统、CSS3版、Dell G3电脑。 如果父元素只包含浮动元素,且父元素未…

      2025年12月24日
      000
    • 在css中float属性的属性值有哪些

      在css中,float属性用于定义元素在哪个方向浮动,可以设置的属性值有:1、“left”,定义元素向左浮动;2、“right”,定义元素向右浮动;3、“none”,定义元素不浮动,并会显示在其在文本中出现的位置;4、“inherit”。 本教程操作环境:windows7系统、CSS3&&a…

      2025年12月24日
      000

    发表回复

    登录后才能评论
    关注微信