zoukankan      html  css  js  c++  java
  • 扇形导航

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style>
            body{background: #fff; margin: 0; }
            #wrap{background: #f0f0f0; 400px; height: 400px;}
        </style>
        
        <script>
            window.onload = function(){
                var svgSN = "http://www.w3.org/2000/svg";
                var oWrap = document.getElementById("wrap");
                var oSvg = document.getElementById("svg1");
                function createTag(tag, objAttr){
                    var oTag = document.createElementNS(svgSN, tag);
                    for(var attr in objAttr){
                        oTag.setAttribute(attr, objAttr[attr]);
                    }
                    return oTag;
                }
                var outerXY = [{x: 20, y: 200}];
                var innerXY = [{x: 130, y: 200}];
                var centX = 200;
                var centY = 200;
                var outerR = 180;
                var innerR = 70;
                var angle = 360;
                var num = 6;
                var agSum = 0;
                for(var i=0; i<num; i++){
                    var agSum = 60;
                    var agNum = 60 * i;
                    agSum += agNum;
                    if(i == num-1){
                        agSum = 360;
                    }
                    var outerX = centX - Math.cos(agSum * Math.PI / 180) * outerR;
                    var outerY = centY - Math.sin(agSum * Math.PI / 180) * outerR;
                    outerXY.push({x: outerX, y: outerY});
                    
                    var innerX = centX - Math.cos(agSum * Math.PI / 180) * innerR;
                    var innerY = centY - Math.sin(agSum * Math.PI / 180) * innerR;
                    innerXY.push({x: innerX, y: innerY});
                }
                for(var i=0; i<num; i++){
                    if( i == outerXY.length-1){
                        break;
                    }
                    
                    var oPath = createTag('path', {'fill': '#fff', 'stroke-width': '30', 'stroke': '#f0f0f0', 'd': 'M' + outerXY[i].x + ' ' + outerXY[i].y + 'A' + outerR + ' ' + outerR + ' 0 0 1 ' + outerXY[i+1].x + ' ' + outerXY[i+1].y + 'L' + innerXY[i+1].x + ' ' + innerXY[i+1].y + 'A' + innerR + ' ' + innerR + ' 0 0 0 ' + innerXY[i].x + ' ' + innerXY[i].y + 'Z'});
                    oSvg.appendChild(oPath);
                }
                
                var oCircle = createTag('circle', {'cx': centX, 'cy': centY, 'r': innerR, 'fill': '#fff'});
                oSvg.appendChild(oCircle);
            }
        </script>
    </head>
    <body>
        <div id="wrap">
            <svg id="svg1" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%">
            </svg>
        </div>
    </body>
    </html>

    效果展示:

  • 相关阅读:
    [RN] React Native 使用 react-native-camera 过程中报错 Found react-native-camera 'mlkit' but wasn't required.`
    [RN] React Native 拍照、从相册选择、录像的实现
    10月14日站立会议
    第四周PSP &进度条
    课堂站立会议学习
    10月13号站立会议
    10月12号站立会议
    10月11号站立会议
    10月10号站立会议
    10月9号站立会议
  • 原文地址:https://www.cnblogs.com/jiechen/p/5003642.html
Copyright © 2011-2022 走看看