CSS中环形效果的实现方案

环形效果如下所示:

环形.png

环形效果的特点就是:多个颜色条交替排列,相邻颜色条之间的过渡是突变的效果;
所以,可以用颜色突变的方案来实现环形效果;

根据我的《CSS中颜色突变的实现方案》,有如下方案可实现环形效果(以圆环为例):

备注:
如果没有看过我的《CSS中颜色突变的实现方案》,建议先看下,然后再来看这篇文章;

方案1:多个元素层叠

这个方案的思路比较直观,就是用多个单色填充的元素以相同的中心位置层叠,元素可以通过border-radius实现圆形效果,越小的圆形越靠上,如下图:

3d层叠效果

此方案优点:

  1. 原型直观,易理解;
  2. 可以实现任意多颜色的环形效果;
  3. 能实现圆环、椭环、方环、扇形环等等,一切圆角可实现的形状的环类效果;

此方案缺点:

  1. 添加了较多冗余的元素;
  2. 需要根据圆环计算条个元素的尺寸;

方案2:径向渐变

这个方案是通过 《CSS中颜色突变的实现方案》/方案2-插入颜色渐变辅助色标 实现环形效果的,由于环形往往是交替重复出现的,所以最好用重复径向渐变函数repeating-radial-gradient() 来实现;

以实现红、绿、蓝3个颜色的水平环形效果为例:
示例代码:

background-image: repeating-radial-gradient(red 0%, red 10%, green 10%, green 20%,blue 20%,blue 30%);

示例效果:

径向重复渐变

此方案的优点:

  1. 用单个元素实现,不用添加冗余元素;
  2. 可以实现任意多颜色的交替重复的环形;
  3. 能实现圆环、椭环以及多种图形层叠出的圆形;

此方案缺点:

  1. 实现方环时较麻烦;

方案3:多重阴影

些种方案是利用CSS的阴影box-shadow来实现的;在CSS中,阴影box-shadow可以是外延或延的,并且可以指定多组阴影值,这就给实现环形带来了可能;可能部分人对阴影box-shadow的了解还不解深入和全面,在讲具体实现原理之前,先来了解下阴影box-shadow属性,如下:

box-shadow属性:

语法:

box-shadow:none | <shadow> [ , <shadow> ]*
<shadow> = inset? && <length>{2,4} && <color>?
默认值:none
适用于:所有元素
继承性:无
动画性:是,除了内、外阴影切换时
计算值:指定值

取值:

none:
无阴影
<length>①:
第1个长度值用来设置对象的阴影水平偏移值。可以为负值
<length>②:
第2个长度值用来设置对象的阴影垂直偏移值。可以为负值
<length>③:
如果提供了第3个长度值则用来设置对象的阴影模糊值。不允许负值
<length>④:
如果提供了第4个长度值则用来设置对象的阴影外延值。可以为负值
<color>:
设置对象的阴影的颜色。
inset:
设置对象的阴影类型为内阴影。该值为空时,则对象的阴影类型为外阴影

从box-shadow属性语法上可以看出:

  1. box-shadow可以设置多个阴影效果,每个阴影设置用逗号分隔;
  2. 当有多个阴影时,这些阴影是层层叠加的,并且box-shadow属性中最前面的阴影层叠在最上层,依次类推;
  3. 不仅可以设置偏移效果的阴影,而且可以设置扩张(外延)效果的阴影;
  4. 可以设置内阴影、外阴影;

这些特性的示例效果如下:
CSS样式:

非扩张阴影:box-shadow: 10px 20px 0 blue;
扩张阴影:box-shadow: 0 0 0 20px blue;
内阴影:box-shadow: inset 0 0 0 20px blue;

示例效果:

阴影效果示例

用阴影实现环形效果:

从刚才了解到的阴影box-shadow属性的特性可知,我们可以设置多个扩张阴影,并且扩张阴影的扩张半径逐个叠加,通过如此设置,便可以得到想要的环形效果;如果想得到圆环或者椭环,只需要通过border-radius设置适合的圆角即可,因为阴影的形状会与边框保持一致;

示例代码如下:

CSS样式:

border-radius: 10%;    /*圆角*/
box-shadow: 0 0 0 10px red, 
                     0 0 0 20px green , 
                     0 0 0 30px blue;

示例效果:

多重阴影

此方案的优点:

  1. 用单个元素实现,不用添加冗余元素;
  2. 可以实现任意多颜色的交替的环形;
  3. 能实现圆环、椭环、方环、扇形环等等,一切圆角可实现的形状的环类效果;

此方案缺点:

  1. 对于重复的环形,必须通过手动设置来实现;
  2. 阴影不会影响布局,而且也不会受到box-sizing属性的影响,不过可以通过内边距或外边距(这取决于阴影是内阴影还是外阴影)来模拟出阴影所占据的空间;
  3. 当阴影是外阴影时,阴影区域不会响应鼠标事件;

相关文章:CSS中特殊效果的实现方案

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,904评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,581评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,527评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,463评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,546评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,572评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,582评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,330评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,776评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,087评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,257评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,923评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,571评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,192评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,436评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,145评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,004评论 25 707
  • text-shadow是给文本添加阴影效果,box-shadow是给元素块添加周边阴影效果。随着HTML5和CSS...
    arlene112阅读 2,269评论 0 1
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    wzhiq896阅读 1,744评论 0 2
  • todo-mvp架构项目地址 todo-mvp 这个app版本被称作todo-mvp,给这个工程的其他示例提供一个...
    caoyy阅读 568评论 0 0
  • 随着剧情的进展,我们和加贺警探一起慢慢揭开了一个伪善的,可怕的,甚至有些变态的日高。他将野野口的作品据为己有,还借...
    鱼耗子阅读 141评论 0 0