您现在的位置是:网站首页> 编程资料编程资料
2分钟教你实现环形/扇形菜单(基础版)CSS3 分类菜单效果CSS实现菜单按钮动画CSS导航条菜单之带小三角形的实现代码CSS多级菜单的实现代码css利用transform skewX制作平行四边形导航菜单CSS设置列表样式和创建导航菜单实现代码CSS中的导航栏和下拉菜单的实现HTML+CSS实现下拉菜单的实现纯CSS实现的大型下拉菜单的示例代码纯CSS实现可折叠树状菜单
2021-09-03
1273人已围观
简介 这篇文章主要介绍了2分钟教你实现环形/扇形菜单(基础版),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
前言
项目需要用到环形菜单,初略在网上找了一下,没有找到合适的,于是自己写了一个很简单的,后续再优化。
这个组件是基于react,但是原理都一样。
展开效果如下:

实现
css(less)
@centerIconSize: 30px; .flex(@justify: flex-start, @align: center) { justify-content: @justify; align-items: @align; display: flex; } .sector-menu-wrapper { position: relative; width: @centerIconSize; margin: auto; .center-icon { .flex(center); width: @centerIconSize; height: @centerIconSize; border-radius: 50%; background: rgba(0, 0, 0, 0.3); color: white; cursor: pointer; } .sector-item { position: absolute; .flex(center); width: @centerIconSize; height: @centerIconSize; border-radius: 50%; background: rgba(0, 0, 0, 0.3); cursor: pointer; color: white; top: 0; left: 0; transition: all linear 0.5s; transform: translate(0, 0); // display: none; visibility: hidden; } .sector-list { &.sector-list-active { transition: all linear 0.5s; .sector-item { .flex(center); transition: all linear 0.5s; transform: translate(0, 0); visibility: visible; &:first-child { transform: translate(0, -@centerIconSize * 1.5); } &:nth-child(2) { transform: translate(-@centerIconSize * 1.5, 0); } &:nth-child(3) { transform: translate(0, @centerIconSize * 1.5); } } } } } SectorMenu.js
import React from 'react'; export default class SectorMenu extends React.Component { state = { direction: 'left', sectorMenuVisible: false, centerIconSize: 30, sectorItemSize: 30, } /** * 显示环形菜单 */ showSectorMenu = () => { const { sectorMenuVisible } = this.state; this.setState({ sectorMenuVisible: !sectorMenuVisible, }) } onClickSectorMenuItem = (index) => { const { sectorMenuItemFunctions } = this.props; if (!sectorMenuItemFunctions || typeof(sectorMenuItemFunctions[index]) !== 'function') { return; } sectorMenuItemFunctions[index](); } getSectorJsx = () => { const { sectorMenuItems } = this.props; if (!sectorMenuItems || !Array.isArray(sectorMenuItems) || sectorMenuItems.length === 0) { return; } const styles = {}; const { sectorMenuVisible } = this.state; return sectorMenuItems.map((item, i) => { // const styles = { // transform: translate(0, -centerIconSize * 2); // }; return ( this.onClickSectorMenuItem(i)} key={i} > {item} ) }); } render() { const { sectorMenuVisible } = this.state; return ( { sectorMenuVisible ? 'x' : '···' } {this.getSectorJsx()} ) } } 调用
期望
本来是想写成灵活分布,在怎么计算位置这里稍稍卡了一下,项目时间紧,改天抽空优化一下
- 灵活布局sectorMenuItem
- 灵活展示SectorMenu的位置(left,right, top, bottom...)
踩坑
过渡动画一直没有用,后来才知道是我在sector-item这个类里使用了display:none导致的,改用visibility属性就可以了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
相关内容
- css3一个简易的 LED 数字时钟实现方法纯CSS3实现运行时钟的示例代码css3 利用transform打造走动的2D时钟利用CSS3 动画 绘画 圆形动态时钟CSS实现漂亮的时钟动画效果的实例代码
- 通过CSS边框实现三角形和箭头的实例代码CSS中三角形的绘制与巧妙应用实例详解纯CSS3+DIV实现小三角形边框效果的示例代码CSS3 SVG实现三角形场景图中的日落月出,飞鸟归林动画效果源码用CSS画一个带阴影的三角形的示例代码老生常谈 使用 CSS 实现三角形的技巧(多种方法)
- CSS像素以及移动端不同屏幕适配问题解决css列表滑动防止被底部遮住和适配屏幕长一点的机型处理 CSS3中媒体查询结合rem布局适配手机屏幕
- css实现悬浮客服效果css做个波浪悬浮球的实现方法css3实现的多种3d纸张鼠标悬浮特效源码
- Grid 宫格常用布局的实现解析CSS中的Grid布局完全指南10分钟理解CSS3 Grid布局css中grid属性的使用详解CSS Grid 网格布局全解析CSS Grid布局教程之网格单元格布局CSS Grid布局教程之浏览器开启CSS Grid Layout汇总CSS Grid布局教程之什么是网格布局使用CSS Grid布局实现网格的流动
- CSS实现粒子动态按钮效果基于CSS3实现的复选框和单选按钮美化的动态特效CSS3实现的各种形状的3D立体按钮鼠标滑过带有动态效果纯CSS3制作的超酷动态变色立体按钮效果基于CSS3的 漂亮的动态按钮代码
- CSS3 旋转立方体问题详解CSS3过渡旋转透视2d3d动画等效果的实例代码CSS3只让背景图片旋转180度的实现示例CSS3 菱形拼图实现只旋转div 背景图片不旋转功能
- 解决Img图片底部空白缝隙问题CSS Transition通过改变Height实现展开收起元素从QQtabBar看css命名规范BEM的详细介绍css实现两栏布局,左侧固定宽,右侧自适应的多种方法CSS 实现Chrome标签栏的技巧CSS实现两列布局的N种方法CSS实现隐藏搜索框功能(动画正反向序列)CSS3中Animation实现简单的手指点击动画的示例详解CSS中的特指度和层叠问题详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)关于CSS浮动与取消浮动的问题
- flex布局兼容性问题小结详解flex布局的元素如何分配容器的剩余空间flex布局被子元素撑开如何保持内容不超出容器的方法flex布局实现左侧文字溢出省略右侧文字自适应10分钟理解CSS3 FlexBox弹性布局详解flex实现左右布局中按钮溢出隐藏效果CSS3 Flex 弹性布局实例代码详解移动端优先的flex三栏布局的使用方法Flexbox 布局的最简单表单的实现css flex几种多列布局详解纯css实现瀑布流(multi-column多列及flex布局)
- css 元素显示隐藏的9种思路使用CSS隐藏元素滚动条的示例代码CATIA装配体中的所有参考元素怎么隐藏?CSS隐藏页面元素的5种方法CSS“隐藏”元素的多种方法的对比隐藏 Web 中的元素方法及优缺点教程详解
