纯CSS如何实现血轮眼+轮回眼特效(代码详解)

本篇文章给大家介绍一下使用纯css实现血轮眼+轮回眼特效的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所助。

血轮眼

效果(完整代码在底部)

其实实现并不难,都是重复的代码比较多。

实现(可跟着一步一步写):

1. 先定义基本标签:

    

2. 定义左右眼的基本css样式:

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

.zuo , .you{             width: 250px;            height: 120px;            background-color: rgb(255, 255, 255);            border-bottom: 5px solid rgb(70, 70, 70);            overflow: hidden;            position: relative;        }

border-bottom: 5px solid rgb(70, 70, 70); 给个灰色的眼底。

overflow:溢出隐藏。

position: relative; 相对定位。

3. 开始先定义血轮眼的基本样式:

.zuo{            transform: translateX(-135px);            border-radius: 0 120px 0 120px;            box-shadow: inset 3px 2px 3px  rgba(17, 17, 17, 0.8);        }

transform: translateX(-135px); 向左偏移,让两眼分开。border-radius:给两个角设置弧度,形成眼睛形状。bos-shadowL给眼角一点阴影。

4. 设置眼球宽高等:

.zuo::after{            content: '';            position: absolute;            top: 50%;            left: 50%;            transform: translate(-50%,-50%);            width: 95px;            height: 95px;            border-radius: 50%;            border: 2px solid #000;            animation: colour 2s linear forwards;        }        @keyframes colour{            0%,30%{                background-color: rgb(0, 0, 0);            }            100%{                 background-color: rgb(255, 4, 4);             }         }

5. 设置眼球正中间的黑点,都是些定位大小啥的,然后设置动画然它慢慢变大:

 .zuoZong{            position: absolute;            top: 50%;            left: 50%;            transform: translate(-50%,-50%);            width: 0px;            height: 0px;            border-radius: 50%;            background-color: rgb(0, 0, 0);            z-index: 1;            animation: da 3s linear forwards;        }        @keyframes da{            100%{                width: 15px;            height: 15px;            }        }

6. 设置三勾玉所在的圈,设置动画让其显示与旋转:

.zuoYu{            position: absolute;            top: -25px;            left: -25px;            bottom: -25px;            right: -25px;            border-radius: 50%;            border: 2px solid rgb(0, 0, 0);            animation: zhuan 2s linear 2s forwards;            opacity: 0;        }        @keyframes zhuan{                       100%{                opacity: 1;                transform: rotate(720deg);            }        }

7. 制作三勾玉,先做一个圆,再用双伪类制作一个圆弧,两者结合就是勾玉了:

.zuoYu .yu{             position: absolute;             width: 15px;             height: 15px;             border-radius: 50%;             background-color: rgb(0, 0, 0);        }        .zuoYu .yu::after{            content: '';            position: absolute;            top: -6px;            left: -1px;            width: 6px;            height: 20px;            border-radius: 50%;            border-left: 6px solid rgb(0, 0, 0);        }

border-radius: 50%;

border-left: 6px solid rgb(0, 0, 0);

先让伪类为圆,再只设置一条边框,圆弧形成,再定位在父元素上,形成勾玉。

8. 给勾玉设置动画,让其从最中间变大旋转到勾玉所在的圈:

  .zuoYu .yu:nth-child(1){            animation: yu1 2s ease-in 2s  forwards;        }        @keyframes yu1{            0%{                opacity: 0;                left: 50%;                top: 50%;                                transform:translate(-50%,-50%)  scale(0.1) ;            }            100%{                left: 50%;                top: -9%;                transform: scale(1) rotate(80deg);              }        }

left: 50%;
top: 50%; 在最中间。
opacity:透明。
scale(0.1);缩小。
100%{…}到对应位置,同时变不透明和放大成正常大小。

9. 一样的,给其它两个勾玉动画:

.zuoYu .yu:nth-child(2){            animation: yu2 2s ease-in 2s forwards;         }        @keyframes yu2{            0%{                opacity: 0;                left: 50%;                top: 50%;                                transform: translate(-50%,-50%) scale(0.1) ;            }            100%{                top: 60%;                left: -9%;                transform: scale(1) rotate(-60deg);              }        }        .zuoYu .yu:nth-child(3){                      animation: yu3 2s ease-in 2s forwards;        }        @keyframes yu3{            0%{                opacity: 0;                right: 50%;                top: 50%;                                transform: translate(-50%,-50%) scale(0.1);            }            100%{                top: 60%;                right: -9%;                transform: scale(1) rotate(180deg);              }        }

10.给两个眼睛都设置一个白点,相当于反光效果吧,至此血轮眼做完了:

.zuo::before,.you::before{            content: '';            position: absolute;            left: 38%;            top: 30%;            width: 12px;            height: 12px;            border-radius: 50%;            background-color: rgb(255, 255, 255);            z-index: 10;        }

position: absolute;
left: 38%;
top: 30%; 定位相应的位置。
background-color: rgb(255, 255, 255); 白色。
z-index: 10; 设置为10,显示在最上层。

11.设置轮回眼基本css样式,跟血轮眼一样:

 .you{            transform: translateX(135px);            border-radius:  120px 0 120px 0;            box-shadow: inset -3px 2px 3px  rgba(17, 17, 17, 0.8);        }

12.设置眼球宽高等:

.you::after{            content: '';            position: absolute;            top: 50%;            left: 50%;            transform: translate(-50%,-50%);            width: 95px;            height: 95px;            border-radius: 50%;            border: 2px solid #000;            animation: youcolor 2s linear forwards;         }         @keyframes youcolor{            0%,30%{                background-color: rgb(0, 0, 0);            }            100%{                 background-color: rgb(144, 130, 183);                          }         }

position: absolute; 绝对定位
top: 50%;
left: 50%;
transform: translate(-50%,-50%); 居中对齐。
animation:设置动画,让其变紫色。forward:继承最后一帧的属性。
background-color: rgb(0, 0, 0); 黑色
background-color: rgb(144, 130, 183); 紫色。

13. 设置眼球最中间的黑点,跟血轮眼也差不多:

.dian{                    position: absolute;            top: 50%;            left: 50%;                          background-color: #000;            transform: translate(-50%,-50%);            border-radius: 50%;            z-index: 10;            animation: youda 3s linear forwards;         }         @keyframes youda{             0%{                height: 0px;            width: 0px;             }             100%{                height: 15px;            width: 15px;             }         }

14. 设置轮回眼每个圈,同时设置动画让其变大:

 .youYu{            position: absolute;          top: 50%;          left: 50%;          transform: translate(-50%,-50%);       }       .quan{           position: absolute;           border-radius: 50%;           border: 2px solid #000;           z-index: calc(1 - var(--r));           animation: zhi 2s ease-out 2s forwards;       }       @keyframes zhi{           0%{            top: calc(var(--r) * 1px);           left: calc(var(--r) * 1px);           right: calc(var(--r) * 1px);           bottom: calc(var(--r) * 1px);           }           100%{            top: calc(var(--r) * -35px);           left: calc(var(--r) * -35px);           right: calc(var(--r) * -35px);           bottom: calc(var(--r) * -35px);               background-color: rgb(187, 177, 214);           }       }

z-index: calc(1 – var(–r)); 计算,让最开始的圈显示在最上层。
animation:设置动画,让轮回圈慢慢变大,同时变成紫色。

完整代码:

                Document            *{            margin: 0;            padding: 0;            box-sizing: border-box;        }        body{            height: 100vh;            display: flex;            justify-content: center;            align-items: center;            background-color: #000;        }        .zuo , .you{             width: 250px;            height: 120px;            background-color: rgb(255, 255, 255);            border-bottom: 5px solid rgb(70, 70, 70);            overflow: hidden;            position: relative;        }                 .zuo{            transform: translateX(-135px);            border-radius: 0 120px 0 120px;            box-shadow: inset 3px 2px 3px  rgba(17, 17, 17, 0.8);        }        .zuo::after{            content: '';            position: absolute;            top: 50%;            left: 50%;            transform: translate(-50%,-50%);            width: 95px;            height: 95px;            border-radius: 50%;            border: 2px solid #000;            animation: colour 2s linear forwards;        }        @keyframes colour{            0%,30%{                background-color: rgb(0, 0, 0);            }            100%{                 background-color: rgb(255, 4, 4);             }         }        .zuoZong{            position: absolute;            top: 50%;            left: 50%;            transform: translate(-50%,-50%);            width: 0px;            height: 0px;            border-radius: 50%;            background-color: rgb(0, 0, 0);            z-index: 1;            animation: da 3s linear forwards;        }        @keyframes da{            100%{                width: 15px;            height: 15px;            }        }        .zuoYu{            position: absolute;            top: -25px;            left: -25px;            bottom: -25px;            right: -25px;            border-radius: 50%;            border: 2px solid rgb(0, 0, 0);            animation: zhuan 2s linear 2s forwards;            opacity: 0;        }        @keyframes zhuan{                       100%{                opacity: 1;                transform: rotate(720deg);            }        }        .zuoYu .yu{             position: absolute;             width: 15px;             height: 15px;             border-radius: 50%;             background-color: rgb(0, 0, 0);        }        .zuoYu .yu::after{            content: '';            position: absolute;            top: -6px;            left: -1px;            width: 6px;            height: 20px;            border-radius: 50%;            border-left: 6px solid rgb(0, 0, 0);        }        .zuoYu .yu:nth-child(1){            animation: yu1 2s ease-in 2s  forwards;        }        @keyframes yu1{            0%{                opacity: 0;                left: 50%;                top: 50%;                                transform:translate(-50%,-50%)  scale(0.1) ;            }            100%{                left: 50%;                top: -9%;                transform: scale(1) rotate(80deg);              }        }               .zuoYu .yu:nth-child(2){            animation: yu2 2s ease-in 2s forwards;         }        @keyframes yu2{            0%{                opacity: 0;                left: 50%;                top: 50%;                                transform: translate(-50%,-50%) scale(0.1) ;            }            100%{                top: 60%;                left: -9%;                transform: scale(1) rotate(-60deg);              }        }        .zuoYu .yu:nth-child(3){                      animation: yu3 2s ease-in 2s forwards;        }        @keyframes yu3{            0%{                opacity: 0;                right: 50%;                top: 50%;                                transform: translate(-50%,-50%) scale(0.1);            }            100%{                top: 60%;                right: -9%;                transform: scale(1) rotate(180deg);              }        }        .zuo::before,.you::before{            content: '';            position: absolute;            left: 38%;            top: 30%;            width: 12px;            height: 12px;            border-radius: 50%;            background-color: rgb(255, 255, 255);            z-index: 10;        }        .you{            transform: translateX(135px);            border-radius:  120px 0 120px 0;            box-shadow: inset -3px 2px 3px  rgba(17, 17, 17, 0.8);/*             filter: drop-shadow( 8px -5px 3px  rgb(216, 59, 59)); */        }         .you::after{            content: '';            position: absolute;            top: 50%;            left: 50%;            transform: translate(-50%,-50%);            width: 95px;            height: 95px;            border-radius: 50%;            border: 2px solid #000;            animation: youcolor 2s linear forwards;         }         @keyframes youcolor{            0%,30%{                background-color: rgb(0, 0, 0);            }            100%{                 background-color: rgb(144, 130, 183);                          }         }                  .dian{                    position: absolute;            top: 50%;            left: 50%;                          background-color: #000;            transform: translate(-50%,-50%);            border-radius: 50%;            z-index: 10;            animation: youda 3s linear forwards;         }         @keyframes youda{             0%{                height: 0px;            width: 0px;             }             100%{                height: 15px;            width: 15px;             }         }         .youYu{            position: absolute;          top: 50%;          left: 50%;          transform: translate(-50%,-50%);       }       .quan{           position: absolute;           border-radius: 50%;           border: 2px solid #000;           z-index: calc(1 - var(--r));           animation: zhi 2s ease-out 2s forwards;       }       @keyframes zhi{           0%{            top: calc(var(--r) * 1px);           left: calc(var(--r) * 1px);           right: calc(var(--r) * 1px);           bottom: calc(var(--r) * 1px);           }           100%{            top: calc(var(--r) * -35px);           left: calc(var(--r) * -35px);           right: calc(var(--r) * -35px);           bottom: calc(var(--r) * -35px);               background-color: rgb(187, 177, 214);           }       }            

(学习视频分享:css视频教程)

以上就是纯CSS如何实现血轮眼+轮回眼特效(代码详解)的详细内容,更多请关注创想鸟其它相关文章!

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 07:17:42
下一篇 2025年12月24日 07:18:02

相关推荐

  • css样式冲突怎么办

    解决方法:1、细化选择符,将选择器的描述写得更加精确;2、再写一次选择器名;3、改变CSS样式表中的顺序;4、主动提升优先级,在需要使用的样式后加上关键字“!important”。 本教程操作环境:windows7系统、CSS3&&HTML5版、Dell G3电脑。 1. 细化选择符…

    2025年12月24日
    000
  • css如何设置所有标签

    设置方法:1、将所有标签都列出来,语法“body,ol,ul,h1,h2,h3,h4,h5,h6,p,th…{属性:属性值;}”;2、使用*进行设置,语法格式为“*{属性:属性值;}”。 本教程操作环境:windows7系统、CSS3&&HTML5版、Dell G3电脑。…

    2025年12月24日
    000
  • css结构化伪类选择器有哪些

    选择器有::root、:not、:only-child、:first-child、:last-child、:empty:target、:nth-child(n)、nth-last-child(n)、:nth-of-type(n)等。 本教程操作环境:windows7系统、CSS3&&…

    2025年12月24日 好文分享
    000
  • CSS如何实现渐变提示框(tooltips)

    本篇文章给大家介绍一下使用css如何实现支持渐变的提示框(tooltips)。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所助。 今天来看一种十分常见的交互:提示框(tooltips)。通常提示框都是纯色的,比如下面这个 这类布局实现还不算复杂,可以用一个圆角矩形和一个小三角拼接形成,设…

    2025年12月24日 好文分享
    000
  • 网页设计css样式特效代码大全(建议收藏)

    本篇文章给大家分享一些常用的CSS样式代码,使用这些代码,你可以轻而易举地让页面的风格变得更漂亮,伙伴们来收藏吧!! css规定字体样式大全 字体属性:(font) 大小 {font-size: x-large;}(特大) xx-small;(极小) 一般中文用不到,只要用数值就可以,单位:PX、P…

    2025年12月24日
    000
  • css3跟css区别是什么

    css3跟css区别是:1、CSS3是CSS技术的升级版本,CSS是用来表现HTML或XML等文件样式的计算机语言;2、CSS3主要包括盒子模型、列表模块等模块,CSS可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。 本教程操作环境:windows7系统、CSS3&&…

    2025年12月24日
    000
  • css继承样式有哪些

    css继承样式有:visibility、cursor、letter-spacing、color、font、text-indent、text-align、list-style、list-style-type、border-collapse等。 本教程操作环境:windows7系统、CSS3&&…

    2025年12月24日
    000
  • css中tag是什么意思

    在css中tag代表着选择器,例如“#tag{样式代码;}”和“.tag{样式代码}”。TAG标签是一种由自己定义的,比分类更准确、更具体,可以概括文章主要内容的关键词。 本教程操作环境:windows7系统、CSS3&&HTML5版、Dell G3电脑。 在css中tag代表着选择…

    2025年12月24日
    000
  • css中浮动是什么意思

    css浮动是一种使元素脱离文档流的方法,会使元素向左或向右移动,其周围的元素也会重新排列。Float(浮动),往往是用于图像,但它在布局时一样非常有用。 本教程操作环境:windows7系统、CSS3&&HTML5版、Dell G3电脑。 所谓css浮动就是浮动元素会脱离文档的普通流…

    2025年12月24日
    000
  • css中的classlist的意思是什么

    classList属性返回元素的类名,作为DOMTokenList对象,该属性用于在元素中添加,移除及切换CSS类。classList属性是只读的,但你可以使用add()和remove()方法修改它。 本教程操作环境:windows7系统、CSS3&&HTML5版、Dell G3电脑…

    2025年12月24日 好文分享
    000
  • css3和less的区别是什么

    区别是:1、Less是一门CSS预处理语言,css是一种用来表现HTML或XML等文件样式的计算机语言;2、less扩展了CSS语言,增加了变量、Mixin、函数等特性;3、css可以被浏览器直接识别,less需要先编译为css。 本教程操作环境:windows7系统、CSS3&&H…

    2025年12月24日
    000
  • Css可以干些什么

    css可以用来表现HTML或XML等文件样式的计算机语言,是用来表示html样式的一种编程语言,是可以做到网页和内容进行分离的一种样式语言。 本教程操作环境:windows7系统、CSS3&&HTML5版、Dell G3电脑。 css是指层叠样式表(Cascading Style S…

    2025年12月24日
    000
  • css动画怎么匀速

    在css中,可以使用transition-timing-function属性设置动画匀速,只需要在元素中添加“transition-timing-function:linear;”样式即可。 本教程操作环境:windows7系统、CSS3&&HTML5版、Dell G3电脑。 eas…

    2025年12月24日 好文分享
    000
  • 网页设计css样式代码大全,快来收藏吧!

    减少很多不必要的代码,html+css可以很方便的进行网页的排版布局。小伙伴们收藏好哦~ 一.文本设置    1、font-size: 字号参数  2、font-style: 字体格式 3、font-weight: 字体粗细 4、颜色属性 立即学习“前端免费学习笔记(深入)”; color: 参数 …

    2025年12月24日
    000
  • css怎么做半圆

    css做半圆的方法:1、使用border-radius画半圆,语句如“border-radius: 50px 50px 0 0;”;2、使用clip属性画半圆,语句如“clip: rect(0px 50px 100px 0px);”。 本文操作环境:windows7系统、HTML5&&amp…

    2025年12月24日
    000
  • css样式怎么实现超出隐藏

    css样式实现超出隐藏的方法:首先创建一个HTML示例文件;然后通过“overflow: hidden;text-overflow: ellipsis;”设置文本超出隐藏效果即可。 本文操作环境:windows7系统、HTML5&&CSS3版,DELL G3电脑 css样式怎么实现超…

    2025年12月24日
    000
  • css中设置下划线的方法

    css中设置下划线的方法:1、使用“text-decoration:underline;”设置下划线样式;2、使用“border-bottom”属性设置下划线样式。 本文操作环境:windows7系统、HTML5&&CSS3版,DELL G3电脑 css中设置下划线的方法 在CSS中…

    2025年12月24日
    000
  • css层叠性重要么

    css层叠性是很重要的。层叠是html文件中对于同一个元素可以有多个css样式存在,当有相同权重的样式存在时,会根据这些css样式的前后顺序来决定,处于最后面的css样式会被应用。 本文操作环境:windows10系统、css 3、thinkpad t480电脑。 不知道大家有没有想过这样一个问题,…

    2025年12月24日
    000
  • css中怎么设置标题字体大小

    css中设置标题字体大小的方法是,使用标签来定义最高等级的标题,使用标签来定义最低等级的标题,例如【这是标题 1这是标题 6】。 本文操作环境:windows10系统、css 3、thinkpad t480电脑。 在网页中我们可以直接使用 到 标签来定义标题字体的大小。下面我们来简单地介绍下这个标签…

    2025年12月24日
    000
  • css中什么是块元素

    在css中块元素又称为行元素,它支持全部的样式。如果没有设置高度,那么块元素的宽度是父级宽度的100%。块元素在盒子中占一行,即使我们设置了宽度。 本文操作环境:windows10系统、css 3、thinkpad t480电脑。 块元素,也可以称它为行元素,布局中常用的标签有: div p 立即学…

    2025年12月24日
    000

发表回复

登录后才能评论
关注微信