自学内容网 自学内容网

vue3学习---案例实现学习

目录

一,京东秒杀导航栏

1,静态样式展示

2,设计步骤

1,html骨架

2,css样式设计

3,vue3动态样式设计

 1,v-for使用

1,先在js模块做如下准备

 2,v-for遍历

2,实现动态设置css效果

 1,设计可变参数下标

2,让activeIndex作为一个动态下标改变样式

4,所有代码


一,京东秒杀导航栏

1,静态样式展示

2,设计步骤

1,html骨架
  <ul>
        <li><a href="#">京东秒杀</a></li>
        <li><a href="#">每日特价</a></li>
        <li><a href="#">限时秒杀</a></li>
    </ul>

 使用ul和li设计一个简单的骨架。

效果:

 

2,css样式设计
*  //给所有的元素干掉marging和padding
  {
      margin: 0px;
      padding: 0px;
  }

  ul
  {
     //去掉list样式
     list-style: none;
     //让ul这个样式水平填充
     display: flex;
     //设置ul的宽度
     width: 400px;
     //设置边距
     line-height: 50px;
     //设置下边框的样式
     border-bottom: 1px solid red;
  }

   ul li
  {
   
    
     //设置大小
     width: 100px;
     height: 50px;
     //字体居中
     text-align: center;
  }

  ul li a
  {
     //去掉a标签的样式
     text-decoration: none;
     //设置字体颜色
     color: black;
     //字体加粗
     font-weight: bold;
    //让每一个li元素都是块级元素
     display: block;
  }

  //动态样式:用户点击时才添加到特定的元素中
  .active
  {
     background-color: red;
     color: white;
  }

设计完上面的样式后,界面就变成如下样式

 

3,vue3动态样式设计

 1,v-for使用

v-for能够循环遍历一个数组,得到这个数组的一个子元素和对应下标。 

使用如下:

1,先在js模块做如下准备
<script setup>
 import { ref } from 'vue'//引入ref模块,主要是为了引入数据响应式
 //定义一个数组,用来给v-for遍历
 const tabs = ref([
      { id: 1, name: "京东秒杀" },
      { id: 2, name: "每日特价" },
      { id: 1, name: "限时抢购" }
 ])
 
 </script>

 2,v-for遍历
 <template>
    <ul>
        <li v-for="item,index in tabs " ><a href="#">{{ item.name }}</a></li>
    </ul>
 </template>
2,实现动态设置css效果
 1,设计可变参数下标
const activeIndex = ref(0)
2,让activeIndex作为一个动态下标改变样式
 <ul>
        <li v-for="item,index in tabs " >
            <a href="#" :class="activeIndex===index?'active':''" 
            @click="activeIndex=index">//绑定点击事件,点击就改变activeIndex下标
                {{ item.name }}
            </a></li>
    </ul>

4,所有代码

<script setup>
 import { ref } from 'vue'//引入ref模块,主要是为了引入数据响应式
 //定义一个数组,用来给v-for遍历
 const tabs = ref([
      { id: 1, name: "京东秒杀" },
      { id: 2, name: "每日特价" },
      { id: 1, name: "限时抢购" }
 ])

 const activeIndex = ref(0)
 
 </script>


 <template>
    <ul>
        <li v-for="item,index in tabs " >
            <a href="#" :class="activeIndex===index?'active':''" @click="activeIndex=index">
                {{ item.name }}
            </a></li>
    </ul>
 </template>
 
 
 <style lang="scss">
  
  *  //给所有的元素干掉marging和padding
  {
      margin: 0px;
      padding: 0px;
  }

  ul
  {
     //去掉list样式
     list-style: none;
     //让ul这个样式水平填充
     display: flex;
     //设置ul的宽度
     width: 400px;
     //设置边距
     line-height: 50px;
     //设置下边框的样式
     border-bottom: 1px solid red;
  }

  ul li
  {
     //设置大小
     width: 100px;
     height: 50px;
     //字体居中
     text-align: center;
  }

  ul li a
  {
     //去掉a标签的样式
     text-decoration: none;
     //设置字体颜色
     color: black;
     //字体加粗
     font-weight: bold;
    //让每一个li元素都是块级元素
     display: block;
  }

  //动态样式:用户点击时才添加到特定的元素中
  .active
  {
     background-color: red;
     color: white;
  }
 
 </style>


原文地址:https://blog.csdn.net/qq_41934502/article/details/143607838

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!