网页导航栏按钮切换动画制作

发布时间:2024年01月15日


前言

我希望通过html实现一个简单的菜单栏渐变到关闭按钮的动画,菜单栏的上、下两横旋转交叉,中间一横消失,手动形成一个X形状
首先展示一下我最终制作的效果🤗
请添加图片描述


一、导航栏制作

通过在一个button中放置三个横线,实现导航栏按钮效果

<button id="menuButton" class="Button-content" >
    <span>
      <div class="HeaderMenu-toggle-bar"></div>
      <div class="HeaderMenu-toggle-bar"></div>
      <div class="HeaderMenu-toggle-bar"></div>
    </span>
</button>

二、导航栏样式

1.Button-content

.Button-content {
    font-size: 18px;
    border: none;
    display: flex; /* 可以改为none设置在PC端不显示 */
}

@media screen and (max-width: 768px) {
    .Button-content {
        display: flex;
    }
}

2.HeaderMenu-toggle-bar

.HeaderMenu-toggle-bar {
    width: 25px;
    height: 3px;
    background-color: white;
    margin: 4px 0;
    transition: transform 0.3s ease;
}

三、动画样式

现在制作一个点击后的样式

.changed .HeaderMenu-toggle-bar:nth-child(2) {
    opacity: 0;
}

.changed .HeaderMenu-toggle-bar:nth-child(1) {
    transform: translateY(8px) rotate(45deg);
}

.changed .HeaderMenu-toggle-bar:nth-child(3) {
    transform: translateY(-8px) rotate(-45deg);
}

在按钮被改变(点击切换)时,选择第一个和第三个子元素(即上下的按钮条)。分别将上下两个按钮条旋转,形成一个斜角,与中间的按钮条一起形成一个 X 形状。

四、按钮JavaScript函数

最后编写一个切换状态的函数

document.getElementById('menuButton').addEventListener('click', function () {
    this.classList.toggle('changed');
});

点击按钮,即可在changed状态与正常状态下来回切换,实现预定效果
最终效果参考本文前言

五、代码示例

保存下列代码到test.html中,在浏览器中打开即可预览效果

<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="utf-8">
    <title>Title</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    <style>
        .Button-content {
            font-size: 18px;
            background-color: var(--xjs-color-1);
            border: none;
            display: flex;
        }

        @media screen and (max-width: 768px) {
            .Button-content {
                display: flex;
            }
        }


        .HeaderMenu-toggle-bar {
            width: 25px;
            height: 3px;
            background-color: black;
            margin: 4px 0;
            transition: transform 0.3s ease;
        }

        .changed .HeaderMenu-toggle-bar:nth-child(2) {
            opacity: 0;
        }

        .changed .HeaderMenu-toggle-bar:nth-child(1) {
            transform: translateY(8px) rotate(45deg);
        }

        .changed .HeaderMenu-toggle-bar:nth-child(3) {
            transform: translateY(-8px) rotate(-45deg);
        }
    </style>
</head>
<header>
    <button id="menuButton" class="Button-content">
            <span>
              <div class="HeaderMenu-toggle-bar"></div>
              <div class="HeaderMenu-toggle-bar"></div>
              <div class="HeaderMenu-toggle-bar"></div>
            </span>
    </button>
</header>
<body>
<script>
    document.getElementById('menuButton').addEventListener('click', function () {
        this.classList.toggle('changed');
    });
</script>
</body>
</html>

以上就是本文分享的全部内容啦,希望对你有帮助!😊

文章来源:https://blog.csdn.net/XIAOXIANG233233/article/details/135601281
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。