当前位置: 首页 > article >正文

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>


http://www.kler.cn/a/384776.html

相关文章:

  • Dependency: androidx.webkit:webkit:1.11.0-alpha02. 问题
  • 鸿蒙 APP 清除缓存
  • Windows系统使用OpenSSL生成自签名证书
  • 线性表之链表详解
  • 在 Vue 中实现与优化轮询技术
  • 默认 iOS 设置使已锁定的 iPhone 容易受到攻击
  • Ubuntu 22.04.5 LTS配置 bond
  • 删除 git submodule
  • 力扣 -- 滑动窗口
  • Pytorch训练时报nan
  • laravel chunkById 分块查询 使用时的问题
  • Spring Cloud Bus快速入门Demo
  • 第九周预习报告
  • qt QItemSelectionModel详解
  • 多个服务器共享同一个Redis Cluster集群,并且可以使用Redisson分布式锁
  • Git LFS
  • 专业130+总400+武汉理工大学855信号与系统考研经验电子信息与通信工程,真题,大纲,参考书。
  • 内置函数【MySQL】
  • 生产环境中使用:带有核函数的 SVM 处理非线性问题
  • Unity 的 WebGL 构建中资源图片访问方式
  • 人工智能:重塑生活与工作的神奇力量
  • WebRTC REMB算法
  • AIGC--如何在内容创作中合理使用AI生成工具?
  • H.265流媒体播放器EasyPlayer.js网页web无插件播放器:如何优化加载速度
  • 使用 Java 实现邮件发送功能
  • Matlab实现鲸鱼优化算法优化随机森林算法模型 (WOA-RF)(附源码)