为了账号安全,请及时绑定邮箱和手机立即绑定

CSS3实现原型进度条效果

标签:
CSS3

今天早上在群里看到有同学问如何用 CSS3 实现以下效果?

http://wx3.sinaimg.cn/square/a5bab661ly1fi7qa45yhyj206a066mx5.jpg

一开始我觉得 CSS3 搞不出来这种效果的吧,主要是白色透明那个地方,后来灵机一动想到了渐变至透明色(不考虑兼容性的情况)应该是可以做出来的。如果你对 CSS3 比较熟悉的话,那么你应该对渐变效果 linear-gradient 也不陌生,不了解的同学可以去查阅文档

首先我们对这个结构进行一下拆分,看下图所示:

http://wx4.sinaimg.cn/square/a5bab661ly1fi7qcqtglaj20bu0b2aa6.jpg

有的同学一看到这张图就已经知道该怎么做了,对,就是用 border-radius + 遮罩。先用 border-radius 做一个圆出来,再加上线性渐变色,中间部分用伪类也做一个圆,定位过去盖上,于是就有了外面的空心圆,即下图所示:

http://wx4.sinaimg.cn/square/a5bab661ly1fi7qj2gg76j206i06ojrh.jpg

代码如下:

.box1 {
  width: 100px;
  height: 100px;
  position: relative;
  border-radius: 50%;
  background-image: linear-gradient(
    60deg,
    #f79533,
    #f37055,
    #ef4e7b,
    #a166ab,
    #5073b8,
    #1098ad,
    #07b39b,
    #6fba82);
  background-image: linear-gradient(
    60deg,
    #f79533,
    #f37055,
    #ef4e7b,
    #a166ab,
    #5073b8,
    #1098ad,
    #07b39b,
    #6fba82);
}
.box1:after {
  width: 90px;
  height: 90px;
  position: absolute;
  top: 5px;
  left: 5px;
  background-color: #fff;
  content: ' ';
  border-radius: 50%;
}
.box1:before {
  width: 50px;
  height: 50px;
  position: absolute;
  top: 50px;
  left: 50px;
  content: ' ';
  background-image: -webkit-linear-gradient(right top, white 60%, transparent);
  background-image:linear-gradient(right top, white 60%, transparent);
}

接下来就是最重要的一步了,用线性渐变画出遮罩层,直接上代码吧:

.box1:before {
  width: 50px;
  height: 50px;
  position: absolute;
  top: 50px;
  left: 50px;
  content: ' ';
  background-image: -webkit-linear-gradient(right top, white 60%, transparent);
  background-image:linear-gradient(right top, white 60%, transparent);
}

这样一来我们就实现了上面的效果,完整代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
    .box1 {
      width: 100px;
      height: 100px;
      position: relative;
      border-radius: 50%;
      background-image: linear-gradient(
        60deg,
        #f79533,
        #f37055,
        #ef4e7b,
        #a166ab,
        #5073b8,
        #1098ad,
        #07b39b,
        #6fba82);
      background-image: linear-gradient(
        60deg,
        #f79533,
        #f37055,
        #ef4e7b,
        #a166ab,
        #5073b8,
        #1098ad,
        #07b39b,
        #6fba82);
    }
    .box1:after {
      width: 90px;
      height: 90px;
      position: absolute;
      top: 5px;
      left: 5px;
      background-color: #fff;
      content: ' ';
      border-radius: 50%;
    }
    .box1:before {
      width: 50px;
      height: 50px;
      position: absolute;
      top: 50px;
      left: 50px;
      content: ' ';
      background-image: -webkit-linear-gradient(right top, white 60%, transparent);
      background-image:linear-gradient(right top, white 60%, transparent);
    }
  </style>
</head>
<body>
  <div class="box1">
  </div>
</body>
</html>

最终效果图:

http://wx2.sinaimg.cn/square/a5bab661ly1fi7qtlp5eij206s06mt8r.jpg

原文地址:点我

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
Web前端工程师
手记
粉丝
6
获赞与收藏
5

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消