You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

圆形旋转侧边菜单功能失效求助

圆形旋转侧边菜单功能失效求助

嘿,我仔细扒了你的代码,发现几个关键的小bug,正是它们让你的菜单纹丝不动,咱们一个个来修复:

1. CSS类选择器写错了(核心问题)

你给容器加类的逻辑是对的,但CSS里的选择器用错了:

  • 原来的 .container .lakisa-menu后代选择器,意思是找.container内部带.lakisa-menu类的元素,但实际上你是要给.container本身加这个类,然后让它旋转。所以必须去掉空格,写成 .container.lakisa-menu(这是多类选择器,选中同时有containerlakisa-menu类的元素)。
  • 对应的,圆形旋转的选择器 .container .lakisa-menu .circle 也要改成 .container.lakisa-menu .circle,同样去掉中间的空格。

2. 导航菜单的选择器逻辑错误

你原来写的 .container .lakisa-menu + nav li 完全不符合HTML结构:navcontainer的同级元素,而且在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

火山引擎 最新活动