CSS如何实现任意角度的扇形(代码示例)


本文摘自PHP中文网,作者不言,侵删。

本篇文章给大家带来的内容是关于CSS如何实现任意角度的扇形(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

扇形制作原理,底部一个纯色原形,里面2个相同颜色的半圆,可以是白色,内部半圆按一定角度变化,就可以产生出扇形效果

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

<html>

<head>

    <meta charset="UTF-8">

    <title>扇形绘制</title>

    <style>

    .shanxing{ position: relative; width: 200px; height: 200px; border-radius: 100px; background-color: yellow;

        }

        .sx1{ position: absolute; width: 200px; height: 200px; transform: rotate(0deg); clip: rect(0px,100px,200px,0px); /*这个clip属性用来绘制半圆,在clip的rect范围内的内容显示出来,使用clip属性,元素必须是absolute的 */ border-radius: 100px; background-color: #f00;

            /*-webkit-animation: an1 2s infinite linear; */

        }

        .sx2{ position: absolute; width: 200px; height: 200px; transform: rotate(0deg); clip: rect(0px,100px,200px,0px); border-radius: 100px; background-color: #f00;

            /*-webkit-animation: an2 2s infinite linear;*/

        }

        /*绘制一个60度扇形*/ .shanxing1 .sx1{transform: rotate(-30deg);} .shanxing1 .sx2{transform: rotate(-150deg);}

 

        /*绘制一个85度扇形*/ .shanxing2 .sx1{transform: rotate(-45deg);} .shanxing2 .sx2{transform: rotate(-140deg);}

 

        /*绘制一个向右扇形,90度扇形*/ .shanxing3 .sx1{transform: rotate(45deg);} .shanxing3 .sx2{transform: rotate(-45deg);}

 

        /*绘制一个颜色扇形 */ .shanxing4 .sx1{transform: rotate(45deg);background-color: #fff;} .shanxing4 .sx2{transform: rotate(-45deg);background-color: #fff;}

 

        /*绘制一个不同颜色半圆夹角 */ .shanxing5 .sx1{transform: rotate(45deg);background-color: #f00;} .shanxing5 .sx2{transform: rotate(-45deg);background-color: #0f0;}

</st

</head>

<body> 扇形制作原理,底部一个纯色原形,里面2个相同颜色的半圆,可以是白色,内部半圆按一定角度变化,就可以产生出扇形效果 <p>/绘制一个60度扇形/</p>

 

<div class="shanxing shanxing1">

    <div class="sx1"></div>

     <div class="sx2"></div>

</div>

<p>/*绘制一个85度扇形*/</p>

<div class="shanxing shanxing2">

    <div class="sx1"></div>

     <div class="sx2"></div>

</div>

<p>/*绘制一个向右扇形,90度扇形*/</p>

<div class="shanxing shanxing3">

    <div class="sx1"></div>

     <div class="sx2"></div>

</div>

<p>/*绘制一个颜色扇形 */</p>

<div class="shanxing shanxing4">

    <div class="sx1"></div>

     <div class="sx2"></div>

</div>

 

<p>/*绘制一个不同颜色半圆夹角 */</p>

<div class="shanxing shanxing5">

    <div class="sx1"></div>

     <div class="sx2"></div>

</div>

 

</body>

</html></pre>

下面这个是结合css+html5+javascript的一个更复杂的圆环图形

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%

String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <base href="<%=basePath%>">

 

    <title>circle</title>

 

    <style type="text/css"> #myCanvas{} #nihao{ position: absolute; top:10px; z-index: 1;

    }

    </style>

  </head>

<body style="background:#FBFBFB;">

 

<canvas id="myCanvas" width="300" height="150" style="border:1px solid #d3d3d3;"> not suopport canvas </canvas>

<div id="nihao"></div>

<script>

var text=document.getElementById("nihao");

text.innerHTML="woshiwuxinguo"; var i=0.9;//这里默认设置好评率为90%

 

var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d");

ctx.beginPath();

ctx.lineWidth=10;

ctx.strokeStyle="gray";

ctx.arc(100,75,50,0,2*Math.PI);

ctx.fillStyle="#FBFBFB";

ctx.fill();

ctx.stroke();

ctx.beginPath();

ctx.translate(100,75);

ctx.rotate(-90*Math.PI/180);

ctx.strokeStyle="#FFCFCF";

ctx.arc(0,0,50,0,2*Math.PI*i);

ctx.stroke();

c.addEventListener("mouseover", function(e) {

ctx.beginPath();

ctx.strokeStyle="gray";

ctx.arc(0,0,50,0,2*Math.PI);

ctx.stroke(); var finish=i; var step=0; var internal=setInterval(function(e) {

console.log("step:"+step); if(step<finish){

    step=step+0.01;

    ctx.beginPath();

    ctx.strokeStyle="#FFCFCF";

    ctx.arc(0,0,50,0,2*Math.PI*step);

    ctx.stroke();

    }else{

    clearInterval(internal);

    }

}, 0.5)

}, true) </script>

 

</body>

</html></pre>

以上就是CSS如何实现任意角度的扇形(代码示例)的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

不属于javascript的数据类型是什么

d3js怎么样

javascript中with的用法是什么

html页面自动清理js、css文件的缓存(自动添加版本号)_html/xhtml_网页制作

javascript求x平方怎么做

javascript主要有哪些数据类型

怎么使用javascript

javascript中什么是函数

正则表达式在javascript中怎么使用?

javascript怎么类型转换

更多相关阅读请进入《Github》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...