vue实现收起展开面板,让你的页面动态起来

前言

你是否在开发中遇到过需要展开和收起面板的需求?使用 vue 可以轻松实现这一功能,让用户体验更加友好。本文将为大家介绍 vue 实现收起展开面板的方法,让你的页面更加简洁美观。


常规 css 实现

实现效果

在这里插入图片描述


源码如下

<template>
  <div class="maxBox">
    <div class="leftBox" :style="{width: play ? '30%' : '0px', transition: '0.3s'}" ref="leftNode">
      <div v-if="play">内容</div>
    </div>
    <div ref="btnNode" class="btnBox" @click="toggle" :title="play ? '点击收起' : '点击展开'"
      :style="{transform: play ? 'rotate(360deg)' : 'rotate(180deg)', left: play ? '30%' : '0px', transition: '0.3s'}"> <img
        src="https://i.postimg.cc/c4zMGwGj/sq.png" class="imageBox" /> </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
        play: true
    };
  },
  methods: {
    toggle() {
      this.play = !this.play;
    },
  },
};
</script>

<style scoped>
.maxBox {
  width: 100%;
  height: 100%;
  background: cornflowerblue;
  position: relative;
}
.leftBox {
  position: absolute;
  height: 100%;
  background: cadetblue;
}
.btnBox {
  position: absolute;
  top: calc(50% - 40px);
  cursor: pointer;
  z-index: 999;
}
.imageBox {
  width: 35px;
  height: 80px;
}
</style>

通过 scss 实现

实现效果

在这里插入图片描述


源码如下

<template>
  <div class="parentBox">
    <!-- 弹出内容 -->
    <div class="leftSlide" v-show="!hideLeft">
      <div class="item">
        <h6>2000</h6>
        <p>第一行的标题</p>
      </div>
      <div class="item">
        <h6>8463</h6>
        <p>第二行的标题</p>
      </div>
      <div class="item">
        <h6>2187</h6>
        <p>第三行的标题</p>
      </div>
      <div class="item">
        <h6>4214</h6>
        <p>第四行的标题</p>
      </div>
      <div class="item">
        <h6>9824</h6>
        <p>第五行的标题</p>
      </div>
      <div class="item">
        <h6>1025</h6>
        <p>第六行的标题</p>
      </div>
    </div>
    <!-- 操作按钮 -->
    <div class="slideBtn" :class="hideLeft ? 'show' : 'hide'" @click="hideLeft = !hideLeft"></div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      hideLeft: true, //是否隐藏 slide
    };
  },
  mounted() {},
  methods: {},
};
</script>

<style lang="scss" scoped>
.parentBox {
  width: 100%;
  height: 100%;
  background: rgb(0, 25, 46);
  color: #c8c8c8;
  // 打开的容器
  .leftSlide {
    height: 45vh;
    width: 10vw;
    z-index: 999;
    // 自己用的时候换成本地图片
    background: url("https://i.postimg.cc/ZnbKZ0s5/bg-map-l.png");
    background-size: 100% 100%;
    background-color: rgba(11, 26, 62, 0.6);
    padding: 1vh 1vw 1vh 2vw;
    display: flex;
    flex-direction: column;
    .item {
      height: 7vh;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
    }
  }
  // 点击按钮
  .slideBtn {
    width: 1.3vw;
    height: 5.5vh;
    position: absolute;
    top: 19.8vh;
    z-index: 999;
    cursor: pointer;
    &.hide {
      // 自己用的时候换成本地图片
      background: url("https://i.postimg.cc/65TthkDg/sbtn.png");
      background-size: 100% 100%;
    }
    &.show {
      // 自己用的时候换成本地图片
      background: url("https://i.postimg.cc/zBD9GWN6/sbtn1.png");
      background-size: 100% 100%;
    }
  }
}
</style>
### 回答1: 实现一个菜单面板可以使用Vue的组件化特性,以下是一种简单的实现方式: 1. 定义一个名为"Menu"的组件,在template中使用HTML元素实现菜单的布局。 ``` <template> <div class="menu"> <ul> <li v-for="item in items"> {{ item }} </li> </ul> </div> </template> ``` 2. 在script中定义组件的数据和逻辑,包括菜单项的数组、添加新菜单项的方法等。 ``` <script> export default { name: 'Menu', data () { return { items: ['首页', '关于我们', '联系我们'] } }, methods: { addItem (item) { this.items.push(item) } } } </script> ``` 3. 在style中定义组件的样式。 ``` <style> .menu { width: 200px; border: 1px solid #ccc; } .menu ul { list-style: none; padding: 0; margin: 0; } .menu li { background-color: #f2f2f2; padding: 10px; border-bottom: 1px solid #ccc; } </style> ``` 4. 在应用的入口文件中注册组件,并使用该组件。 ``` <template> <div class="app"> <menu></menu> </div> </template> <script> import Menu from './components/Menu.vue' export default { name: 'App', components: { Menu } } </script> ``` 通过以上步骤,便可以在Vue应用中使用自定义的"Menu"组件,实现菜单面板的功能。 ### 回答2: 使用Vue实现一个菜单面板可以通过以下步骤来实现: 1. 首先,在Vue项目中创建一个新的组件,可以称之为MenuPanel。 2. 在MenuPanel的模板中,使用Vue的语法编写菜单面板的HTML结构,包括菜单项和子菜单项等。 3. 在MenuPanel的data属性中定义一个数组,用于存储菜单的数据。 4. 在MenuPanel的methods属性中定义一个方法,用于处理菜单项的点击事件。 5. 在MenuPanel的mounted钩子函数中,可以通过异步请求获取菜单数据,并将其存储到data属性中。 6. 在MenuPanel的模板中使用v-for指令将菜单数据渲染到页面上。 7. 在菜单项的点击事件中,可以使用Vue的语法进行状态的切换,从而实现子菜单的展开收起。 8. 可以通过CSS样式对菜单面板进行美化,并使用Vue的相关指令(如v-bind、v-on)来实现动态绑定和事件监听等。 9. 在应用的父组件中使用MenuPanel组件,并传递菜单数据作为props属性。 10. 最后,在父组件中可以监听MenuPanel的事件,以便在菜单项被点击时执行相应的操作。 以上是使用Vue实现一个菜单面板的简要步骤,具体实现过程中还需要根据实际需求进行细节调整。 ### 回答3: Vue.js是一种流行的JavaScript框架,可以用于构建用户界面。要使用Vue实现一个菜单面板,我们可以按照以下步骤进行操作: 首先,在HTML中创建一个菜单面板的容器: ```html <div id="menu-panel"> <!-- 菜单面板内容 --> </div> ``` 接下来,使用Vue创建一个菜单面板的组件,并将其挂载到容器上: ```javascript new Vue({ el: '#menu-panel', data: { menuItems: ['首页', '关于我们', '服务', '联系我们'] // 菜单项数据 }, methods: { handleClick: function(item) { // 处理菜单项的点击事件 console.log(item + '被点击了'); } } }); ``` 然后,在组件的模板中,使用`v-for`指令遍历菜单项数据并渲染出菜单项: ```html <div> <ul> <li v-for="item in menuItems" @click="handleClick(item)">{{ item }}</li> </ul> </div> ``` 最后,在CSS中添加样式来美化菜单面板: ```css #menu-panel { width: 200px; background-color: #f0f0f0; padding: 10px; } ul { list-style-type: none; padding: 0; } li { cursor: pointer; padding: 5px; } li:hover { background-color: #ccc; } ``` 这样,我们就成功地用Vue实现了一个简单的菜单面板。当菜单项被点击时,会触发`handleClick`方法,并输出相应的菜单项名称到控制台。你可以根据实际需求进一步扩展和优化这个菜单面板的功能和样式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水星记_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值