iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >css中实现环形/扇形菜单的方法
  • 559
分享到

css中实现环形/扇形菜单的方法

2023-06-08 05:06:20 559人浏览 泡泡鱼
摘要

这篇文章主要介绍了CSS中实现环形/扇形菜单的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言 项目需要用到环形菜单,初略在网上找了一下,没有找到合适的,于是

这篇文章主要介绍了CSS中实现环形/扇形菜单的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

前言
 

项目需要用到环形菜单,初略在网上找了一下,没有找到合适的,于是自己写了一个很简单的,后续再优化

这个组件是基于React,但是原理都一样。

展开效果如下:
 

css中实现环形/扇形菜单的方法

实现

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 (<div                className={`sector-item ${sectorMenuVisible && 'sector-item-active'}`}                style={styles}                onClick={() => this.onClickSectorMenuItem(i)}                key={i}            >                {item}            </div>)        });    }    render() {        const { sectorMenuVisible } = this.state;        return (            <div className="sector-menu-wrapper">                <div className="center-icon" onClick={this.showSectorMenu}>                    {                        sectorMenuVisible ? 'x' : '&middot;&middot;&middot;'                    }                </div>                <div className={`sector-list ${sectorMenuVisible && 'sector-list-active'}`}>                    {this.getSectorJsx()}                </div>            </div>        )    }}

调用
 

<SectorMenu    sectorMenuItems={['A1', 'A2', 'A3']}    sectorMenuItemFunctions={[function () {console.log(0)}, function () {console.log(1)}, function () {console.log(2)}]}/>

期望
 

本来是想写成灵活分布,在怎么计算位置这里稍稍卡了一下,项目时间紧,改天抽空优化一下

  1. 灵活布局sectorMenuItem

  2. 灵活展示SectorMenu的位置(left,right, top, bottom...)

踩坑

过渡动画一直没有用,后来才知道是我在sector-item这个类里使用了display:none导致的,改用visibility属性就可以了。

感谢你能够认真阅读完这篇文章,希望小编分享的“css中实现环形/扇形菜单的方法”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: css中实现环形/扇形菜单的方法

本文链接: https://www.lsjlt.com/news/251875.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • css中实现环形/扇形菜单的方法
    这篇文章主要介绍了css中实现环形/扇形菜单的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言 项目需要用到环形菜单,初略在网上找了一下,没有找到合适的,于是...
    99+
    2023-06-08
  • 如何使用css实现扇形菜单
    这篇文章主要介绍如何使用css实现扇形菜单,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!<!DOCTYPE html><html><head>&l...
    99+
    2024-04-02
  • 怎么用CSS3实现好看的扇形菜单
    本篇内容介绍了“怎么用CSS3实现好看的扇形菜单”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • 纯CSS3如何实现扇形动画菜单
    这篇文章将为大家详细讲解有关纯CSS3如何实现扇形动画菜单,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。简化版完整实例<!DOCTYPE html>...
    99+
    2024-04-02
  • Qt5中QML自定义环形菜单/环形选择框的实现
    Qt5 中本身提供了扇形菜单 PieMenu,属于 QtQuick.Extras 模块,这个模块是拓展自 QtQuick.Control1 的,QtQuick.Control1 在 ...
    99+
    2024-04-02
  • WPF实现环(圆)形菜单的示例代码
    目录前言 实现代码1.CircularMenuItemCustomControl.cs2.CircularMenuItemCustomControlStyle.xaml3....
    99+
    2024-04-02
  • java中怎么实现树形菜单
    在Java中实现树形菜单可以使用树形数据结构来存储菜单项,然后通过递归的方式来构建树形菜单。 以下是一个简单的示例代码实现树形菜单:...
    99+
    2024-03-13
    java
  • Android 带有弹出收缩动画的扇形菜单实例
    最近试着做了个Android 带有弹出收缩动画的扇形菜单,留个笔记记录一下。效果如下public class MainActivity extends AppCompatActivity implements View.OnClickLis...
    99+
    2023-05-31
    android 扇形 弹出
  • 怎么用纯css3实现的环形导航菜单
    本篇内容介绍了“怎么用纯css3实现的环形导航菜单”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  之前为...
    99+
    2024-04-02
  • Qt5中QML如何自定义环形菜单/环形选择框
    这篇“Qt5中QML如何自定义环形菜单/环形选择框”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Qt5中QML如何自定义环形...
    99+
    2023-06-29
  • java实现遍历树形菜单的方法有哪些
    这篇文章将为大家详细讲解有关java实现遍历树形菜单的方法有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体如下。OpenSessionView实现:package org.web;imp...
    99+
    2023-05-30
    java
  • java实现树形菜单对象
    本文实例为大家分享了java实现树形菜单对象的具体代码,供大家参考,具体内容如下 1、SysMenu package com.zy.shiro.domain; import c...
    99+
    2024-04-02
  • 基于Android实现可滚动的环形菜单效果
    效果 首先看一下实现的效果: 可以看出,环形菜单的实现有点类似于滚轮效果,滚轮效果比较常见,比如在设置时间的时候就经常会用到滚轮的效果。那么其实通过环形菜单的表现可以将其看作是一个...
    99+
    2024-04-02
  • css实现多边形的方法
    这篇文章主要介绍“css实现多边形的方法”,在日常操作中,相信很多人在css实现多边形的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”css实现多边形的方法”的疑惑有所帮...
    99+
    2024-04-02
  • Android实现圆形菜单悬浮窗
    序言 Android悬浮窗的实现,主要有四个步骤: 1. 声明及申请权限2. 构建悬浮窗需要的控件3. 将控件添加到WindowManager4. 必要时更新WindowManage...
    99+
    2024-04-02
  • ASP.NET MVC实现树形导航菜单
    在需要处理很多分类以及导航的时候,树形导航菜单就比较适合。例如在汽车之家上: 页面主要分两部分,左边是导航菜单,右边显示对应的内容。现在,我们就在ASP.NET MVC 4 下临摹...
    99+
    2024-04-02
  • JAVA递归生成树形菜单的实现方法是什么
    今天小编给大家分享一下JAVA递归生成树形菜单的实现方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。  递归生成一个...
    99+
    2023-06-26
  • CSS怎么实现菱形导航菜单效果代码
    这篇文章主要介绍“CSS怎么实现菱形导航菜单效果代码”,在日常操作中,相信很多人在CSS怎么实现菱形导航菜单效果代码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”CSS怎么实...
    99+
    2024-04-02
  • CSS布局技巧:实现圆形导航菜单的最佳实践
    在现代网页设计中,导航菜单是一个很重要的元素。为了提升用户体验和视觉吸引力,许多设计师选择使用圆形导航菜单。本文将介绍如何使用CSS实现圆形导航菜单的最佳实践,并提供具体的代码示例。使用HTML创建导航菜单的基本结构首先,我们需要使用HTM...
    99+
    2023-10-21
    最佳实践 CSS布局 圆形导航
  • EasyUI如何实现树形功能菜单
    这篇文章给大家分享的是有关EasyUI如何实现树形功能菜单的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。页面展示截图如下:为了实现以上效果,在开始前必须先将环境配置一下。第一步:...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作