H5 实现蜂巢(六边形)导航,支持用户交互和动态添加,纯css实现无需布局计算

news2024/11/24 12:55:02

最近公司的项目出了版新的UI设计图,所以准备进行样式改版
而其中就有个导航要改成蜂巢(六边形)导航,当我看到时其实也挺迷糊的。

说一下我一开始的想法哈:
我一开始是打算使用背景颜色线性渐变 或者 用4个子元素覆盖4角 来实现 六边形的视觉效果
在这里插入图片描述
这种方法虽然也能实现,但要导航子项之间要有一定距离不然后一个元素会被前一个元素的边角遮盖。
如果仅仅只是展示而不需要用户交互效果则完全不用考虑这些问题,不过我这里的需要 “高亮” 和 “点击交互” 等效果,所以只能想其他方法。

最终发现使用css 的 clip-path 可以实现

下面是我今天一次次试错后,最后写出来的两个demo:

(今天花了丢时间随便写的,样式有点丑,客官不要介意)

dom结构一样

HTML:

<div style="background: #0d5593;height: 900px">
	<div class="menu">
		<div class="menu-cell" onclick="test('导航1')">
			<div class="menu-cell__title">导航1</div>
		</div>
		<div class="menu-cell" onclick="test('导航2')">
			<div class="menu-cell__title">导航2</div>
		</div>
		<div class="menu-cell" onclick="test('导航3')">
			<div class="menu-cell__title">导航3</div>
		</div>
		<div class="menu-cell" onclick="test('导航4')">
			<div class="menu-cell__title">导航4</div>
		</div>
		<div class="menu-cell" onclick="test('导航5')">
			<div class="menu-cell__title">导航5</div>
		</div>
	</div>
</div>

CSS 实现方案一:

.menu {
	max-width: 250px;
	margin: 0 auto;
}
.menu-cell {
	text-align: center;
	background: #3ea0eb;
	z-index: 1;
	-webkit-clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
	clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
	height: 175px;
	line-height: 175px;
	width: 150px;
	margin: 6px;
	overflow: hidden;
}
.menu-cell:hover{
	background: #0a7993;
	transition: background 350ms;
}

.menu-cell:nth-child(1) {
	transform: translate(0, calc(0 * 25%));
}

.menu-cell:nth-child(2) {
	transform: translate(50%, calc(-1 * 25%));
}

.menu-cell:nth-child(3) {
	transform: translate(0, calc(-2 * 25%));
}

.menu-cell:nth-child(4) {
	transform: translate(50%, calc(-3 * 25%));
}

.menu-cell:nth-child(5) {
	transform: translate(0, calc(-4 * 25%));
}

实现效果:
在这里插入图片描述

这种需要根据子项排序设置 “位置偏移样式”
可以通过js遍历动态设置 transform 的样式

CSS 实现方案二:

.menu {
    display: flex;
    flex-wrap: wrap;
    max-width: 250px;
    margin: 0 auto;
    padding: 30px 0;
  }
  .menu-cell {
    height: 88.5px;
    margin: 30px 0px 25px;
    position: relative;
    text-align: center;
    z-index: 1;
	width: 150px;
  }
  .menu-cell:nth-child(2n){
	  transform: translateX(calc(50% + 0.055*150px) );
  }
  .menu-cell::before {
    background: #0a7993;
    -webkit-transform: scale(1.055);
    transform: scale(1.055);
  }
  .menu-cell::after {
    background: #3ea0eb;
    opacity: 0.5;
    transition: opacity 350ms;
  }
  .menu-cell::before, .menu-cell::after {
    content: '';
  }
  .menu-cell:hover::after {
    opacity: 0.2;
  }
  .menu-cell::before, .menu-cell::after{
    top: -50%;
    left: 0;
    width: 100%;
    height: 200%;
    display: block;
    position: absolute;
    -webkit-clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
    clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
    z-index: -1;
  }

实现效果:
在这里插入图片描述

这种方法是 纯css实现无需布局计算

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/549523.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二、数据字典开发

文章目录 二、数据字典开发1、搭建service-cmn模块1.1 搭建service-cmn模块1.2 修改配置1.3 启动类 2、数据字典列表2.1 数据字典列表接口2.1.1 model模块添加数据字典实体2.1.2 添加数据字典mapper2.1.4 添加数据字典controller 2.2 数据字典列表前端2.2.1 添加路由2.2.2 定义…

centos 8 安装nacos2.0.3

去官网下载软件包 下载地址&#xff1a;https://github.com/alibaba/nacos/releases 上传到服务器指定位置&#xff0c;并解压 修改nacos存储为数据库 vi /xxx/nacos/conf/application.properties ## 在最后添加以下内容 spring.datasource.platformmysql db.num1 db.url.0j…

chatgpt赋能Python-pythonend

Pythonend – 一站式 Python SEO 工具 Pythonend 是一款基于 Python 的 SEO 工具&#xff0c;它为企业和个人提供了一站式的 SEO 解决方案。无论您是想要提高网站排名、监测关键词排名、分析竞争对手或进行网站优化&#xff0c;Pythonend 都可以帮助您解决这些问题。 Pythone…

【Linux】——进程信号

目录 信号入门 生活的角度 技术应用的角度 信号列表 信号处理常见方式概览 信号产生 通过终端按键产生信号 核心转储 调用系统函数向进程发信号 由软件条件产生信号 SIGPIPE信号 SIGALRM信号 硬件异常产生信号 阻塞信号 信号其他相关常见概念 内核中…

软件测试:测试用例

一、通用测试用例八要素  1、用例编号&#xff1b;   2、测试项目&#xff1b;   3、测试标题&#xff1b;   4、重要级别&#xff1b;   5、预置条件&#xff1b;   6、测试输入&#xff1b;   7、操作步骤&#xff1b;   8、预期输出 二、具体分析通用测试用…

红帽6.5进入单用户重置root密码

前言 ​一、重启Linux系统 二、按 “e” 键进入该界面 三、上下键选中第二个kernel选项&#xff0c;继续按 “e” 键进行编辑。 五、根据提示按下按键“b”&#xff0c;进入单用户模式引导 六、进入到单用户模式&#xff0c;修改密码 七、重启系统 八、进行登录 前言 大…

图片转excel表格,人工处理与OCR方案的优劣对比

随着信息化进程的发展&#xff0c;我们常常需要将图片文件中的表格信息转换成Excel表格文件&#xff0c;并进行后续数据处理和分析。对于这一需求&#xff0c;常用的解决方案有人工录入和OCR识别两种方式。本文将对这两种方案进行比较&#xff0c;评估其优劣。 一、人工做表并…

二、MongoDB入门

文章目录 一、MongoDB入门1、常用操作1.1 INSERT1.2 Query1.3 Update1.4 Remove1.5 aggregate1.5.1 插入数据1.5.2 统计sum1.5.3 常见的聚合表达式 1.6 索引 一、MongoDB入门 1、常用操作 1.1 INSERT > db.User.save({name:zhangsan,age:21,sex:true}) > db.User.find…

linux(inode)学习

目录&#xff1a; 1.认识磁盘结构 2.没有被打开的文件在磁盘里是怎么保存的 ------------------------------------------------------------------------------------------------------------------------------ 如果一个文件没有被打开&#xff0c;这个文件在哪里呢&#…

卡方检验.医学统计实例详解

卡方检验是一种常用的假设检验方法&#xff0c;通常用于分析两个或多个分类变量之间的关系。在医学研究中&#xff0c;卡方检验被广泛应用于分析两种或多种治疗方法的疗效&#xff0c;或者分析某种疾病的发病率与某些危险因素之间的关系。下面我们来看一个卡方检验在医学实例中…

虚幻商城模型转MetaHuman

一、导入虚幻商城的模型到UE 1.去虚幻商城下载一个人物模型,这里以SchoolGirl为例 2.导入UE,并找到模型,这里是SkeletalMesh 二、启动MetaHuman插件 1.通过Edit->Plugins启用MetaHuman和MetaHumanSDK插件,这里MetaHuman插件是用于创建MetaHuman的,MetaHumanSDK插件…

基于高效率IP路由查找的内容

访问【WRITE-BUG数字空间】_[内附完整源码和文档] 实现最基本的前缀树查找,调研并实现某种IP前缀查找方案,- 基于forwarding-table.txt数据集(Network, Prefix Length, Port) - 本实验只考虑静态数据集&#xff0c;不考虑表的添加或更新- 以前缀树查找结果为基准&#xff0c;检…

代码随想录算法训练营day46 | 139.单词拆分 ,多重背包,背包问题总结篇!

代码随想录算法训练营day46 | 139.单词拆分 &#xff0c;多重背包&#xff0c;背包问题总结篇&#xff01; 139.单词拆分解法一&#xff1a;动态规划&#xff08;不好想&#xff09;解法二&#xff1a;回溯记忆化 多重背包解法一&#xff1a;转化为01背包 背包问题总结递推公式…

软考中级数据库系统工程师-第6-7章 数据库技术基础关系数据库

1.数据库系统基本概念 1&#xff09;数据库系统(DBS)是一个采用了数据库技术&#xff0c;有组织地、动态地存储大量相关联数据&#xff0c;方便多用户访问的计算机系统。广义上来讲&#xff0c;DBS是由数据库、硬件、软件和人员组成。 2&#xff09;数据库(DB)&#xff1a;数…

centos 8 安装 jdk8

去官网下载RPM软件包 下载地址&#xff1a;https://www.oracle.com/java/technologies/downloads/#java8 上传到服务器指定路径&#xff0c;进行安装 rpm -ivh jdk-8u371-linux-x64.rpm 配置JAVA_HOME环境变量 查找jdk安装路径 java -verbose修改系统环境变量文件 vi /e…

软件工程还是网络安全专业好

这个问题需要根据个人的兴趣和职业规划来选择。 从兴趣方面来看&#xff0c;如果你对计算机系统的设计和开发更感兴趣&#xff0c;那么选择软件工程专业可能更适合你。如果你对计算机系统的安全性更感兴趣&#xff0c;那么选择网络安全专业可能更适合你。 从职业规划方面来看…

Kyligence 连续入选 Gartner 揭秘服务自助式分析的语义层报告

近日&#xff0c;全球权威的技术研究与咨询公司 Gartner 发布了《揭秘服务自助式分析的语义层》(Demystifying Semantic Layers for Self-Service Analytics) 研究报告。Kyligence 是国内唯一连续入选此报告的厂商&#xff0c;此前曾入选 Gartner 指标平台创新洞察报告、数据管…

Gitlab----Gitlab-runner简介

【原文链接】Gitlab----Gitlab-runner简介 gitlab-runner是用于执行GitlabCI/CD任务的工具&#xff0c;通俗点来说它就是用来执行gitlab上的CI/CD任务的机器&#xff0c;当然这里的机器是广义上的&#xff0c;它可以是物理机、虚拟机、Docker甚至是Kubernetes。 GitLab Runne…

分布式实战教程13:ruoyi-vue-pro开发指南

文章目录 前言一、入门必读1、简介2、项目地址3、技术选型&#xff08;1&#xff09;技术架构图&#xff08;2&#xff09;后端&#xff08;3&#xff09;前端 4、功能列表5、内置功能6、快速启动&#xff08;1&#xff09;克隆代码&#xff08;2&#xff09;Apifox 接口工具&a…