Vue ——tab切换样式

这是一个使用Vue.js编写的登录页面组件,通过v-for遍历items数组,展示不同的登录方式选项,如密码登录、企业微信等。点击不同选项时,通过tabName方法更新当前选中的登录方式。样式部分使用了less进行美化,包括tab项的激活状态和边框样式。

在这里插入图片描述
login.vue

<div :class="[ tab === item.tab ? 'tab_item active' : 'tab_item']" @click="tabName(item.tab)" v-for="item in items" :key="item.tab">
   {{ item.tab }}
</div>

<script>
export default {
  name: "login",
  data() {
    return {
      tab:"密码登录" ,
      items: [
        { tab: "密码登录"},
        { tab: "企业微信"},
        { tab: "钉钉登录"},
        { tab: "动态口令"},
        { tab: "统一身份认证"},
        { tab: "微信登录"}
      ],
    };
  },
  methods:{
    tabName:function(curTab){
      this.tab = curTab;
    }
  }
};
</script>

<style lang="less" scoped>
	.tab_item {
        background: #eee;
        padding: 6px 14px;
        box-sizing: border-box;
        border: 1px solid rgb(216, 208, 208);
        border-top-left-radius: 8px;
        border-top-right-radius: 8px;
        cursor: pointer;
      }
      .tab_item:not(:first-child) {
         border-left-style: none;
      }
      .tab_item.active {
        border-bottom: none;
      }
</style>

### 使用 Vue 和 ElementUI 创建带标签页切换功能的表单 #### 1. 安装依赖库 为了使用 `Vue` 和 `ElementUI`,首先需要安装这些必要的包。 ```bash npm install vue@2.x element-ui axios ``` #### 2. 初始化项目结构并引入样式文件 在项目的入口文件中注册全局组件,并导入所需的 CSS 文件: ```javascript import Vue from 'vue'; import ElementUI from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css'; Vue.use(ElementUI); ``` #### 3. 编写 Tab 切换逻辑与表单验证规则 下面是一个完整的例子来展示如何创建一个多标签页形式的动态表单。此实例展示了两个主要部分——Tab 控件以及 Form 组件之间的交互方式[^1]。 ```html <template> <div id="app"> <!-- Tabs --> <el-tabs v-model="activeName" @tab-click="handleClick"> <el-tab-pane label="基本信息" name="first"> <BasicInfoForm ref="basicInfo"/> </el-tab-pane> <el-tab-pane label="高级选项" name="second"> <AdvancedOptionsForm ref="advancedOptions"/> </el-tab-pane> </el-tabs> <!-- 提交按钮 --> <el-button type="primary" @click="submitForms">提交</el-button> </div> </template> <script> export default { data() { return { activeName: "first", }; }, methods: { handleClick(tab, event) { console.log(tab, event); // 当前激活项发生变化时触发网络请求或其他操作 this.loadTabData(tab.name); }, loadTabData(name){ switch (name){ case 'first': // 加载第一个面板的数据... break; case 'second': // 加载第二个面板的数据... break; } }, submitForms(){ let forms = ['basicInfo', 'advancedOptions']; Promise.all(forms.map(form => new Promise((resolve,reject)=>{ this.$refs[form].validate(valid=>{ valid ? resolve(): reject(); }); }))).then(()=>{ alert('所有表单都已通过验证!'); }).catch(err=>alert('有未通过验证的表单')); } } }; </script> ``` 在此模板里定义了一个名为 `el-tabs` 的控件用于显示多个不同的分组;每个子节点代表一个单独的标签页(`el-tab-pane`)。当用户点击某个特定标签时会调用 `handleClick()` 方法处理对应的业务逻辑,比如加载新数据或执行其他动作[^3]。 另外还提供了一种机制用来遍历所有的子级表单并通过它们各自的 API 接口来进行整体性的有效性检查[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值