用VUE制作滑动tab选项卡

本文介绍如何使用Vue.js创建一个简单的标签页切换组件。通过HTML、CSS和Vue.js结合,实现标签页的动态显示与隐藏,并提供了完整的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

##第一步:写出HTML结构
先写一个你需要展示的静态效果,写好后再改为VUE动态生成,代码如下:

<div id="app1" class="wrap">
	<ul class="tabs">
		<li class="active"><a href="javascript:">标签1</a></li>
		<li><a href="javascript:">标签2</a></li>
		<li><a href="javascript:">标签3</a></li>
	</ul>
	<div class="tabs-con">
		<p>内容1</p>
	</div>
	<div class="tabs-con">
		<p>内容2</p>
	</div>
	<div class="tabs-con">
		<p>内容3</p>
	</div>
</div>

##第二步:写出css样式
为你的结构写一个样式,代码如下:

<style type="text/css">
    * {
        margin: 0;
        padding: 0;
        border-style: none;
    }
    ul,ol {
        list-style: none;
    }
    a {
        text-decoration: none;
        color: #777;
    }
    body {
        font: normal 14px/1.6 Helvetica,"Microsoft YaHei";
        color: #777;
        background-color: #f5f5f5;
    }
    .wrap {
        width: 600px;
        margin: 20px auto 0;
    }
    .tabs {
        overflow: auto;
    }
    .tabs li {
        float: left;
    }
    .tabs li a {
        display: block;
        padding: 10px 15px;
        color: #bbb;
    }
    .tabs li.active {
        background-color: #fff;
    }
    .tabs li.active a {
        color: #333;
    }
    .tabs-con {
        padding: 15px;
        background-color: #fff;
    }
</style>

##第三步:写出js代码
这一步是关键,要用到vue的内容了

var app1 = new Vue ({
    el: '#app1',
    data: {
	    //标签列表的数据,是数组,数组项是对象格式
        tabs: [
            {name:'标签1'},
            {name:'标签2'},
            {name:'标签3'}
        ],
        num: 0
    },
    //方法,建立自定义函数,对应点击时间onclick
    methods: {
        tabsSwitch(index) {
            //用到的变量要加上this,表示使用上面构造函数app1的对象num
            this.num = index;
        }
    }
})

##第四步:更改上边的html结构

<div id="app1" class="wrap">
    <ul class="tabs">
        <li v-for="(tab,index) in tabs" :class="{active:num===index}" @click="tabsSwitch(index)"><a href="javascript:">{{tab.name}}</a></li>
    </ul>
    <div class="tabs-con" v-show="num===0">
        <p>内容1</p>
    </div>
    <div class="tabs-con" v-show="num===1">
        <p>内容2</p>
    </div>
    <div class="tabs-con" v-show="num===2">
        <p>内容3</p>
    </div>
</div>

v-for="(tab,index) in tabs"
循环遍历 tabs 数组,其中 tab 参数代表数组中的每一项,index 参数代表索引值


:class="{active:num===index}"
v-bind:class 指令的缩写格式,active 是要加上的样式名称,后边跟的是条件,只有在 num=index 的时候才加上 active


@click=“tabsSwitch(index)”
v-on:click 指令的缩写格式,后边是要运行的函数名称


v-show=“num===2”
v-show 是控制元素的 display 属性显示或者不显示

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值