扇形导航

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        body{background: #fff; margin: 0; }
        #wrap{background: #f0f0f0; width: 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>

效果展示:

时间: 2024-10-11 17:26:30

扇形导航的相关文章

扇形导航菜单

1.装bi界的一股清流,基本没什么用,反而把页面搞复杂了. 2.这些用法值得学习和借鉴. 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>CSS3扇形动画菜单</title> 6 <style> 7 *{padding: 0; margin: 0;} 8 body{background:#b1b1b1;margi

css3实现扇形导航,一个圆形加4个扇形

效果图: 主要实现过程: 1)4个Li元素,把他们的定位都设置未absolute. 2)改变li的旋转中心到右下角  transform-origin: 100% 100%; 4个对应旋转的角度为0,90,180,270deg 3)定位第五个li在中心 4)前面的4个li都往其所在角偏移10PX,以显示间隙 5)4个li里面的a标签设置渐变的背景色,让圆心位置的颜色设置为隐藏  background: -webkit-radial-gradient(right bottom, transpare

【免费下载】全套最新 003CSS3 视频教程+教学资料+学习课件+源代码+软件开发工具

003CSS3视频教程 网盘地址: 链接:https://pan.baidu.com/s/1InpHPtd7c-pw8E2Ddx9rZw 提取码:jgqh 加公众号 获取更多新教程 教程目录大纲 ./003CSS3 ├── css3-1 │?? ├── 01._css3_导学.wmv │?? ├── 02._css3_基本选择器及其扩展.wmv │?? ├── 03._css3_属性选择器.wmv │?? ├── 04._css3_伪类与伪元素选择器-链接伪类.wmv │?? ├── 05._c

用CSS变形创建圆形导航

在这个教程中,我会教你使用CSS变形制作圆形导航. 我会带你一步步地创建样式,讲解背后的数学知识和简单的逻辑,让你对这技术有清晰的认识. 正如我提到的,使用CSS变形创建样式,会用到相关的基础数学知识.但是不必担心, 用到的数学非常简单,我会带你一步步地客克服它. 我要指出原技术属于Ana Tudor.我把它修改成我想要效果,这也是我希望你的在教程结束时去做的:对这技术有深入而且清晰的认识,开始查阅资料并且构建自己的样式. 结构 我们要创建一个导航,因此我们会从常见的导航结构开始.我们需要一个d

canvas图形导航

对于用canvas绘制图形简单的导航方便绘制嘴贱单的图片: <!DOCTYPE html><html><head> <meta charset="utf-8" /> <title>HTML5 移动Web开发指南</title> <style type="text/css"> h1, h5 { text-align: center; } canvas { float: left; ma

Android 导航条效果实现(六) TabLayout+ViewPager+Fragment

TabLayout 一.继承结构 public class TabLayout extends HorizontalScrollView java.lang.Object ? android.view.View ? android.view.ViewGroup ? android.widget.FrameLayout ? android.widget.HorizontalScrollView ? android.support.design.widget.TabLayout 二.TabLayou

&lt;iOS 导航栏&gt;第一节:导航栏透明方法实现代码

说下导航栏的透明方法: 很多应用需要导航栏随着向上滑动,逐渐从透明变成不透明,很炫酷,大部分应用都在使用导航栏渐变效果,现附上代码然后直接将实现,一会讲下如何来实现,这一部分直接上代码. 先附上代码: 方法声明: #import <UIKit/UIKit.h> @interface IDSNavBarView : UIView - (instancetype)initWithFrame:(CGRect)frame titleImg:(UIImage *)aTitleImg; - (UILabe

第二百三十八节,Bootstrap输入框和导航组件

Bootstrap输入框和导航组件 学习要点: 1.输入框组件 2.导航组件 3.导航条组件 本节课我们主要学习一下Bootstrap的两个个组件功能:输入框组件和导航导航条组件. 一.输入框组件 文本输入框就是可以在<input>元素前后加上文字或按钮,可以实现对表单控件的扩展. 在左侧添加文字 input-group-addon样式class类,写在input同级的span里,给输入框添加一个左片段(Bootstrap)input-group样式class类,写在input外层div里,将

JS学习笔记(一): 使用原生JS 实现导航栏下多级分类弹出效果

在给静态页面静添加交互效果时遇到的问题 : 鼠标划入二级菜单时 一级菜单样 ":hover" 式无法保持 情景如下: 解决思路: 利用二级菜单的onmouseover/out事件 重新构建一级菜单 ".hover" 样式类 代码如下: CSS部分: 在原来的目标:hover样式中 增加 .hover状态 li.app_jd a:hover,li.app_jd a.hover{ background-position: -126px -397px; } li.serv