iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >css+svg怎么实现b站充电效果
  • 835
分享到

css+svg怎么实现b站充电效果

2023-06-08 04:06:04 835人浏览 薄情痞子
摘要

小编给大家分享一下CSS+svg怎么实现b站充电效果,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!效果图: 难点svg图形的两块蒙版制作先上代码 这是左边粉色框框的内容这个没啥好说的<div id

小编给大家分享一下CSS+svg怎么实现b站充电效果,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

效果图:

css+svg怎么实现b站充电效果 

难点

svg图形的两块蒙版制作

先上代码

这是左边粉色框框的内容

这个没啥好说的

<div id="con">    <div id="TA-con">      <div id="text-con">        <div id="linght"></div>        <div id="TA">为TA充电</div>      </div>    </div>
body {      margin: 0;      padding: 0;      background-color: #eee;    }        #con {      width: 350px;      height: 85px;      background-color: #fff;      position: relative;      border-radius: 4px;      margin:50px auto;    }#TA-con {      width: 157px;      height: 50px;      background-color: #f25d8e;      box-shadow: 0 4px 4px rgba(255, 112, 159, .3);      position: absolute;      top: 50%;      left: 5%;      transfORM: translateY(-50%);      border-radius: 4px;      cursor: pointer;    }        #text-con {      width: 100px;      height: 100%;      margin: 0 auto;      position: relative;    }        #linght {      width: 0;      height: 0;      position: absolute;      top: 36%;      left: 4px;      border-color: transparent;      border-style: solid;      border-width: 10px;      border-top: 10px solid #fff;      border-radius: 4px;      transform: rotate(-55deg);    }    #linght::after {      position: absolute;      top: -13px;      left: -11px;      content: "";      width: 0;      height: 0;      border-color: transparent;      border-style: solid;      border-width: 10px;      border-top: 10px solid #fff;      transform: rotate(180deg);      border-radius: 4px;    }        #TA {      float: right;      line-height: 50px;      font-size: 15px;      color: #fff;    }    #TA-con:hover {      background-color: #ff6b9a;    }

这里做的就是创建一个svg的图形,背景色是灰色,看着是不是很多很复杂,没事,这也不是我写的

 <div id="tube-con">      <svg viewBox="0 0 1028 385" fill="none" xmlns="Http://www.w3.org/2000/svg">        <path d="M1 77H234.226L307.006 24H790" stroke="#e5e9ef" stroke-width="20" />        <path d="M0 140H233.035L329.72 71H1028" stroke="#e5e9ef" stroke-width="20" />        <path d="M1 255H234.226L307.006 307H790" stroke="#e5e9ef" stroke-width="20" />        <path d="M0 305H233.035L329.72 375H1028" stroke="#e5e9ef" stroke-width="20" />        <rect y="186" width="236" height="24" fill="#e5e9ef" />        <ellipse cx="790" cy="25.5" rx="25" ry="25.5" fill="#e5e9ef" />        <circle r="14" transform="matrix(1 0 0 -1 790 25)" fill="white" />        <ellipse cx="790" cy="307.5" rx="25" ry="25.5" fill="#e5e9ef" />        <circle r="14" transform="matrix(1 0 0 -1 790 308)" fill="white" />      </svg>

用的是这玩意,网页版在线的,画好后就可以右击了,是不是很简单! www.figma.com/

css+svg怎么实现b站充电效果 

既然svg图画好了,就要想怎么完成了

需要的东西:
1:svg底色为灰色的图;
2:一个粉色的svg图,当我鼠标hover到左边粉色框时,粉色svg图完全展开,初始为0;
3:快速移动的黄色小方块;

底色灰色做好了,还差粉色和黄色的svg图

mask是用来做粉色svg的蒙版的
 

<div id="mask">

跟灰色svg没有任何的区别,就是改改颜色
 

<svg viewBox="0 0 1028 385" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 77H234.226L307.006 24H790" stroke="#f25d8e" stroke-width="20" /><path d="M0 140H233.035L329.72 71H1028" stroke="#f25d8e" stroke-width="20" /><path d="M1 255H234.226L307.006 307H790" stroke="#f25d8e" stroke-width="20" /><path d="M0 305H233.035L329.72 375H1028" stroke="#f25d8e" stroke-width="20" /><rect y="186" width="236" height="24" fill="#f25d8e" /><ellipse cx="790" cy="25.5" rx="25" ry="25.5" fill="#f25d8e" /><circle r="14" transform="matrix(1 0 0 -1 790 25)" fill="white" /><ellipse cx="790" cy="307.5" rx="25" ry="25.5" fill="#f25d8e" /><circle r="14" transform="matrix(1 0 0 -1 790 308)" fill="white" /></svg></div>

orange-mask是用来做黄色svg的蒙版
 

<div id="orange-mask" >

跟灰色svg没有任何的区别,就是改改颜色
 

<svg viewBox="0 0 1028 385" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 77H234.226L307.006 24H790" stroke="#ffd52b" stroke-width="20" /><path d="M0 140H233.035L329.72 71H1028" stroke="#ffd52b" stroke-width="20" /><path d="M1 255H234.226L307.006 307H790" stroke="#ffd52b" stroke-width="20" /><path d="M0 305H233.035L329.72 375H1028" stroke="#ffd52b" stroke-width="20" /><rect y="186" width="236" height="24" fill="#ffd52b" /><ellipse cx="790" cy="25.5" rx="25" ry="25.5" fill="#ffd52b" /><circle r="14" transform="matrix(1 0 0 -1 790 25)" fill="white" /><ellipse cx="790" cy="307.5" rx="25" ry="25.5" fill="#ffd52b" /><circle r="14" transform="matrix(1 0 0 -1 790 308)" fill="white" /></svg></div><p id="people">共 <b>0</b> 人</p></div></div>

css的代码

    #tube-con {      width: 157px;      height: 55px;      position: absolute;      right: -5px;      top: 15px;    }        svg {      width: 100%;      height: 100%;    }        #mask {      width: 0px;      height: 100%;      overflow: hidden;      position: absolute;      top: 0;      left: 0;      transition:all 0.5s;    }        #mask svg {      width: 157px;      height: 55px;    }        #TA-con:hover+#tube-con>#mask{      width:157px;    }        #TA-con:hover+#tube-con>#orange-mask{      animation: move1 0.5s linear 0.2s infinite;    }    #TA-con:hover+#tube-con>#orange-mask svg{      animation: movetwo 0.5s linear 0.2s infinite;    }        #orange-mask{      width: 18px;      height: 100%;      overflow: hidden;      position:absolute;      left:-15px;      top:0px;    }        #orange-mask svg {      position: absolute;;      top:0;      left:15px;      width: 157px;      height: 55px;    }    @keyframes move1 {      0%{        left:-15px;      }      100%{        left:140px;      }    }    @keyframes movetwo {      0%{        left:15px;      }      100%{        left:-140px;      }    }    #people{      position:absolute;      right:10px;      top:8px;      font-size:12px;      font-family:"雅黑";      color:#aaa;    }    #people>b{      color:#777;    }

其中css处理最难的地方在于黄色svg和黄色svg蒙版的地方

因为既要保证黄色svg的蒙版从左向右移动,又要保证黄色svg位置保证不变;
蒙版为父元素,黄色svg为子元素,
父元素添加定位后,父元素移动,子元素一定会跟着移动,
如果子元素添加定位,父元素不添加定位 或者 父元素正常定位,子元素定位为fixed,
这有会导致父元素蒙版不能对子元素溢出的部分进行隐藏,在这我纠结了好久
!!!然后我就突然发现
父元素无论以多块的速度移动多远的距离,子元素只要以相同的速度移动相反的距离,
子元素就能保证一直以一个位置保持不变!!!子元素就相对body是静止的!!

move1是父元素蒙版的,movetwo是黄色svg图形的,请不要吐槽起名。。。。

move1移动多远,movetwo就移动相反的距离

 @keyframes move1 {      0%{        left:-15px;      }      100%{        left:140px;      }    }    @keyframes movetwo {      0%{        left:15px;      }      100%{        left:-140px;      }    }

全部的代码

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <meta name="viewport" content="width=device-width, initial-scale=1.0">  <title>Document</title>  <style>    body {      margin: 0;      padding: 0;      background-color: #eee;    }        #con {      width: 350px;      height: 85px;      background-color: #fff;      position: relative;      border-radius: 4px;      margin:50px auto;    }        #TA-con {      width: 157px;      height: 50px;      background-color: #f25d8e;      box-shadow: 0 4px 4px rgba(255, 112, 159, .3);      position: absolute;      top: 50%;      left: 5%;      transform: translateY(-50%);      border-radius: 4px;      cursor: pointer;    }        #text-con {      width: 100px;      height: 100%;      margin: 0 auto;      position: relative;    }        #linght {      width: 0;      height: 0;      position: absolute;      top: 36%;      left: 4px;      border-color: transparent;      border-style: solid;      border-width: 10px;      border-top: 10px solid #fff;      border-radius: 4px;      transform: rotate(-55deg);    }    #linght::after {      position: absolute;      top: -13px;      left: -11px;      content: "";      width: 0;      height: 0;      border-color: transparent;      border-style: solid;      border-width: 10px;      border-top: 10px solid #fff;      transform: rotate(180deg);      border-radius: 4px;    }        #TA {      float: right;      line-height: 50px;      font-size: 15px;      color: #fff;    }    #TA-con:hover {      background-color: #ff6b9a;    }        #tube-con {      width: 157px;      height: 55px;      position: absolute;      right: -5px;      top: 15px;    }        svg {      width: 100%;      height: 100%;    }        #mask {      width: 0px;      height: 100%;      overflow: hidden;      position: absolute;      top: 0;      left: 0;      transition:all 0.5s;    }        #mask svg {      width: 157px;      height: 55px;    }        #TA-con:hover+#tube-con>#mask{      width:157px;    }        #TA-con:hover+#tube-con>#orange-mask{      animation: move1 0.5s linear 0.2s infinite;    }    #TA-con:hover+#tube-con>#orange-mask svg{      animation: movetwo 0.5s linear 0.2s infinite;    }        #orange-mask{      width: 18px;      height: 100%;      overflow: hidden;      position:absolute;      left:-15px;      top:0px;    }        #orange-mask svg {      position: absolute;;      top:0;      left:15px;      width: 157px;      height: 55px;    }    @keyframes move1 {      0%{        left:-15px;      }      100%{        left:140px;      }    }    @keyframes movetwo {      0%{        left:15px;      }      100%{        left:-140px;      }    }    #people{      position:absolute;      right:10px;      top:8px;      font-size:12px;      font-family:"雅黑";      color:#aaa;    }    #people>b{      color:#777;    }  </style></head><body>  <div id="con">    <div id="TA-con">      <div id="text-con">        <div id="linght"></div>        <div id="TA">为TA充电</div>      </div>    </div>    <div id="tube-con">      <svg viewBox="0 0 1028 385" fill="none" xmlns="http://www.w3.org/2000/svg">        <path d="M1 77H234.226L307.006 24H790" stroke="#e5e9ef" stroke-width="20" />        <path d="M0 140H233.035L329.72 71H1028" stroke="#e5e9ef" stroke-width="20" />        <path d="M1 255H234.226L307.006 307H790" stroke="#e5e9ef" stroke-width="20" />        <path d="M0 305H233.035L329.72 375H1028" stroke="#e5e9ef" stroke-width="20" />        <rect y="186" width="236" height="24" fill="#e5e9ef" />        <ellipse cx="790" cy="25.5" rx="25" ry="25.5" fill="#e5e9ef" />        <circle r="14" transform="matrix(1 0 0 -1 790 25)" fill="white" />        <ellipse cx="790" cy="307.5" rx="25" ry="25.5" fill="#e5e9ef" />        <circle r="14" transform="matrix(1 0 0 -1 790 308)" fill="white" />      </svg>      <div id="mask">        <svg viewBox="0 0 1028 385" fill="none" xmlns="http://www.w3.org/2000/svg">          <path d="M1 77H234.226L307.006 24H790" stroke="#f25d8e" stroke-width="20" />          <path d="M0 140H233.035L329.72 71H1028" stroke="#f25d8e" stroke-width="20" />          <path d="M1 255H234.226L307.006 307H790" stroke="#f25d8e" stroke-width="20" />          <path d="M0 305H233.035L329.72 375H1028" stroke="#f25d8e" stroke-width="20" />          <rect y="186" width="236" height="24" fill="#f25d8e" />          <ellipse cx="790" cy="25.5" rx="25" ry="25.5" fill="#f25d8e" />          <circle r="14" transform="matrix(1 0 0 -1 790 25)" fill="white" />          <ellipse cx="790" cy="307.5" rx="25" ry="25.5" fill="#f25d8e" />          <circle r="14" transform="matrix(1 0 0 -1 790 308)" fill="white" />        </svg>      </div>      <div id="orange-mask" >        <svg viewBox="0 0 1028 385" fill="none" xmlns="http://www.w3.org/2000/svg">          <path d="M1 77H234.226L307.006 24H790" stroke="#ffd52b" stroke-width="20" />          <path d="M0 140H233.035L329.72 71H1028" stroke="#ffd52b" stroke-width="20" />          <path d="M1 255H234.226L307.006 307H790" stroke="#ffd52b" stroke-width="20" />          <path d="M0 305H233.035L329.72 375H1028" stroke="#ffd52b" stroke-width="20" />          <rect y="186" width="236" height="24" fill="#ffd52b" />          <ellipse cx="790" cy="25.5" rx="25" ry="25.5" fill="#ffd52b" />          <circle r="14" transform="matrix(1 0 0 -1 790 25)" fill="white" />          <ellipse cx="790" cy="307.5" rx="25" ry="25.5" fill="#ffd52b" />          <circle r="14" transform="matrix(1 0 0 -1 790 308)" fill="white" />        </svg>      </div>      <p id="people">共 <b>0</b> 人</p>    </div>  </div></body></html>

看完了这篇文章,相信你对“css+svg怎么实现b站充电效果”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: css+svg怎么实现b站充电效果

本文链接: https://www.lsjlt.com/news/251670.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • css+svg怎么实现b站充电效果
    小编给大家分享一下css+svg怎么实现b站充电效果,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!效果图: 难点svg图形的两块蒙版制作先上代码 这是左边粉色框框的内容这个没啥好说的<div id...
    99+
    2023-06-08
  • 如何使用CSS实现酷炫充电动画效果
    这篇文章给大家分享的是有关如何使用CSS实现酷炫充电动画效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。css是什么意思css是一种用来表现HTML或XML等文件样式的计算机语言,主要是用来设计网页的样式,使网...
    99+
    2023-06-14
  • HTML/css怎么实现文本液体填充效果
    本篇内容介绍了“HTML/css怎么实现文本液体填充效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!下面...
    99+
    2024-04-02
  • 怎么用DIV+CSS实现仿电商网站导航条效果
    本篇内容主要讲解“怎么用DIV+CSS实现仿电商网站导航条效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用DIV+CSS实现仿电商网站导航条效果”吧!这...
    99+
    2024-04-02
  • 纯CSS怎么实现水波纹的电池充电动画特效
    本篇内容主要讲解“纯CSS怎么实现水波纹的电池充电动画特效”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“纯CSS怎么实现水波纹的电池充电动画特效”吧!前置知识:...
    99+
    2024-04-02
  • 怎么利用SVG实现图片马赛克效果
    这篇文章主要讲解了“怎么利用SVG实现图片马赛克效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么利用SVG实现图片马赛克效果”吧!何为 image-r...
    99+
    2024-04-02
  • 怎么用html+css+div实现电影结束效果
    这篇文章主要介绍“怎么用html+css+div实现电影结束效果”,在日常操作中,相信很多人在怎么用html+css+div实现电影结束效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2024-04-02
  • Android Studio实现华为手机的充电动画效果
    目录效果图修改文件清单具体实现根据系统原有的无线充电动画流程,新增有线充电气泡动画。 效果图 修改文件清单 vendor/mediatek/proprietary/packa...
    99+
    2024-04-02
  • CSS怎么实现吸附效果
    这篇文章主要讲解了“CSS怎么实现吸附效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CSS怎么实现吸附效果”吧!原理在 jQuery 时代就有很多吸附效果插件了,现在常用的三大前端框架也...
    99+
    2023-06-27
  • css怎么实现隐藏效果
    这篇文章主要讲解了“css怎么实现隐藏效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“css怎么实现隐藏效果”吧!1.opacity:0只是把元素隐藏起来了 ,但是还是占有布局,所以还是对...
    99+
    2023-07-04
  • css阴影效果怎么实现
    这篇文章主要介绍“css阴影效果怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“css阴影效果怎么实现”文章能帮助大家解决问题。box-shadow属性可以设置一个或多个下拉阴影的框。CSS3...
    99+
    2023-07-04
  • CSS怎么实现斜线效果
    本篇内容主要讲解“CSS怎么实现斜线效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CSS怎么实现斜线效果”吧!我们假定我们的 HTML 结构如下:<div></div>...
    99+
    2023-07-04
  • CSS怎么实现阴影效果
    这篇文章给大家分享的是有关CSS怎么实现阴影效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。box-shadow:用来添加阴影。它有四个属性:横坐标偏移量(相对于元素的左上角定点);纵坐标偏移量(相对于元素的左...
    99+
    2023-06-27
  • css半圆效果怎么实现
    这篇“css半圆效果怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“css半圆效果怎么实现”文章吧。半圆半圆分为:上半...
    99+
    2023-07-04
  • 怎么用css实现圆形效果
    本篇内容主要讲解“怎么用css实现圆形效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用css实现圆形效果”吧! 在CSS3中,动画效果使用animat...
    99+
    2024-04-02
  • 怎么用css实现渐变效果
    这篇文章将为大家详细讲解有关怎么用css实现渐变效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。     一、css背景色渐变样式  ...
    99+
    2024-04-02
  • css怎么实现轮播图效果
    这篇文章主要介绍css怎么实现轮播图效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在css中,可以使用“@keyframes”规则和“animation”属性定义动画来实现轮播图切换效果。动画是使元素从一种样式逐...
    99+
    2023-06-14
  • 怎么用css实现滚动效果
    使用css实现滚动效果的方法:1.通过“overflow”属性设置滚动条使网页元素的内容实现滚动效果,在css中添加样式代码,比如语法样式为:“overflow: scroll;”设置滚动条即可。css通过overflow属性设置滚动条示例...
    99+
    2024-04-02
  • CSS中怎么实现三角效果
    这篇文章给大家介绍CSS中怎么实现三角效果,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。方法一:使用border来设置边框,元素有高度和宽度<i class="...
    99+
    2024-04-02
  • CSS怎么实现滑动门效果
    这篇文章主要为大家展示了“CSS怎么实现滑动门效果”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“CSS怎么实现滑动门效果”这篇文章吧。   滑动门效果的特点:...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作