圆形旋转侧边菜单功能失效求助
圆形旋转侧边菜单功能失效求助
嘿,我仔细扒了你的代码,发现几个关键的小bug,正是它们让你的菜单纹丝不动,咱们一个个来修复:
1. CSS类选择器写错了(核心问题)
你给容器加类的逻辑是对的,但CSS里的选择器用错了:
- 原来的
.container .lakisa-menu是后代选择器,意思是找.container内部带.lakisa-menu类的元素,但实际上你是要给.container本身加这个类,然后让它旋转。所以必须去掉空格,写成.container.lakisa-menu(这是多类选择器,选中同时有container和lakisa-menu类的元素)。 - 对应的,圆形旋转的选择器
.container .lakisa-menu .circle也要改成.container.lakisa-menu .circle,同样去掉中间的空格。
2. 导航菜单的选择器逻辑错误
你原来写的 .container .lakisa-menu + nav li 完全不符合HTML结构:nav是container的同级元素,而且在container前面。咱们改成用CSS的:has伪类来匹配「后面跟着带lakisa-menu类的container的nav」,这样就能在容器激活时让导航项显示出来。
3. CSS属性拼写错误
在最后一个导航项的样式里,你把 transform 拼成了 transfrom(少了个f),这个拼写错误会导致该元素的位移效果失效。
下面是修正后的完整代码:
JavaScript(这块逻辑没问题,无需修改)
const fongola = document.getElementById('fongola'); const kanga = document.getElementById('kanga'); const container = document.querySelector('.container'); fongola.addEventListener('click', ()=> container.classList.add('lakisa-menu')); kanga.addEventListener('click', ()=> container.classList.remove('lakisa-menu'));
CSS(修正了选择器和拼写错误)
.container{ background:#fafafa; transform-origin:top left ; transition: transform 0.5s linear; width:100vw; min-height:100vh ; padding:50px; } /* 修正:多类选择器,去掉空格 */ .container.lakisa-menu{ transform: rotate(-20deg); } .circle-container{ position: fixed; top:-100px; left:-100px; } .circle{ background-color:#0063b4 ; height:200px; width:200px; border-radius:50%; position: relative; transition:transform 0.5s linear; } /* 修正:多类选择器,去掉空格 */ .container.lakisa-menu .circle{ transform: rotate(-70deg); } .circle button{ cursor:pointer; position: absolute; top:50%; left:50%; height:100px; background:transparent; border:0; font-size:26px ; color:#fff; } .circle button:focus{ outline:none; } .circle button#fongola{ left:60%; } .circle button#kanga{ transform:rotate(90deg); transform-origin: top left; top:60%; } /* 修正:用:has伪类匹配激活状态下的导航项 */ nav:has(+ .container.lakisa-menu) li{ transform: translateX(0); transition-delay: 0.3s; } nav{ position: fixed; bottom:40px; left:0; z-index: 1; } nav ul{ list-style-type: none; padding-left: 30px; } nav ul li{ text-transform: uppercase; color:#fff; margin:40px 0; transform: translateX(-100%); transition: transform 0.4s ease-in; } nav ul li{ font-size:20px; margin-right:10px; } nav ul li + li{ margin-left:15px; transform:translateX(-150%); } /* 修正:拼写错误 transfrom → transform */ nav ul li + li + li{ margin-left:30px ; transform:translateX(-200%); }
HTML(结构没问题,仅补全了导航项内容)
<html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Porfolio</title> <link rel="stylesheet" href="styling.css"> </head> <body> <nav> <ul> <li class="list">首页</li> <li class="list">我的项目</li> <li class="list">关于我</li> </ul> </nav> <div class="container"> <div class="circle-container"> <div class="circle"> <button id="kanga"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-book" viewBox="0 0 16 16"> <path d="M1 2.828c.885-.37 2.154-.769 3.388-.893 1.33-.134 2.458.063 3.112.752v9.746c-.935-.53-2.12-.603-3.213-.493-1.18.12-2.37.461-3.287.811zm7.5-.141c.654-.689 1.782-.886 3.112-.752 1.234.124 2.503.523 3.388.893v9.923c-.918-.35-2.107-.692-3.287-.81-1.094-.111-2.278-.039-3.213.492zM8 1.783C7.015.936 5.587.81 4.287.94c-1.514.153-3.042.672-3.994 1.105A.5.5 0 0 0 0 2.5v11a.5.5 0 0 0 .707.455c.882-.4 2.303-.881 3.68-1.02 1.409-.142 2.59.087 3.223.877a.5.5 0 0 0 .78 0c.633-.79 1.814-1.019 3.222-.877 1.378.139 2.8.62 3.681 1.02A.5.5 0 0 0 16 13.5v-11a.5.5 0 0 0-.293-.455c-.952-.433-2.48-.952-3.994-1.105C10.413.809 8.985.936 8 1.783"/> </svg> </button> <button id="fongola"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-code-slash" viewBox="0 0 16 16"> <path d="M10.478 1.647a.5.5 0 1 0-.956-.294l-4 13a.5.5 0 0 0 .956.294zM4.854 4.146a.5.5 0 0 1 0 .708L1.707 8l3.147 3.146a.5.5 0 0 1-.708.708l-3.5-3.5a.5.5 0 0 1 0-.708l3.5-3.5a.5.5 0 0 1 .708 0m6.292 0a.5.5 0 0 0 0 .708L14.293 8l-3.147 3.146a.5.5 0 0 0 .708.708l3.5-3.5a.5.5 0 0 0 0-.708l-3.5-3.5a.5.5 0 0 0-.708 0"/> </svg> </button> </div> </div> <div class="content"> <h2>Josue </h2> <p> On my days off I enjoy going out to the internet-cafe and sipping on a mocha latte. </p> </div> </div> <script src="theScript.js" type="text/javascript"></script> </body> </html>
改完这些之后,你点击图标应该就能看到容器旋转、圆形跟着转动,同时底部的导航项也会平滑滑入啦!
备注:内容来源于stack exchange,提问作者BoJacks JJ




