这里只是做下原理解释,原理:使用两个半圆做角度拼接。比如想绘制一个缺口朝右,缺口弧度30度角的扇形

资源网站搜索大全https://55wd.com

那么将由一个旋转65度角的半圆A+一个旋转-65度角的半圆B组合而成。代码:

  1. <style>
  2. .outer{
  3. position: absolute;
  4. width: 200px;
  5. height: 200px;
  6. transform: rotate(65deg);
  7. clip: rect(0px,100px,200px,0px);/* 这个clip属性用来绘制半圆,在clip的rect范围内的内容显示出来,使用clip属性,元素必须是absolute的 */
  8. border-radius: 100px;
  9. background-color: yellow;
  10. /*-webkit-animation: an1 2s infinite linear;*/
  11. }
  12. .pie{
  13. position: absolute;
  14. width: 200px;
  15. height: 200px;
  16. transform: rotate(-65deg);
  17. clip: rect(0px,100px,200px,0px);
  18. border-radius: 100px;
  19. background-color: yellow;
  20. /*-webkit-animation: an2 2s infinite linear;*/
  21. }
  22. </style>
  23.  
  24. <div></div>
  25. <div></div>

这样可以绘制0-360任意角度的扇形了。然后,我们要绘制一个会动的扇形,比如这个缺口一开一合,向贪吃蛇一样。css3提供了animation属性,本文只考虑chrome,因此只加了-webkit-animation,需要兼容的同学另行处理。

解开上面两个css中注释掉的部分:-webkit-animation,然后增加如下css:

  1. /**动画*/
  2. @-webkit-keyframes an1{
  3. % {transform: rotate(0deg);}
  4. %{transform: rotate(90deg);}
  5. %{transform: rotate(0deg);}
  6. }
  7. @-webkit-keyframes an2{
  8. % {transform: rotate(0deg);}
  9. %{transform: rotate(-90deg);}
  10. %{transform: rotate(0deg);}
  11. }

这样让A半圆在2秒内从0旋转到90在旋转到0,让B半圆在2秒内从0旋转到-90在旋转到0,刚好完成一次开闭的动作。

上面的半圆是通过clip产生的,假设我的场景是这个扇形的位置是变化的,比如贪吃蛇的场景,那么使用clip就不合适了。下面采取另外一种方法

  1. <style>
  2. .outer{
  3. position: absolute;
  4. width: 100px;
  5. height: 200px;
  6. border-radius: 100px 100px; /* 绘制半圆,采用只绘制左上角,左下角的方法,因此需要将宽度设置为高度的一半*/
  7. transform: rotate(0deg);
  8. transform-origin: % %;/* 这个很重要,需要设置旋转中心,默认旋转中心是元素的中间,但是我们绘制的是半圆,因此旋转中心应该是 100%宽度,50%高度*/
  9. background-color: yellow;
  10. -webkit-animation: an1 1s infinite linear;
  11. }
  12.  
  13. .pie{
  14. position: absolute;
  15. width: 100px;
  16. height: 200px;
  17. transform: rotate(0deg);
  18. transform-origin: % %;
  19. border-radius: 100px 100px;
  20. background-color: yellow;
  21. -webkit-animation: an2 1s infinite linear;
  22. }
  23.  
  24. /**动画*/
  25. @-webkit-keyframes an1{
  26. % {transform: rotate(0deg);}
  27. %{transform: rotate(90deg);}
  28. %{transform: rotate(0deg);}
  29. }
  30.  
  31. @-webkit-keyframes an2{
  32. % {transform: rotate(0deg);}
  33. %{transform: rotate(-90deg);}
  34. %{transform: rotate(0deg);}
  35. }
  36.  
  37. .ct{
  38. position: absolute;
  39. width: 200px;
  40. height: 200px;
  41. }
  42.  
  43. </style>
  44.  
  45. <div class="ct" id="ctx">
  46. <div class="outer"></div>
  47. <div class="pie"></div>
  48. </div>
  49.  
  50. <script type="text/javascript">
  51.  
  52. var left = ;
  53. var ctx = document.getElementById("ctx");
  54.  
  55. setInterval(function () {
  56. left+=;
  57. if(left>){
  58. left=;
  59. }
  60. ctx.style.left=left+"px";
  61. },);
  62. </script>

效果可以看到,一个会动的圆形在往右边一动,缺口一开一合。

大厂前端工程师教你如何使用css3绘制任意角度扇形+动画的更多相关文章

  1. 来自BAT大厂前端工程师的自白-怎么才能学好前端

    如果说理解学好web前端是先能找到一份工作,那么你应该这样做: 1.制定好一下系统的web前端学习规划,每天定量,学完什么知识点就掌握,能自己应用,而不是能看懂,写不出来东西. 2.不要自己一个人闷头 ...

  2. 分享9款用HTML5/CSS3制作的动物人物动画

    1.纯CSS3绘制可爱的蚱蜢 还有眨眼动画 今天我们要分享一个利用纯CSS3绘制的蚱蜢动画,非常可爱. 在线演示 源码下载 2.HTML5 Canvas头发飘逸动画 很酷的HTML5动画 HTML5 ...

  3. 7款纯CSS3实现的炫酷动画应用

    1.纯CSS3实现人物摇头动画 这次我们要来分享一款超级可爱的纯CSS3人物摇头动画,初始化的时候人物的各个部位是利用CSS3动画效果拼接而成,接下来就是人物听音乐的场景,一边听音乐一边摇着脑袋,十分 ...

  4. web前端工程师面试技巧 常见问题解答

    web前端工程师面试技巧 常见问题解答 每年的春招是各企业需求人才的黄金时期,不少的前端大牛或者前端新手在面试时候不知道怎么来回答面试官的问题,下面来看下我转载的这篇文章吧,希望对从事前端工作的你有所 ...

  5. (转)国内外优秀的Web前端工程师

    1. 国内外优秀的Web前端工程师 寻找Github.微博.知乎等技术社区上比较活跃.影响力大的圈内大神,供大家膜拜! 视野所限,未必全面,欢迎大家推荐.自荐. 排名不分先后,序号只为标记方便. 提供 ...

  6. 15分钟带你了解前端工程师必知的javascript设计模式(附详细思维导图和源码)

    15分钟带你了解前端工程师必知的javascript设计模式(附详细思维导图和源码) 前言 设计模式是一个程序员进阶高级的必备技巧,也是评判一个工程师工作经验和能力的试金石.设计模式是程序员多年工作经 ...

  7. 前端工程师手中的Sublime Text

    原文地址:http://css-tricks.com/sublime-text-front-end-developers/ 我的Blog:http://cabbit.me/sublime-text-f ...

  8. Web前端工程师成长之路——知识汇总

    一.何为Web前端工程师?          前端工程师,也叫Web前端开发工程师.他是随着web发展,细分出来的行业.Web前端开发工程师,主要职责是利用(X)HTML/CSS/JavaScript ...

  9. web前端工程师校园招聘要求

    小燕子对紫薇说:“这辈子也别想着进皇宫了”.可后来她们不但进了宫,还都当上了格格.你在想什么?走呗! 1.去哪了网 前端开发工程师 工作地点:北京 工作职责: 负责去哪儿网各产品线Web前端研发: 负 ...

随机推荐

  1. Java实现空瓶换汽水

    1 空瓶换汽水 浪费可耻,节约光荣.饮料店节日搞活动:不用付费,用3个某饮料的空瓶就可以换一瓶该饮料.刚好小明前两天买了2瓶该饮料喝完了,瓶子还在.他耍了个小聪明,向老板借了一个空瓶,凑成3个,换了一 ...

  2. github下载速度太慢,这里有已经下载完的nacos-server.zip组件

    nacos: 分布式系统微服务的注册中心和配置中心 .. 在微服务系统中,起到很重要的作用.小伙伴老是给我抱怨,说这个github下面很慢慢,半天下载不下来,所有这样呢,我就把已经下载好的 nacos ...

  3. EasyARM-iMX257 linxu两年前的笔记

    第三章续:简单总结第三章中出现的命令! 1)  root@EasyARM-iMX257 ~# ddif=/dev/zero of=/dev/shm/disk bs=1024 count=10240 d ...

  4. JS input输入框字数超出长度显示省略号.....

    样式添加: overflow:hidden; white-space:nowrap; text-overflow:ellipsis;

  5. 小程序-图片/文件本地缓存,减少CDN流量消耗

    写在前面 小程序网络图片读取: 在读取OSS图片CDN分发时流量大量消耗,导致资金费用增加. 网络图片比较大时,图片加载缓慢. 为了尽量减少上面两个问题,所以对已读的图片进行缓存处理,减少多次访问不必 ...

  6. CSS3如何实现div闪烁效果

    效果: Html: <h1 class="blink">花花世界</h1> Css: @keyframes fade { from { opacity: 1 ...

  7. php使用json_encode中遇见问题?

    注:php版本5.4下,不支持json_encode对中文的处理,要么升级php版本. json_encode($value,$options) 其中有2个比较常用到的参数: 1.JSON_UNESC ...

  8. @atcoder - ARC092F@ Two Faced Edges

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给出一个有向图,对每条边都做一次询问: 翻转这条边后,对原图的强 ...

  9. @atcoder - AGC034F@ RNG and XOR

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个值域在 [0, 2^N) 的随机数生成器,给定参数 A[ ...

  10. nodejs 换源

    解决npm install安装慢的问题国外镜像会很慢 可用 get命令查看registry npm config get registry 原版结果为 http://registry.npmjs.or ...