CSS圆形菜单数字环绕布局实现与优化

CSS圆形菜单数字环绕布局实现与优化

本教程详细介绍了如何使用css优化圆形菜单,解决数字元素定位不准确的问题。通过引入额外的html包装器和精确调整css的定位及`transform`属性,特别是`translate`值,实现数字在圆形菜单周围的完美环绕布局,提升用户界面的视觉效果和交互体验。

在现代Web界面设计中,环形菜单因其独特的视觉效果和交互方式而受到青睐。然而,在实现这类复杂布局时,如何精确地将数字或其他辅助元素环绕在中心菜单周围,同时保持它们与中心的距离和正确的旋转角度,是一个常见的技术挑战。本文将深入探讨如何通过优化HTML结构和精细调整CSS属性,特别是transform中的translate,来解决数字定位不准确的问题,从而实现一个美观且功能完善的圆形菜单。

1. HTML结构优化

为了更好地控制环形菜单及其周围数字的布局和居中,我们首先需要对原有的HTML结构进行一些调整。核心思想是引入额外的包装器(wrapper)元素,将不同的组件(主按钮、菜单项、数字环)封装起来,以便更独立地进行定位和样式控制。

关键结构变化:

cn-button-wrapper: 新增的div,用于包装主按钮(.cn-button)。这有助于将主按钮独立居中,而不受其他元素定位的影响。circle-wrapper-outer: 新增的div,用于包装整个数字环(.circle-wrapper)。通过这个外部包装器,我们可以精确控制数字环相对于整个组件的位置。.circle 元素的类名更新: 为了与修改后的transform属性对应,原有的.deg-X类被更新为.deg-X-new。

以下是优化后的HTML结构示例:

立即学习“前端免费学习笔记(深入)”;

2. CSS样式调整详解

结构优化后,我们需要对CSS进行相应的调整,以实现精确的布局和定位。

2.1 整体布局与居中

首先,调整主容器和按钮的居中方式。

.component {  position: relative;  margin-bottom: 3em;  height: 15em;  display: flex; /* 使用Flexbox进行水平居中 */  justify-content: center; /* 将内容水平居中 */}.cn-button-wrapper { /* 新增的按钮包装器 */  width: 100%;  height: calc(34rem + 250px); /* 调整高度以适应布局 */  display: flex;  justify-content: center;  align-items: center; /* 垂直居中按钮 */  margin-left: 15px; /* 微调位置 */}.cn-button {  position: absolute; /* 保持绝对定位 */  /* 移除原有的 top, left, margin-top, margin-left,让包装器控制其位置 */  z-index: 11;  padding: 0;  width: 8em;  height: 8em;  border: none;  border-radius: 50%;  background-color: #004691;  color: #5f259f;  text-align: center;  font-weight: 700;  font-size: 1em;  text-transform: uppercase;  cursor: pointer;  -webkit-backface-visibility: hidden;  border: 6px solid #fff;}

.component 使用 display: flex 和 justify-content: center 将其内容(包括新引入的包装器)水平居中。.cn-button-wrapper 同样使用 Flexbox 来居中其内部的 .cn-button,并设置了特定的高度和左边距进行微调。.cn-button 移除了原有的 top 和 left 属性,使其位置由父级 .cn-button-wrapper 控制,实现更好的居中。

2.2 环形菜单与数字环的定位

接下来,调整环形菜单主体和数字环的位置。

.csstransforms .cn-wrapper {  position: absolute; /* 保持绝对定位 */  /* 移除原有的 top, left, margin-top, margin-left */  z-index: 10;  top: 100px; /* 设置距离顶部的偏移量 */  width: 34em;  height: 34em;  border-radius: 50%;  font-weight: bold;  background: transparent;  -webkit-transition: all 0.3s ease 0.3s;  -moz-transition: all 0.3s ease 0.3s;  transition: all 0.3s ease 0.3s;  -webkit-transform: scale(0.1);  -ms-transform: scale(0.1);  -moz-transform: scale(0.1);  transform: scale(0.1);  pointer-events: none;  overflow: hidden;}.circle-wrapper-outer { /* 新增的数字环外部包装器 */  width: 100%;  position: absolute;  top: 100px; /* 使数字环与菜单主体在垂直方向上对齐 */}.circle-wrapper {  width: 34rem; /* 设置明确的宽度,与菜单主体尺寸匹配 */  height: 34rem; /* 设置明确的高度 */  border-radius: 50%;  position: relative;  transform: rotate(23deg);  margin-left: auto;  /* 水平居中 */  margin-right: auto; /* 水平居中 */  top: 0;  /* 相对于父级包装器顶部的偏移 */}

.cn-wrapper 移除了原有的 top、left 和 margin 属性,改为通过 top: 100px 进行垂直定位。.circle-wrapper-outer 采用绝对定位,并设置 top: 100px,使其与 .cn-wrapper 在垂直方向上对齐。.circle-wrapper 设置了明确的 width 和 height 以匹配菜单主体的大小,并使用 margin-left: auto; margin-right: auto; 实现水平居中。top: 0 确保它在其外部包装器内顶部对齐。

2.3 数字的精确径向定位

这是实现数字环绕布局的关键步骤。数字的定位依赖于CSS transform属性,特别是 rotate 和 translate 的组合。

.circle {  display: block;  position: absolute;  top: 54%;  left: 54%;  width: 50px;  height: 50px;  margin: -48px -48px -48px -53px;  background: red;  border-radius: 51%;  text-align: center;  line-height: 50px;}/* 新增的数字定位类,调整了 translate 值 */.deg-0-new {  transform: rotate(45deg) translate(325px) rotate(-65deg); /* 增加 translate 值 */  background: #5ede29;  color: white;  font-weight: 600;}.deg-45-new {  transform: rotate(90deg) translate(325px) rotate(-110deg); /* 增加 translate 值 */  background: #ffe816;  color: white;  font-weight: 600;}.deg-90-new {  transform: rotate(135deg) translate(325px) rotate(-158deg); /* 增加 translate 值 */  background: #f74015;  color: white;  font-weight: 600;}.deg-135-new {  transform: rotate(180deg) translate(325px) rotate(-200deg); /* 增加 translate 值 */  background: #54bef8;  color: white;  font-weight: 600;}.deg-180-new {  transform: rotate(225deg) translate(305px) rotate(-248deg); /* 微调 translate 值 */  background: #5ede29;  color: white;  font-weight: 600;}.deg-225-new {  transform: rotate(270deg) translate(305px) rotate(-289deg); /* 微调 translate 值 */  background: #ffe816;  color: white;  font-weight: 600;}.deg-270-new {  transform: rotate(315deg) translate(315px) rotate(-338deg); /* 微调 translate 值 */  background: #f74015;  color: white;  font-weight: 600;}.deg-315-new {  background: #54bef8;  transform: rotate(360deg) translate(325px) rotate(-380deg); /* 增加 translate 值 */  color: white;  font-weight: 600;}

transform: rotate(Adeg) translate(Bpx) rotate(Cdeg):第一个 rotate(Adeg) 将数字元素围绕其父级(.circle-wrapper)的中心旋转到期望的起始角度。translate(Bpx) 沿着当前旋转后的X轴(或Y轴,取决于上下文)将元素平移 B 像素,这决定了数字与中心菜单的径向距离。第二个 rotate(Cdeg) 是对数字元素自身进行反向旋转,以抵消第一个 rotate 对元素内容方向的影响,确保数字文本保持水平或期望的朝向。translate 值的重要性:原有的 .deg-X 类中 translate 值(例如 251px)不足以将数字推到环形菜单的外部。通过引入新的 .deg-X-new 类,我们将 translate 值增加到 325px 或 305px(根据不同角度进行微调),从而使数字被推到更远的径向位置,实现环绕效果。请注意,deg-180-new、deg-225-new 和 deg-270-new 使用了略小的 translate 值(305px 或 315px),这表明在实际布局中,可能需要根据视觉效果对每个元素的 translate 值进行细致的微调。

3. 完整代码示例

将以上所有修改整合后,得到以下完整的CSS和HTML代码。

3.1 完整CSS代码

.component {  position: relative;  margin-bottom: 3em;  height: 15em;  display: flex; /* Added for centering */  justify-content: center; /* Added for centering */}.cn-button-wrapper { /* Added wrapper for centering button */  width: 100%;  height: calc(34rem + 250px);  display: flex;  justify-content: center;  align-items: center;  margin-left: 15px;}.cn-button {  position: absolute;  /* Removed original top, left, margin-top, margin-left */  z-index: 11;  padding: 0;  width: 8em;  height: 8em;  border: none;  border-radius: 50%;  background: none;  background-color: #004691;  color: #5f259f;  text-align: center;  font-

logo

以上就是CSS圆形菜单数字环绕布局实现与优化的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1596649.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
在Vanilla JavaScript中动态创建与操作SVG:从XML到DOM
上一篇 2025年12月23日 11:21:15
使用R语言与stringr包从HTML字符串中提取结构化信息
下一篇 2025年12月23日 11:21:27

相关推荐

  • 为什么macOS系统被认为比Windows更少受到病毒和恶意软件的困扰?

    macOS受病毒困扰较少因用户基数小、系统架构安全、生态封闭及用户习惯好,但威胁正随市场份额增长而增加。 macOS系统相对较少受到病毒和恶意软件的困扰,这背后有多重因素共同作用,并非单一原因。虽然近年来针对Mac的威胁确实在增加,但整体感染率仍低于Windows平台。 用户基数与攻击目标 黑客开发…

    2026年9月23日
    700
  • VSCode搭建Angular开发环境(企业级前端,配置详解)

    企业级angular开发环境中,vscode必不可少的扩展包括angular language service、prettier、eslint、debugger for chrome/edge、path intellisense、gitlens和sonarlint,关键配置优化包括启用保存时自动格式…

    2026年9月23日
    500
  • 漫蛙漫画(在线入口)防失效 漫蛙漫画官网地址(网页版)更新

    漫蛙漫画最新官网地址为https://manwa.me,备用镜像站为https://fuwt.cc/mw666,平台支持免登录访问、多设备适配及高清流畅阅读体验。 漫蛙漫画在线入口防失效最新官网地址在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来漫蛙漫画网页版官网更新后的地址信息,感兴趣的…

    2026年9月23日
    100
  • 森海塞尔MOMENTUM 4 Wireless对决B&W Px8:高端头戴式无线耳机的音质与设计美学,谁更能取悦发烧友的耳朵?

    森海塞尔MOMENTUM 4 Wireless以精准音质、舒适佩戴和全面功能见长,适合追求高保真还原与实用性的用户;B&W Px8则凭借华丽声底、奢华设计和沉浸听感,吸引注重情感表达与品味象征的发烧友。 面对森海塞尔MOMENTUM 4 Wireless和B&W Px8这两款高端头戴…

    2026年9月23日
    300
  • HTML中无法链接本地脚本源的问题解析与解决方案

    本文旨在解决在本地HTML文件中无法正确链接JavaScript脚本的问题,尤其是在使用p5.js等库时。我们将探讨常见原因,并提供无需Web服务器即可成功运行HTML、JavaScript和CSS代码的有效方法。通过修改HTML结构,确保脚本正确加载和执行,从而避免页面无法渲染的情况。 在本地开发…

    2026年9月23日
    1100
  • Java中利用正则表达式从JSON数组中提取独立JSON对象

    本文详细介绍了如何利用Java正则表达式从格式化的JSON数组中提取独立的JSON对象字符串。通过一个具体的代码示例,文章展示了如何构建一个精确的正则表达式模式来匹配并分离数组中的每个JSON实体,并提供了Java代码实现,包括去除多余空白字符的步骤,最终实现将JSON数组解析为可操作的独立对象字符…

    2026年9月23日
    100
  • 微星Z790 GODLIKE对决华硕ROG MAXIMUS Z790 HERO:旗舰主板的供电与超频潜力,谁才是超频玩家的梦幻舞台?

    微星Z790 GODLIKE供电更强、内存超频潜力更高,扩展性全面领先,适合追求极限性能的用户;华硕ROG MAXIMUS Z790 HERO性能顶尖且功能均衡,更适合高端实用主义者。 选旗舰主板,核心是看供电和超频潜力。微星MEG Z790 GODLIKE和华硕ROG MAXIMUS Z790 H…

    2026年9月23日
    200
  • PrestaShop分类描述在分页时隐藏的机制与SEO考量

    本教程探讨PrestaShop商店中分类描述在分页时消失的现象。我们将解释为何在访问第二页或后续页面时,分类描述不再显示,甚至在返回第一页后也可能消失。文章将从技术实现和搜索引擎优化(SEO)的角度分析这一行为,强调其通常并非问题,并提供专业见解。 PrestaShop分类描述分页行为解析 在pre…

    2026年9月23日
    100
  • CodeIgniter 4 API:捕获并返回HTTP响应中的错误

    在使用CodeIgniter 4构建API服务时,我们经常需要处理各种异常情况。默认情况下,CodeIgniter 4会将错误信息记录到日志文件中,但不会直接将其返回到HTTP响应中。这导致我们需要频繁地查看日志文件来排查问题,效率较低。为了解决这个问题,我们可以通过修改配置文件,将错误信息直接暴露…

    2026年9月23日
    100
  • safari浏览器如何开启画中画模式播放视频_safari浏览器画中画模式开启方法

    如果您在观看网页视频时希望同时进行其他操作,可以启用 Safari 浏览器的画中画模式,让视频以浮动小窗形式继续播放。此功能支持大多数主流视频网站,如 YouTube、优酷等。 本文运行环境:MacBook Air,macOS Sonoma 一、通过视频右键菜单开启画中画 此方法适用于正在播放的视频…

    2026年9月23日
    000
  • go 语言版本控制器

    管理不同版本的go语言环境是一项繁琐的任务,尤其是当需要为每个go特性单独安装go环境时。为了简化这一过程,我们需要一个版本管理工具来统一管理go环境。以下是关于go版本控制器g的详细介绍。 一、Go版本控制器g简介 g是一个适用于Linux、macOS和Windows的命令行工具,旨在提供一个方便…

    2026年9月23日
    000
  • 抖音app如何关注其他用户

    在抖音这个充满创意与乐趣的平台上,关注他人是发掘优质内容、拓展社交圈的重要途径。那么,该如何在抖音app中关注其他用户呢? 首先,打开抖音App。进入首页后,你会看到源源不断的短视频自动播放。在屏幕顶部,搜索栏旁有一个“放大镜”图标,点击即可进入搜索页面。在这里,你可以通过输入用户名、关键词等方式查…

    2026年9月23日
    200
  • Java中使用栈验证JSON字符串结构:深入理解与实践

    本文探讨了在Java中利用栈验证JSON字符串结构的核心原理与常见陷阱。我们将分析一种初始实现中处理引号、转义字符及字符串内部结构字符的不足,并提供一个更健壮的栈基方法,以准确判断JSON的括号、方括号和引号是否平衡,同时纠正关于不完整JSON片段有效性的常见误解。 1. JSON结构与验证的重要性…

    2026年9月23日
    100
  • 京东自营外卖门店“七鲜小厨”入驻美团

    10 月 13 日消息,据电商派今日报道,京东自营外卖门店“七鲜小厨”已正式登陆美团 app。与此同时,京东全新推出的独立咖啡品牌“七鲜咖啡”也同步上线美团平台。 京东首家“七鲜小厨”自营外卖门店于今年7月20日在北京市东城区开业,采用“外卖 + 自提”的运营模式,不设堂食服务,用户可通过线上渠道下…

    2026年9月23日
    000
  • QQ音乐会员退订后还能听吗_QQ音乐会员退订后听歌的说明

    退订QQ音乐会员后将无法享受高音质、无广告等权益,系统自动切换至免费模式。此时仅可播放标有“免费”或无版权标识的歌曲,VIP歌曲需开通会员才能畅听。已下载的加密格式会员歌曲(如.QMC、.TMF)在会员过期后无法继续播放,需重新开通会员解密。免费用户可通过观看广告解锁每日最多5首歌曲完整播放,每次看…

    2026年9月23日
    400
  • windows怎么更改系统默认字体 windows系统默认字体更改教程

    可通过修改注册表、使用第三方工具或更换主题间接更改Windows默认字体。首先备份系统,避免操作失误导致界面异常。 如果您发现Windows系统的默认字体显示效果不理想,或者希望个性化界面外观,可以通过修改系统设置或注册表来更改默认字体。以下是实现这一目标的具体步骤。 本文运行环境:Dell XPS…

    2026年9月23日
    000
  • 抖音短视频被系统判定违规怎么办 抖音内容管理与违规申诉方法

    先明确违规原因,再通过APP申诉并提交原创或授权证据,必要时邮件、电话多渠道沟通,确保材料真实完整。 抖音视频被系统判定违规,先别急着申诉,关键是要搞清楚为什么会被判。平台的审核机制有时会出现误判,但也可能是内容确实踩了红线。处理的核心是精准定位问题、准备充分证据、通过正确渠道沟通。下面分几步说明怎…

    2026年9月23日
    300
  • 苹果手机USB调试模式开启方法

    准备工作 在操作前,请确保你的iPhone已连接网络,并升级至最新的iOS系统版本。同时,准备一台安装了最新版iTunes(Windows)或Finder(macOS)的电脑,以确保设备能够被正确识别和管理。 步骤一:开启相关调试功能 打开iPhone上的“设置”应用。 进入“Safari”浏览器设…

    2026年9月23日
    100
  • Java Web项目在无Maven/Eclipse环境下生成WAR包的实践指南

    本文详细介绍了如何在没有Maven或Eclipse等集成开发环境或构建工具的情况下,为Java Web项目手动或通过Apache Ant工具生成WAR文件。教程涵盖了WAR文件的基本结构、使用Ant进行编译和打包的具体步骤,并提供了Ant构建脚本示例,旨在帮助开发者理解并实践WAR包的独立构建过程。…

    2026年9月23日
    100
  • 硬核推理游戏《机密谋杀案中案》参加Steam新品节 试玩版上线

    硬核推理游戏《机密谋杀案中案》参加Steam新品节 试玩版上线硬核推理游戏《机密谋杀案中案》参加Steam新品节 试玩版上线硬核推理游戏《机密谋杀案中案》参加Steam新品节 试玩版上线硬核推理游戏《机密谋杀案中案》参加Steam新品节 试玩版上线

    如果你已经顺利解开《奥伯拉丁的回归》或《金偶像迷案》中的重重谜团,那么接下来的挑战将更加扑朔迷离!好莱坞正陷入一场震惊全城的连环谋杀风暴!你将化身为一名敏锐过人的侦探,运用你的观察力与推理能力:勘察犯罪现场,搜集关键证据,抽丝剥茧地还原真相。幕后黑手究竟是谁?他又为何精心策划这一系列隐秘的杀局? 这…

    2026年9月23日 用户投稿
    100

发表回复

登录后才能评论
关注微信