Redian新闻
>
纯 CSS 实现呼吸霓虹效果

纯 CSS 实现呼吸霓虹效果

公众号新闻

推荐关注↓

作者:avion

https://juejin.cn/post/7157334059192942606

前言

不管是作为程序员还是游戏玩家,相信机械键盘都不陌生,机械键盘的灯光有一种叫做呼吸灯模式,会随着时间推移,不断闪烁,变换颜色,我一直挺好奇这个是怎么实现的,所以今天就拿css模拟一个呼吸灯霓虹特效,因为键盘写起来挺复杂的,所以考虑拿字节跳动的svgIcon作为前景,呼吸灯霓虹作为背景,实现一个呼吸灯霓虹特效

实现所需css属性预告

本文需要用到的css属性如下,按我的习惯,能用css实现的必不用js来实现,所以,所需要的属性有

  • flex 用来做水平垂直居中
  • radial-gradient 背景径向渐变 实现从内向外扩散式的渐变背景
  • background-image 让背景不那么单调
  • background-blend-mode  背景混合模式 类似Ps的溶解,正片叠底等等的效果
  • animation 呼吸霓虹的实现方式
  • filter 滤镜 实现呼吸灯特效的关键

接下来,就是我们样式的核心实现

核心实现

  • 容器

容器很简单,容器内包含一个文字,一个svg Icon

<div class="container">
    <div class="icon">
      <svg t="1666355082539" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1210" width="256" height="256"><path d="M122.496 109.738667A42.666667 42.666667 0 0 0 64 149.333333v682.666667a42.666667 42.666667 0 0 0 58.496 39.594667l106.666667-42.666667A42.666667 42.666667 0 0 0 256 789.333333v-597.333333a42.666667 42.666667 0 0 0-26.837333-39.594667l-106.666667-42.666666zM149.333333 768.981333V212.352l21.333334 8.533333v539.562667l-21.333334 8.533333zM357.162667 451.072A42.666667 42.666667 0 0 0 298.666667 490.666667v341.333333a42.666667 42.666667 0 0 0 58.496 39.594667l106.666666-42.666667a42.666667 42.666667 0 0 0 26.837334-39.594667v-256a42.666667 42.666667 0 0 0-26.837334-39.594666l-106.666666-42.666667zM384 768.981333v-215.296l21.333333 8.533334v198.229333l-21.333333 8.533333zM706.56 370.005333A42.666667 42.666667 0 0 1 725.333333 405.333333v341.333334a42.666667 42.666667 0 0 1-58.496 39.594666l-106.666666-42.666666a42.666667 42.666667 0 0 1-26.837334-39.594667v-256a42.666667 42.666667 0 0 1 26.837334-39.594667l106.666666-42.666666a42.666667 42.666667 0 0 1 39.765334 4.266666z m-87.893333 106.88v198.229334l21.333333 8.533333v-215.296l-21.333333 8.533333zM826.496 152.405333A42.666667 42.666667 0 0 0 768 192v640a42.666667 42.666667 0 0 0 58.496 39.594667l106.666667-42.666667a42.666667 42.666667 0 0 0 26.837333-39.594667v-554.666666a42.666667 42.666667 0 0 0-26.837333-39.594667l-106.666667-42.666667zM853.333333 768.981333V255.018667l21.333334 8.533333v496.896l-21.333334 8.533333z" p-id="1211"></path><path d="M149.333333 212.352v556.629333l21.333334-8.533333V220.885333l-21.333334-8.533333zM384 553.685333v215.296l21.333333-8.533333v-198.229333l-21.333333-8.533334zM618.666667 675.114667v-198.229334l21.333333-8.533333v215.296l-21.333333-8.533333zM853.333333 255.018667v513.962666l21.333334-8.533333V263.552l-21.333334-8.533333z" p-id="1212"></path></svg>
    </div>
  </div>
  • 容器通过父元素的flex布局实现垂直与水平居中
html,body{
    width100%;
    height100%;
    overflow: hidden;
    display: flex;
    justify-content: center;
    align-items: center;
    background-color#1e2759;
  }
  • 实现霓虹效果

霓虹效果通过容器与容器的before与after伪元素来实现,容器本身声明径向渐变背景与背景图,然后设置背景的叠加方式是multiply 正片叠底,这样我们就初步得到了一个有着模糊光圈的圆

 .container{
    width100%;
    position: relative;
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: column;
    height100%;
    backgroundradial-gradient(#f00, rgba(0,0,0,.5)),url(https://pic.90sheji.com/design/00/19/47/66/58b57e9a175b6.png!/fw/1080/quality/90/unsharp/true/compress/true/canvas/280x414a0a0/cvscolor/FFFFFFFF);
    background-blend-mode: multiply;
  }
  .container::before{
    content'';
    display: block;
    position: absolute;
    top0;
    left0;
    right0;
    bottom0;
    margin: auto;
    width600px;
    height600px;
    border-radius50%;
    backgroundradial-gradient(rgba(255,0,0,.75), transparent, transparent);
  }
  .container::after{
    content'';
    display: block;
    position: absolute;
    top0;
    left0;
    right0;
    bottom0;
    margin: auto;
    width800px;
    height800px;
    border-radius50%;
    backgroundradial-gradient(rgba(255,0,0,.75), transparent, transparent);
  }
  • 径向渐变的用法
background-image: radial-gradient(shape size at position, start-color, ..., last-color);
  • shape 渐变形状是圆形还是椭圆形  接收两个值 circleellipse
  • size 渐变的大小
  • start-color...end-color 组成渐变的颜色,以逗号隔开
  • 背景混合模式的用法 这个属性定义了背景的混合模式,默认是正常,multiply是正片叠底,其他的就有待大家探索了
background-blend-modenormal|multiply|screen|overlay|darken|lighten|color-dodge|saturation|color|luminosity;
  • 呼吸霓虹的实现 滤镜+动画

这里我们需要用到一个非常经典的滤镜 hue-rotate 这个滤镜我不止一次用过,每次用,都对这个滤镜所实现的效果叹为观止,这个滤镜的作用是将当前的颜色做反相,以角度为单位值,从0deg360deg,结合我们的动画,我们的呼吸霓虹就可以实现了,这里动画我们采用的是fromto的属性,这个属性与写0%100%的效果是一样的

.container{
  animation: hue-rotate 5s linear infinite;
}
@keyframes hue-rotate {
    from{
      filterhue-rotate(0deg);
    }
    to{
      filterhue-rotate(360deg);
    }
  }
  • 加个icon

实现完以后,感觉实在是太空了,所以就找到字节logo的svg形式,设置透明填充,然后通过drop-shadow滤镜进行了镂空 drop-shadow与box-shadow属性差不多,但是实现的效果有一些区别,drop-shadow可以针对不规则图形添加阴影。

.icon svg path{
  stroke#fff;
  stroke-width10px;
  fill: transparent;
  filterdrop-shadow(0 20px 10px #333blur(2px);
}


- EOF -




推荐阅读  点击标题可跳转

0、极客专属:几十款程序员秒懂的卫衣

1、会画色图的 AI,为什么无法领悟色色的真谛

2、假如我是核酸系统架构师,我会...

3、Linux 性能分析工具汇总


关注「程序员的那些事」加星标,不错过圈内事

点赞和在看就是最大的支持❤️

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
Little tips for writing College Essay & Essay (Alex)人生不该只有城市的霓虹,也应该有乡村的月光。[照片] 几年前随手拍的霓虹国雨后夜晚的街景Surface book 2 13in(i5-8350/8gram/256gssd/UHD graphics 620)UCSD新增第八学院——让很多人都困惑的UCSD八个学院,究竟怎么选?【猎聘 x MIT CSSA】中国建筑国际集团 MIT 宣讲招聘会HCSSA 活动篇|白山赏枫行开始报名‘Sleeping Assistants’ Are Talking Chinese Insomniacs to Sleep跪了!GCSE数学考试简单or难?据说这是最近几年最难的GCSE数学题……HCSSA 活动篇|万圣节的正确打开方式:10.29 Salem女巫镇出行成人级的爱情是什么样的?霓虹天鹅用顶级CS文书自证大神,任何人都能申美国Top CS硕士霓虹金学中文好好笑,看得我十分光荣美研理工科(CS、DS、统计、EE、金工金数)选校表,不匹配的院校赶紧Pass掉NeurlPS 2022 | 全新大模型参数高效微调方法SSF:仅需训练0.3M的参数,效果卓越ABsinthe《赛博边缘》露西:夜城霓虹光下的高冷美女!一次咨询能实现怎样的咨询效果,中美家庭治疗中心创始人首期直播答疑|明日开班【活动】HCSSA &amp; MITCSSA 1111 交友主题桌游夜此次牛津AQA考试局IGCSE秋考何时放榜?2023年IGCSE和Alevel考试时间如何安排?怡和嘉业董事长庄志:做好国产呼吸机,向“全球呼吸健康管理的首选平台”再进一步一座华丽的教堂、一本厚重的历史书霓虹美少年中国首封丨赏色IGCSE和Alevel经济的Essay有多重要?完成一篇高质量Essay需要几步?金犀銀杏半轮球HCSSA 公共服务篇 | 绿卡申请公开讲座《寂静岭》系列新作即将公布!《我的世界》联动《蝙蝠侠》!《霓虹深渊》骨折!ACE X ACSSS X CEO |线下对话Monolith创始人、前红杉中国合伙人曹曦【嘉年华】重磅!ISSS 首次携手 CSSA 共同打造嘉年华活动!尔湾男童突然呼吸困难,最后完全停止呼吸!竟然是母亲用这种东西...嘿市价$49.99,Upcare KBD 呼吸道健康喷雾 50ml,超强力呼吸道“卫士”LSE Offer+1!来自Mathematics with Economics专业![梅玺阁菜话]No. 094 面和浇头系列之十八 葱油拌面(视频)附葱油视频
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。