VUE的菜单导航折叠

展示视频

 

展开的时候由一瞬间的空白,不知道怎么解决。


myMenu(子组件):

在el-menu 标签里面设置collapse参数属性:


Props :用来存储,其他组件传到本组件的值。 //这里是有父组件直接穿过来的值使用props来接收 props:['isCollapse'],


myContent(子组件):

这个组件内是绑定点击折叠事件: 使用两个icon图标,绑定click函数。

使用v-if进行判定到底是显示哪一个icon图标(真执行if 加执行else)

子组件的isCollapse的值由父组件默认传递,开始都是父组件所设置的值也就是false。


鼠标点击的时候就调用这个changeMenu方法

$emit(参数1 ,参数2 ) :

子组件可以调用父组件的方法(第一个参数是父组件的方法,第二个参数是值)

点击就会去调用父组件的changeshow函数进行isCollapse 值的取反。


 

isCollapse的值默认绑定的是false;也就是水平展开

要想内容区域也根据点击一起进行水平折叠,在父组件里面的Content 去绑定相应的事件或值。

:class动态数据绑定



:class="{small:isCollapse}  //这个是为了使得在折叠的时候,按钮的显示不被覆盖,所以绑定一个padding-left:64px,只有isCollapse 为 true的时候这个属性才会生效。

@作为 v-on指令的缩写  进行点击事件绑定

:作为v-bind的缩写 进行数据绑定

myLayout(父组件):

:is-collapse   这里应该是和myContent组件里面的v-if函数有关系。

当isCollapse 为flase的时候, 也就是不折叠  ,这时候v-if 为真就显示向左的icon图标。

当idCollapse 为true的时候,这里的small  设置的样式就会生效,同时这个icon图标(向右)的显示由这个  is-Collapse的值(只有为true才会变化向右的图标)来控制。否则就是向左的图标,不会变化。

### Vue.js 项目中菜单导航样式的实现方法 在 Vue.js 中构建响应式导航菜单时,样式的设计和实现至关重要。为了确保良好的用户体验,通常会采用 CSS 和 JavaScript 结合的方式来进行布局调整。 #### 使用 Flexbox 或 Grid 布局 现代 Web 开发中推荐使用 CSS 的 Flexbox 或者 Grid 来创建灵活且易于维护的布局结构[^1]: ```css /* 使用Flexbox*/ .navbar { display: flex; justify-content: space-between; align-items: center; } .menu-item { margin-right: 20px; /* 右边距 */ } ``` 对于移动设备上的显示效果优化,可以利用媒体查询来改变布局方式: ```css @media (max-width: 768px) { .navbar { flex-direction: column; } .menu-item { width: 100%; text-align: center; margin-bottom: 10px; } } ``` #### 动态切换类名控制展开/收起状态 通过绑定 `v-bind:class` 指令到组件上,可以根据数据属性动态更改元素的 class 列表,从而轻松管理不同状态下(如折叠或展开)的外观变化: ```html <div :class="{'is-active': isActive}"> </div> ``` 配合 Vuex 进行全局状态管理,在多个视图间同步导航栏的状态也是常见做法之一。 #### 添加过渡动画提升交互体验 Vue 提供了 `<transition>` 组件用于包裹需要添加进入离开效果的内容块,结合自定义钩子函数能够方便地为页面元素增添流畅自然的变化过程: ```vue <template> <transition name="fade"> <!-- 导航条 --> </transition> </template> <style scoped> .fade-enter-active, .fade-leave-active { transition: opacity .5s ease-in-out; } .fade-enter-from, .fade-leave-to{ opacity: 0; } </style> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值