vue学习——v-for;@click;class绑定

<template>
   <div id="login">
     <div class="login-wrap">
        <ul class="menu-tab">
          <li :class="{'current':item.current}" v-for="item in menuTab" :key="item.id" @click="toggleMenu(item)">{{item.txt}}</li>
        </ul>
     </div>
   </div>
</template>

<script>
export default{
    name: 'login',
    data(){
      return{
        menuTab:[
          {txt:'登录',current:true},
          {txt:'注册',current:false},
        ],
        isActive:true
      }
    },
    created(){},
    mounted(){},
    //写函数的地方
    methods:{
      toggleMenu(data){
        this.menuTab.forEach(elem =>{//与先把所选元素的指定属性(这里就是文本的current样式清除,然后点击哪个,传进来数据的current则为true即被渲染)
          elem.current=false
        })
        data.current=true
      }
    }
}


</script>
<style lang="scss" scoped>
#login{
background-color: #344a5f;
height:100vh
}
.login-wrap{
  width:330px;
  margin:auto;
}
.menu-tab{
  text-align:center;
  li{
  display: inline-block;
  width:88px;
  line-height:36px;
  font-size: 14px;
  color: #fff;
  border-radius: 2px;
}
.current{
 background-color: black;
}
}

</style>

以上实现了登陆页面的登录以及注册的点击高光。其中重点为:第五行代码

v-for

其中v-for是循环显示item里的元素,这里item为menuTab,具体menuTab的内容在16行,(“item in item"这是初始格式,后面的item改为menuTab就可以了)key值一定要带上,表示唯一的表示

花括号里面的值,则为item.xxx 。”xxx“则是16行menuTab里的元素标识。这样就可以实现在li里面循环显示指定的内容了,这里即为”登录“,”注册“

class的绑定

class有很多种绑定形式,这里就介绍代码里用到的冒号形式的绑定

:class="{'active':isActive}" 这里active则是current,isActive写在下面决定是否绑定(31行,相当于总开关)那绑定到什么地方呢, 当然是item了,所以才会有:class="{'current':item.current},不过首先是要在item也就是menuTab里面有所标注:

menuTab:[

{txt:'登录',current:true},

{txt:'注册',current:false},

],

这里current后面跟跟的值可以作为页面初始化的值,即登录接受current这个类的渲染,而注册不接受。所以初始化呈现出来的则是登录选项是被渲染的,即背景颜色为黑色。

@click

@click="toggleMenu(item)"即给点击事件赋予一个函数:

methods:{

toggleMenu(data){

this.menuTab.forEach(elem =>{//与先把所选元素的指定属性(这里就是文本的current样式清除,然后点击哪个,传进来数据的current则为true即被渲染)

elem.current=false

})

data.current=true

}

}

我是vue的小萌新啦,如果有不对的地方或用词不准确的地方请多指教啦,谢谢!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3中,v-for指令的使用方式与Vue2有所不同。在Vue3中,可以使用以下方式在模板中使用v-for指令: <template> <div> <ul> <!-- 使用v-for指令 --> <li v-for="(item, index) in list" :key="index" :ref="liRefs[index"> {{ item }} </li> </ul> </div> </template> <script> export default { name: "App", data() { return { list: [1, 2, 3], liRefs: [] }; }, mounted() { // 通过ref属性获取多个元素的ref引用 this.liRefs = this.$refs.liRef; console.log("refs:", this.liRefs); }, }; </script> 需要注意的是,在Vue3中,需要手动创建一个数组来存储每个元素的ref引用,并且在模板中使用":ref"绑定到数组中的相应索引位置。然后可以通过this.$refs来访问这个数组,从而获取到每个元素的ref引用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [(二)vue3之v-for Array Refs](https://blog.csdn.net/weixin_50096821/article/details/123434485)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Vue指令之v-for的使用](https://blog.csdn.net/m0_62404884/article/details/125130059)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值