el-tabs(标签栏)的入门学习

el-tabs(标签栏)的入门学习
适用场景
与导航栏相似,项目中常见的是点击某个导航栏,主页面(el-main)模块的最上方会显示我们的标签栏集合,点击不同的导航栏,标签栏会在不断追加,若点击到标签集合中已存在,就进入选中指定的标签栏,显示页面

知识点

  1. el-tabs嵌套el-tab-pane使用
  2. el-tabs的v-model对应el-tab-pane的name
  3. el-tabs的type可以指定为card,border-card
  4. el-tab-pane的label为显示的标签内容,标签的内容在首尾标签内部
  5. el-tabs可以设置closable,editable,addable,分别设置tab-remove,edit,tab-add动态修改标签集合
  6. 还有tab-click钩子
  7. el-tabs中设置tab-position,修改标签位置,可以为top,bottom,left,right

效果图

代码 

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script src="https://unpkg.com/element-ui/lib/index.js"></script>
</head>

<body>
    <div id='app'>
        <el-tabs v-model='tabPaneName' @tab-click='handleClick'>
            <el-tab-pane v-for='tab in tabs' :key='tab.name+"1"' :name='tab.name' :label='tab.label'>{{tab.content}}
            </el-tab-pane>
        </el-tabs>
        <el-tabs v-model='tabPaneName' type='card' closable @tab-remove='handleRemove'>
            <el-tab-pane v-for='tab in tabs' :key='tab.name+"2"' :name='tab.name' :label='tab.label'>{{tab.content}}
            </el-tab-pane>
        </el-tabs>
        <el-tabs v-model='tabPaneName' type='border-card' editable @edit='handleEdit'>
            <el-tab-pane v-for='tab in tabs' :key='tab.name+"3"' :name='tab.name' :label='tab.label'>{{tab.content}}
            </el-tab-pane>
        </el-tabs>
        <el-radio-group v-model='position'>
            <el-radio label='top'>top</el-radio>
            <el-radio label='bottom'>bottom</el-radio>
            <el-radio label='left'>left</el-radio>
            <el-radio label='right'>right</el-radio>
        </el-radio-group>
        <el-tabs v-model='tabPaneName' type='border-card' :tab-position='position'>
            <el-tab-pane v-for='tab in tabs' :key='tab.name+"3"' :name='tab.name' >
                <template slot='label'>
                    <i class='el-icon-search'></i>{{tab.label}}
                </template>
                {{tab.content}}
            </el-tab-pane>
        </el-tabs>
    </div>
</body>

</html>

<script>
    new Vue({
        el: "#app",
        data() {
            return {
                position: '',
                tabPaneName: 'first',
                tabs: [{ name: 'first', label: '首页', content: '欢迎光临' },
                { name: 'second', label: '菜单', content: '有小炒,火锅,烧烤' },
                { name: 'third', label: '饮料', content: '杨枝甘露,冰糖雪梨' },
                { name: 'fouth', label: '部门', content: '餐饮,财经' }]
            }
        },
        methods: {
            //点击钩子
            handleClick(target, action) {
                console.log(target.name, action)
            },
            //删除钩子
            handleRemove(targetName) {
                this.tabs.forEach((item, index) => {
                    if (item.name === targetName) {
                        this.tabs.splice(index, 1)
                    }
                });
            },
            //编辑钩子
            handleEdit(targetName, action) {
                if (action === 'remove') {
                    this.tabs.forEach((item, index) => {
                        if (item.name === targetName) {
                            this.tabs.splice(index, 1)
                        }
                    })
                } else if (action === 'add') {
                    let addItem = {
                        name: "newName" + this.tabs.length,
                        label: "newLabel" + this.tabs.length,
                        content: "newContent" + this.tabs.length
                    }
                    this.tabs.push(addItem)
                }
            }
        }
    })
</script>

官网

el-tabs的入门学习

Element Plus是一个基于Vue.js的开源UI组件库,它结合了Element UI的设计理念和最新的Web技术。当你想要在`<el-tabs>`(标签页)中配合`<el-dropdown>`(下拉菜单)实现点击每个标签页图标时展示对应下拉菜单,同时切换到新的标签页,你可以这样做: 首先,确保已安装Element Plus并引入相应的CSS和JS文件。然后,在HTML结构中设置这样的布局: ```html <template> <div> <el-tabs v-model="activeTab"> <el-tab-pane label="选项1" :key="1"> <el-button slot="icon" @click="showDropdown(1)">更多操作</el-button> <el-dropdown placement="bottom-end" v-if="dropdownVisible1"> <!-- 下拉菜单内容 --> </el-dropdown> </el-tab-pane> <el-tab-pane label="选项2" :key="2"> <el-button slot="icon" @click="showDropdown(2)">其他操作</el-button> <el-dropdown placement="bottom-end" v-if="dropdownVisible2"> <!-- 下拉菜单内容 --> </el-dropdown> </el-tab-pane> </el-tabs> </div> </template> <script> export default { data() { return { activeTab: 1, dropdownVisible1: false, dropdownVisible2: false, }; }, methods: { showDropdown(index) { this.dropdownVisible[index] = !this.dropdownVisible[index]; } } }; </script> ``` 在这个例子中,我们给每个`el-tab-pane`中的按钮添加了一个`slot="icon"`,并在按钮上绑定了`@click`事件,当点击时调用`showDropdown()`方法,控制对应的`dropdownVisible`状态。 每次切换到新的`el-tab-pane`时,通过改变`v-model`绑定的`activeTab`值,可以达到切换标签的效果,并保持当前下拉菜单的状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ok060

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

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

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

打赏作者

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

抵扣说明:

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

余额充值