vue.js实现标签页切换

第二个实例是关于标签页切换的,先看一下效果:

这也是一个很常见的交互效果,以往正常的javascript写法是给各个按钮绑定事件来切换不同的层,当然也可以用纯css写,给上面的三个切换的层分别添加一个单选按钮的兄弟节点,再用绝对定位把单选按钮定位在三个button上面,这样就可以用:checked伪类来单选按钮的兄弟元素,即对应的不同的层,我简单的写了一下DOM结构,大概就是这样:

那么用vue.js实现上述的效果,其实也有两种途径,一种使用vue-routervue-routervue.js的一个路由组件,在单页面应用中非常非常流行,如果切换的层数据量非常大的话,比如每个层都要有服务器进行大量的数据交互,那么强烈建议使用vue-router,因为vue-router在每次切换路由的过程中,都会自动销毁(destroyed)前面的组件,这样在频繁的操作中页面也不会卡,而且vue-router也定义了页面切换过程中的过渡动画

如果数据量并不复杂的话,可以直接通过vue.js定义切换状态来切换不同的层。

首先先把template和css写好:

其中introduce、chatbar、videobar分别代表三个需要跟随button切换的组件,接下来就可以给vue.js的button节点绑定事件来操控点击状态:

点击不同的button,会让active的状态改变,同时这个状态会作用到button上面,比如让被点击的button有个高亮的效果等等。

那么如何让active的状态作用到弹出层呢?其实定义一个computed函数就可以了:

大功告成!

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue.js实现同一个面多个标签(即多个 tab)的实现,可以使用 Vue.js 的路由功能和一个标签组件。 首先,在 Vue.js 中配置路由,将多个面的路由地址和组件对应起来。例如,可以在 `router/index.js` 中定义如下路由: ```js import Vue from 'vue'; import Router from 'vue-router'; import Home from '@/views/Home'; import About from '@/views/About'; import Contact from '@/views/Contact'; Vue.use(Router); export default new Router({ routes: [ { path: '/', name: 'home', component: Home }, { path: '/about', name: 'about', component: About }, { path: '/contact', name: 'contact', component: Contact } ] }); ``` 接着,在需要显示多个标签的组件中,引入一个标签组件,并在其模板中使用路由链接和路由视图。例如,可以在 `views/Tabs.vue` 组件中使用 `vue-tabs-component` 插件实现多个标签: ```html <template> <div> <tabs> <tab v-for="tab in tabs" :key="tab.name" :label="tab.label">{{ tab.content }}</tab> </tabs> <router-view></router-view> </div> </template> <script> import { Tabs, Tab } from 'vue-tabs-component'; export default { components: { Tabs, Tab }, data() { return { tabs: [ { name: 'home', label: 'Home', content: 'Homepage content' }, { name: 'about', label: 'About', content: 'About page content' }, { name: 'contact', label: 'Contact', content: 'Contact page content' } ] }; } }; </script> ``` 在这个例子中,使用了 `vue-tabs-component` 插件,将 `tabs` 数组中的每一个对象转换为一个标签,每个标签都有一个 `name` 属性对应路由的名称,一个 `label` 属性对应标签的文本,以及一个 `content` 属性对应标签的内容。 最后,在需要显示标签的组件中,引入 `Tabs.vue` 组件,并在路由配置文件中将其对应到一个路由地址。例如,可以在 `App.vue` 组件中引入 `Tabs.vue` 组件,并将其对应到根路径: ```html <template> <div id="app"> <Tabs /> </div> </template> <script> import Tabs from '@/views/Tabs'; export default { components: { Tabs } }; </script> ``` ```js import Vue from 'vue'; import Router from 'vue-router'; import Tabs from '@/views/Tabs'; Vue.use(Router); export default new Router({ routes: [ { path: '/', name: 'tabs', component: Tabs, children: [ { path: '', redirect: '/home' }, { path: 'home', name: 'home', component: Home }, { path: 'about', name: 'about', component: About }, { path: 'contact', name: 'contact', component: Contact } ] } ] }); ``` 这样,就可以在同一个面中显示多个标签,并切换不同的路由视图了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值