辐射样式菜单动画效果

该博客展示了如何使用HTML、CSS和JavaScript实现一个辐射样式的菜单动画效果。通过CSS的过渡和变换属性,以及JavaScript的点击事件处理,当用户点击按钮时,菜单项会以辐射状展开和收起,同时伴有色彩变化和阴影效果。代码中详细解释了各个部分的作用,是前端开发中动态菜单动画的一个实例。
摘要由CSDN通过智能技术生成

辐射样式菜单动画效果

技术栈:HTML + CSS +Javascript

显示样式如下:
在这里插入图片描述
在这里插入图片描述
代码:
index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>辐射样式</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <ul class="menu">
        <div class="toggle">
            <ion-icon name="add-outline"></ion-icon>
        </div>
        <li style="--i: 0; --clr: #ff2972">
            <a href="#"><ion-icon name="home-outline"></ion-icon></a>
        </li>
        <li style="--i: 1; --clr: #fee800">
            <a href="#"><ion-icon name="person-outline"></ion-icon></a>
        </li>
        <li style="--i: 2; --clr: #04fc43">
            <a href="#"><ion-icon name="settings-outline"></ion-icon></a>
        </li>
        <li style="--i: 3; --clr: #fe00f1">
            <a href="#"><ion-icon name="mail-outline"></ion-icon></a>
        </li>
        <li style="--i: 4; --clr: #00b0fe">
            <a href="#"><ion-icon name="key-outline"></ion-icon></a>
        </li>
        <li style="--i: 5; --clr: #fea600">
            <a href="#"><ion-icon name="videocam-outline"></ion-icon></a>
        </li>
        <li style="--i: 6; --clr: #a529ff">
            <a href="#"><ion-icon name="camera-outline"></ion-icon></a>
        </li>
        <li style="--i: 7; --clr: #01bdab">
            <a href="#"><ion-icon name="game-controller-outline"></ion-icon></a>
        </li>
    </ul>

    <script type="module" src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.esm.js"></script>
    <script nomodule src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.js"></script>
    <script>
        let toggle = document.querySelector('.toggle');
        let menu = document.querySelector('.menu');
        toggle.onclick = function () {
            // xxx.classList  // 返回一个元素 class 属性的动态 DOMTokenList 集合
            // xxx.classList.toggle() // toggle是转化的意思, 如果active 类值已存在,则移除它,否则添加它
            menu.classList.toggle('active');
        }
    </script>
</body>
</html>

style.css

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body {
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 100vh;
    background: #2f263e;
}

.menu {
    position: relative;
    width: 280px;
    height: 280px;
    display: flex;
    justify-content: center;
    align-items: center;
}

.menu li{
    position: absolute;
    left: 0;
    list-style: none;
    transition: 0.5s;
    transition-delay: calc(0.1s * var(--i));
    transform-origin: 140px;
    transform: rotate(0deg) translateX(110px);
}

.menu.active li {
    transform: rotate(calc(360deg / 8 * var(--i))) translateX(0px);
}

.menu li a {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 60px;
    height: 60px;
    color: var(--clr);
    border: 2px solid var(--clr);
    border-radius: 50%;
    font-size: 1.5em;
    transform: rotate(calc(360deg / -8 * var(--i)));
    transition: 1s;
}

.menu li a:hover {
    transition: 0s;
    background: var(--clr);
    color: #333;
    box-shadow: 0 0 10px var(--clr),
                0 0 30px var(--clr),
                0 0 50px var(--clr);
}

.menu .toggle {
    position: absolute;
    width: 60px;
    height: 60px;
    background: #2f363e;
    border: 2px solid #fff;
    border-radius: 50%;
    color: #fff;
    display: flex;
    justify-content: center;
    align-items: center;
    cursor: pointer;
    /* z-index: 数值越大,优先级越高,就可以叠在一些z-index值比它小的元素上 */
    z-index: 10000;
    font-size: 2em;
    /* transition 是延期属性,填上XX属性  */
    transition: transform 1.25s;
}

.menu.active .toggle {
    transform: rotate(315deg);
}



学习来源:
创建辐射样式菜单动画效果使用CSS,HTML 和 Javascript

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值