当前位置:Web前端 > > 正文

css画三角形几种方法(利用CSS绘制任意角度的扇形示例代码)

时间:2022-03-31 19:13:50类别:Web前端

css画三角形几种方法

利用CSS绘制任意角度的扇形示例代码

前言

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

效果图

css画三角形几种方法(利用CSS绘制任意角度的扇形示例代码)

示例代码:

  • <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;}
    </style>
    </head>
    <body> 扇形制作原理,底部一个纯色原形,里面2个相同颜色的半圆,可以是白色,内部半圆按一定角度变化,就可以产生出扇形效果 <p>/绘制一个60度扇形/</p>
    
    <li class="shanxing shanxing1">
        <li class="sx1"></li>
         <li class="sx2"></li>
    </li>
    <p>/*绘制一个85度扇形*/</p>
    <li class="shanxing shanxing2">
        <li class="sx1"></li>
         <li class="sx2"></li>
    </li>
    <p>/*绘制一个向右扇形,90度扇形*/</p>
    <li class="shanxing shanxing3">
        <li class="sx1"></li>
         <li class="sx2"></li>
    </li>
    <p>/*绘制一个颜色扇形 */</p>
    <li class="shanxing shanxing4">
        <li class="sx1"></li>
         <li class="sx2"></li>
    </li>
    
    <p>/*绘制一个不同颜色半圆夹角 */</p>
    <li class="shanxing shanxing5">
        <li class="sx1"></li>
         <li class="sx2"></li>
    </li>
    
    </body> 
    </html>
    
  • 下面这个是结合css+html5+javascript的一个更复杂的圆环图形

  • <%@ 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>
    <li id="nihao"></li>
    <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>
    
  • 总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对开心学习网的支持。

    标签:
    上一篇下一篇

    猜您喜欢

    热门推荐