javascript - Vue.js:切换汉堡菜单图标

标签 javascript vue.js toggle hamburger-menu

我有一个带有汉堡包菜单图标的标题,我想在单击它时将其更改为十字图标。如何在 Vue 模板中执行此操作?我在计算属性中创建了一个函数,但我不确定我应该做什么。

这是我的菜单图标:

<div class="top-icon" :class="toggleTopMenu" @click="showTopMenu = !showTopMenu">
  <div class="main-item menu">
    <span class="line line01"></span>
    <span class="line line02"></span>
    <span class="line line03"></span>
  </div>
</div>

这是我的 CSS:

.top-icon {
  background: #29afd1;
  display: inline-block;
  border-radius: 500px;
  margin: 10px;
  position: relative;
  padding: 80px;
  cursor: pointer;
}

.main-item {
  width: 150px;
  height: 150px;
  position: relative;
}

.line {
  position: absolute;
  height: 15px;
  width: 100%;
  background: white;
  border-radius: 10px;
  transition: all cubic-bezier(0.25, 0.1, 0.28, 1.54) 0.32s;
}

.line01 {
  top: 19%;
}

.line02 {
  top: 49%;
}

.line03 {
  top: 79%;
}

.menu.close .line01 {
  transform: rotate(45deg);
  top: 49%;
}

.menu.close .line02, .menu.close .line03 {
  transform: rotate(-45deg);
  top: 49%;
}

到目前为止,这是我在脚本标签中的内容:

data() {
  return {
    showTopMenu: false,
  };
},
computed: {
toggleTopMenu() {},

最佳答案

你是指这种实现吗? 我刚刚在您的代码中添加了 v-ifv-else

请检查以下代码段:

new Vue({
  el: "#app",
  data: {
    showTopMenu: false,
  }
})
.top-icon {
  background: #29afd1;
  display: inline-block;
  border-radius: 500px;
  margin: 10px;
  position: relative;
  padding: 80px;
  cursor: pointer;
}

.main-item {
  width: 150px;
  height: 150px;
  position: relative;
}

.line {
  position: absolute;
  height: 15px;
  width: 100%;
  background: white;
  border-radius: 10px;
  transition: all cubic-bezier(0.25, 0.1, 0.28, 1.54) 0.32s;
}

.line01 {
  top: 19%;
}

.line02 {
  top: 49%;
}

.line03 {
  top: 79%;
}

.menu.close .line01 {
  transform: rotate(45deg);
  top: 49%;
}

.menu.close .line02, .menu.close .line03 {
  transform: rotate(-45deg);
  top: 49%;
}
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.13/dist/vue.js"></script>
<div id="app">
  <div class="top-icon" class="toggleTopMenu" @click="showTopMenu = !showTopMenu">
    <div class="main-item menu" v-if="!showTopMenu">
      <span class="line line01"></span>
      <span class="line line02"></span>
      <span class="line line03"></span>
    </div>
    <div v-else>
      X
    </div>
  </div>
</div>

虽然我对用户界面表示歉意。 :)

关于javascript - Vue.js:切换汉堡菜单图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49064813/

相关文章:

javascript - 如何从 csv 文件中提取特定对象?

javascript - 有没有我可以重载的方法来处理 JavaScript 中未定义的属性?

vue.js - Buefy/BoostrapVue 命名空间冲突

jquery - IE8 切换错误?

Jquery 切换一个 div 动画,同时改变一个类名

javascript - 通过伪经典实例化(JavaScript)掌握原型(prototype)继承

javascript - JS - 如何提供 x 方向的平滑移动

vue.js - 如何将对象作为 prop 传递给我的 vue 生成的 Web 组件

javascript - Vue JS 中等于 "="和冒号 ":"符号有什么区别?

css - 为什么不使用 CSS 复选框作为切换按钮