在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
先介绍一下一个有趣的属性 —— 圆锥渐变! 对其感兴趣是因为我发现它竟然可以用来做圆饼图! 这样的: 其原理也很简单:就是以起始点为中心,然后以顺时针方向绕中心实现渐变效果。其必须接收多种颜色值参数,每个颜色值后可以跟两个百分比,为当前颜色值的起始点和终止点(中间用空格隔开): 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变量相结合: 放一个以前写过的演示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%); } <div class="circle"></div> <button id="but">点我改变圆饼图分布</button> <script> but.onclick=function(){ document.documentElement.style.setProperty('--zero', '10%'); document.documentElement.style.setProperty('--one', '70%'); } </script> 如果要动态增加颜色值(比如新增调查对象),可以动态修改style中的属性: xxx.style.xxx="xxx"; //改变 这要比用“::after伪元素”实现起来方便多了!
还有很多“骚操作”网上应该一搜一堆,这里就不再赘述了(:相比于前两年浏览器对此属性的“漠不关心”到现在的部分支持,也是很大进步了,让我们继续期待吧) 关于 linear-gradient这个属性除了在一些网站上用作某个元素的背景以外,似乎并没有什么值得关注的地方: background: linear-gradient(#fb3 50%, #58a 50%); background-size: 100% 30px; 垂直条纹 background: linear-gradient(to right, #fb3 50%, #58a 0); background-size: 30px 100%;
倾斜条纹 background: repeating-linear-gradient(45deg, #fb3, #58a 30px);
哦,对了,同上面一样,所有的“-gradient”属性在没有限制起始位置和终止位置时都会有“渐变光晕”,如果我们改为下面这样: background: repeating-linear-gradient(60deg, #fb3 0 15px, #58a 0 30px); 看到这张图你有没有想到一个著名的案例——三角形? 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及整体应用我们大概都知道:滚动条是一种常见的界面控件,用来提示一个元素除了可以看到的内容之外,还包含了更多内容。但是,它往往太过笨重,在视觉上喧宾夺主,因此现代操作系统已经开始简化它的外观,当用户不与可滚动的元素交互时,滚动条就会被完全隐藏。
我们现在已经很少通过滚动条来滚动页面了(更多的是使用触摸手势),但滚动条对于元素内容可滚动的提示作用仍然是十分有用的,哪怕对于那些没有发生交互的元素也是如此;而且这种提示方式十分巧妙。 让我们首先从一段简单的结构代码开始,一个带有示意性内容的普通无序列表: <ul> <li>Ada Catlace</li> <li>Alan Purring</li> <li>Schrödingcat</li> <li>Tim Purrners-Lee</li> <li>WebKitty</li> <li>Json</li> <li>Void</li> <li>Neko</li> <li>NaN</li> <li>Cat5</li> <li>Vector</li> <li>Ada Catlace</li> <li>Alan Purring</li> <li>Schrödingcat</li> <li>Tim Purrners-Lee</li> <li>WebKitty</li> <li>Json</li> <li>Void</li> <li>Neko</li> <li>NaN</li> <li>Cat5</li> <li>Vector</li> <li>Ada Catlace</li> <li>Alan Purring</li> <li>Schrödingcat</li> <li>Tim Purrners-Lee</li> <li>WebKitty</li> <li>Json</li> <li>Void</li> <li>Neko</li> <li>NaN</li> <li>Cat5</li> <li>Vector</li> <li>Ada Catlace</li> <li>Alan Purring</li> <li>Schrödingcat</li> <li>Tim Purrners-Lee</li> <li>WebKitty</li> <li>Json</li> <li>Void</li> <li>Neko</li> <li>NaN</li> <li>Cat5</li> <li>Vector</li> </ul> 我们可以给 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; 现在,当我们滚动列表时,这条阴影会一直停留在相同的位置。这正是背景图像的默认行为:它的位置是相对于元素固定的!不论元素的内容是否发生了滚动。这一点也适用于 现在常见的值只有 但这不重要,我们的思路对了! 我想到了一个很常用的hack:我们需要两层背景:一层用来生成那条阴影,另一层基本上就是一个用来遮挡阴影的白色矩形,其作用类似于遮罩层。生成阴影的那层背景将具有默认的 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的另一个应用 —— 渐变遮罩层! 但是现在我们会发现:现在只有上边有,下边怎么搞? 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的实用价值的文章就介绍到这了,更多相关CSS属性gradient内容请搜索极客世界以前的文章或继续浏览下面的相关文章,希望大家以后多多支持极客世界! |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论