1、首先:

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>简单的径向菜单学习Project</title><link rel="stylesheet" href="indexCss.css"></head><body><div class="menu"><div class="toggle"></div><li style="--i:0;"><a href="#"></a></li><li style="--i:1;"><a href="#"></a></li><li style="--i:2;"><a href="#"></a></li><li style="--i:3;"><a href="#"></a></li><li style="--i:4;"><a href="#"></a></li><li style="--i:5;"><a href="#"></a></li><li style="--i:6;"><a href="#"></a></li><li style="--i:7;"><a href="#"></a></li></div></body>
</html>

的格式
2、ionicons
**ionicons官网**点击Usage找到Installation复制一段代码:

<script type="module" src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.esm.js"></script>
<script nomodule src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.js"></script>

之后代码就成:

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>简单的径向菜单学习Project</title><link rel="stylesheet" href="indexCss.css"></head><body><div class="menu"><div class="toggle"></div><li style="--i:0;"><a href="#"></a></li><li style="--i:1;"><a href="#"></a></li><li style="--i:2;"><a href="#"></a></li><li style="--i:3;"><a href="#"></a></li><li style="--i:4;"><a href="#"></a></li><li style="--i:5;"><a href="#"></a></li><li style="--i:6;"><a href="#"></a></li><li style="--i:7;"><a href="#"></a></li></div></body><script type="module" src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.esm.js"></script><script nomodule src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.js"></script>
</html>

之后在html添加ionicons官网提供的代码就行了:

<div class="toggle"><ion-icon name="add-outline"></ion-icon>
</div>


搜索homeusersettingsmailkeyvideogamecamera或者ph
为了省时间,就直接打出来了:

<body><div class="menu"><div class="toggle"><ion-icon name="add-outline"></ion-icon></div><li style="--i:0;"><a href="#"><ion-icon name="home-outline"></ion-icon></a></li><li style="--i:1;"><a href="#"><ion-icon name="person-outline"></ion-icon></a></li><li style="--i:2;"><a href="#"><ion-icon name="settings-outline"></ion-icon></a></li><li style="--i:3;"><a href="#"><ion-icon name="mail-outline"></ion-icon></a></li><li style="--i:4;"><a href="#"><ion-icon name="key-outline"></ion-icon></a></li><li style="--i:5;"><a href="#"><ion-icon name="videocam-outline"></ion-icon></a></li><li style="--i:6;"><a href="#"><ion-icon name="game-controller-outline"></ion-icon></a></li><li style="--i:7;"><a href="#"><ion-icon name="camera-outline"></ion-icon></a></li></div></body>

效果:


在创建一个indexCss.css文件存放我们的布局:

*{margin: 0;/*设置元素的4个外边距,默认值是0*/padding: 0;/*设置元素的4个内边距,默认值是0*/box-sizing: border-box;/*规定两个并排的带边框的框 *//*border-box: 为元素设定的宽度和高度决定了元素的边框盒。就是说,为元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制。通过从已设定的宽度和高度分别减去边框和内边距才能得到内容的宽度和高度。*/
}
body{display: flex;/*flex布局*/justify-content: center;/*Flex容器*/align-items: center;/*Flex容器*/min-height: 100vh;/*设置段落的最小高度*/background: linear-gradient(45deg,#8460ed,#ff1252);/*linear-gradient() 函数用于创建一个表示两种或多种颜色线性渐变的图片*/
}

效果:


menu元素:

.menu{position: relative;width: 200px;height: 200px;background: #0f0;display: flex;justify-content: center;align-items: center;
}


.menu li{position: absolute;list-style: none;
}


.toggle{position: absolute;/*绝对定位*/width: 60px;height: 60px;background: #fff;display: flex;justify-content: center;align-items: center;z-index: 1000;/*数字越大越在上面*/border-radius: 50%;/*50%:圆形*/cursor: pointer;/*鼠标变手指*/box-shadow: 0 0 4px rgba(0,0,0,0.15);/*阴影*/font-size: 2em;/*组件大小*/transition: 1.25s;/*动画效果时长为1.25s。只有添加transform才能看出来*/
}


toggle写一个改变状态的js

<script>let toggle = document.querySelector('.toggle');//获取元素let menu = document.querySelector('.menu');//获取元素toggle.onclick = function(){//onclick是按键的意思,这里是指按下的是toggle元素就执行方法menu.classList.toggle('active');//使menu反转,并class为'menu active'};</script>



这时我们添加menu active状态的css:

.menu.active .toggle{transform: rotate(315deg);/*rotate():让容器旋转*/
}

.menu:

.menu.active:


修改.menu li的css代码和添加一个.menu.active li的css:

.menu li{position: absolute;left: 0;list-style: none;transform-origin: 100px;transition: 0.5s;/*过度的动画效果*/transition-delay: calc(0.1s * var(--i));/*每个图进行延时*/
}
.menu.active li{transform: rotate(calc(360deg / 8 * var(--i)));/*主要*/
}

效果为:

.menu状态的:


.menu.active状态的:

修改 .menu 把绿色背景去掉:

.menu{position: relative;/*浮动定位*/width: 200px;height: 200px;display: flex;justify-content: center;align-items: center;
}

主要:在.menu li元素里面添加:

transform: rotate(0deg) translateX(100px);/*隐藏在'+'图标后面点击并向左移动100像素*/

效果为:



添加.menu li a的时候发现:

.menu li a{display: flex;justify-content: center;align-items: center;width: 40px;height: 40px;background: #fff;
}

所以修改.menu li里面的:

transform: rotate(0deg) translateX(80px);/*隐藏在'+'图标后面点击并向左移动100像素*/
}

再次修改.menu li a:

.menu li a{display: flex;justify-content: center;align-items: center;width: 40px;height: 40px;background: #fff;border-radius: 50%;/*弧度*/transform: rotate(calc(360deg / -8 * var(--i)));/*图片位置*/box-shadow: 0 3px 4px rgba(0, 0, 0, 0.15);/*阴影*/color: #111;/*颜色*/transition: 0.5s;
}

效果为:



添加鼠标移动到突变时发生颜色变化:

.menu li a:hover{color:#ff1252;
}

完成


最后我放上了所有源码在下面:
html

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>简单的径向菜单学习Project</title><link rel="stylesheet" href="indexCss.css"></head><body><div class="menu"><div class="toggle"><ion-icon name="add-outline"></ion-icon></div><li style="--i:0;"><a href="#"><ion-icon name="home-outline"></ion-icon></a></li><li style="--i:1;"><a href="#"><ion-icon name="person-outline"></ion-icon></a></li><li style="--i:2;"><a href="#"><ion-icon name="settings-outline"></ion-icon></a></li><li style="--i:3;"><a href="#"><ion-icon name="mail-outline"></ion-icon></a></li><li style="--i:4;"><a href="#"><ion-icon name="key-outline"></ion-icon></a></li><li style="--i:5;"><a href="#"><ion-icon name="videocam-outline"></ion-icon></a></li><li style="--i:6;"><a href="#"><ion-icon name="game-controller-outline"></ion-icon></a></li><li style="--i:7;"><a href="#"><ion-icon name="camera-outline"></ion-icon></a></li></div></body><script type="module" src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.esm.js"></script><script nomodule src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.js"></script><script>let toggle = document.querySelector('.toggle');//获取元素let menu = document.querySelector('.menu');//获取元素toggle.onclick = function(){//onclick是按键的意思,这里是指按下的是toggle元素就执行方法menu.classList.toggle('active');//使menu反转,并class为'menu active'};</script>
</html>

css

*{margin: 0;/*设置元素的4个外边距,默认值是0*/padding: 0;/*设置元素的4个内边距,默认值是0*/box-sizing: border-box;/*规定两个并排的带边框的框 *//*border-box: 为元素设定的宽度和高度决定了元素的边框盒。就是说,为元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制。通过从已设定的宽度和高度分别减去边框和内边距才能得到内容的宽度和高度。*/
}body{display: flex;/*flex布局*/justify-content: center;/*Flex容器*/align-items: center;/*Flex容器*/min-height: 100vh;/*设置段落的最小高度*/background: linear-gradient(45deg,#8460ed,#ff1252);/*linear-gradient() 函数用于创建一个表示两种或多种颜色线性渐变的图片*/
}.menu{position: relative;/*浮动定位*/width: 200px;height: 200px;display: flex;justify-content: center;align-items: center;
}
.menu li{position: absolute;left: 0;list-style: none;transform-origin: 100px;transition: 0.5s;/*过度的动画效果*/transition-delay: calc(0.1s * var(--i));/*每个图进行延时*/transform: rotate(0deg) translateX(80px);/*隐藏在'+'图标后面点击并向左移动100像素*/
}
.menu.active li{transform: rotate(calc(360deg / 8 * var(--i)));
}
.menu li a{display: flex;justify-content: center;align-items: center;width: 40px;height: 40px;background: #fff;border-radius: 50%;transform: rotate(calc(360deg / -8 * var(--i)));box-shadow: 0 3px 4px rgba(0, 0, 0, 0.15);color: #111;transition: 0.5s;
}
.menu li a:hover{color:#ff1252;
}.toggle{position: absolute;/*绝对定位*/width: 60px;height: 60px;background: #fff;display: flex;justify-content: center;align-items: center;z-index: 1000;/*数字越大越在上面*/border-radius: 50%;/*50%:圆形*/cursor: pointer;/*鼠标变手指*/box-shadow: 0 0 4px rgba(0,0,0,0.15);/*阴影*/font-size: 2em;/*组件大小*/transition: 1.25s;/*动画效果时长为1.25s。只有添加transform才能看出来*/
}.menu.active .toggle{transform: rotate(315deg);/*rotate():让容器旋转*/
}

css js 简单的径向菜单学习笔记相关推荐

  1. CSS+JS灰色树型菜单导航代码

    代码简介: CSS+JS打造的树型菜单,没有怎么美化,颜色看上去也不很美,提供一种思路,真想用的朋友好好修改一下颜色,里面都有注释,相信通过你的努力,它最终的效果一定很漂亮. 代码内容: <!D ...

  2. table固定列html5,css+js简单实现table固定首行首列

    说明: 使用easyui等都可以实现table固定首行首列的功能. 但仅仅只需要这一个功能,完全可以用css+js简单实现而不用引入更多工具. 网上找到很多的思路,自己对其中比较简单的一个进行了整理. ...

  3. 第一次预习作业(html,css,js简单介绍,HTML常用标签)

    目录 一.HTML,CSS,JS,简单介绍 1.HTML 2.CSS 3.JS 二.HTML常用标签 一.HTML,CSS,JS,简单介绍 1.HTML HTML 是用来描述网页的一种语言. HTML ...

  4. 下拉的DIV+CSS+JS二级树型菜单,刷新无影响

    二级菜单,不论展开几个栏目,刷新不影响! Code <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...

  5. DIV+CSS+JS二级树型菜单,刷新无影响

    二级菜单,不论展开几个栏目,刷新不影响! <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &qu ...

  6. css+js简单实现table固定首行首列

    说明: 使用easyui等都可以实现table固定首行首列的功能. 但仅仅只需要这一个功能,完全可以用css+js简单实现而不用引入更多工具. 网上找到很多的思路,自己对其中比较简单的一个进行了整理. ...

  7. css view a if属性,uni-app学习笔记(2)view属性控制css样式

    uni-app学习笔记(2)view属性控制css样式 uniapp通过标签属性来改变样式 当鼠标按下去的时候,他会变成这个样式 hover-class="box-active" ...

  8. HTML+CSS实现简单下拉菜单

    HTML+CSS实现下拉菜单 使用Html+css实现简单的下拉菜单 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transiti ...

  9. animate.css –齐全的CSS3动画库--- 学习笔记

    animate.css – 齐全的CSS3动画库 学习网站: https://daneden.github.io/animate.css/ http://www.dowebok.com/98.html ...

最新文章

  1. 你是否真的了解全局解析锁(GIL)
  2. MATLAB中 raw(,利用Photoshop + Matlab 解析10-bit RAW
  3. 【剑指offer-Java版】37两个链表的第一个公共结点
  4. 三十二、VsCode前端的开发工具介绍和使用
  5. 【数据结构与算法】之栈与队列的应用和操作
  6. 【JAVA面试】java面试题整理(4)
  7. Linux学习总结(41)——运维不仅仅是Linux
  8. jquery templates jQuery html模板
  9. 更换根目录linux命令,linux中怎么切换到根目录
  10. 整洁代码--写好注释
  11. 求长方形的周长和面积c语言两个函数_怎么用C语言编程设计“输入长方形的长和宽,求长方形的面积”的程序...
  12. javacpp-opencv图像处理系列:国内车辆牌照检测识别系统(万份测试准确率79.7%以上)
  13. oracle中begin end的作用,如何在SQL * Plus中使用begin/end运行Oracle查询?
  14. 用C#下的Raw Socket编程实现网络封包监视(摘录)
  15. 挑战程序设计竞赛——详解DFS及BFS
  16. 阿里云,腾讯云,景安等谁家的备案流程比较简单?
  17. 苹果员工薪酬单:苹果人都挣多少钱?
  18. 信息机房双核与双路服务器的区别,双路和双核的区别 - 卡饭网
  19. 分层网络有哪些最新发表的毕业论文呢?
  20. ACE_TAO 014 ACE_Event_Handler

热门文章

  1. android 属性动画伸缩,Android动画开发——Animation动画效果详解
  2. 实现一个文字识别(图片转文字)工具
  3. krita 填充图层
  4. 多人共享的待办事项app有哪些
  5. S32k Flexcan 手写驱动,不使用SDK
  6. GEE:批量下载数据,按月合成,不同景,全实验区域,一键执行
  7. 多元线性回归方程原理及其推导
  8. 微服务商城系统(十五)秒杀基础
  9. SQL in 模糊查询的问题
  10. DTI在早期脑发育研究中的应用