软件教程 2025年08月6日
0 收藏 0 点赞 775 浏览 3122 个字
摘要 :

本文接:vue手机商城项目实战(5)-首页类型组件实现 一、素材准备 1、从网上下载一些商品图片,我这里准备了6个商品的图片 文件下载   文件名称:商品图……

本文接:vue手机商城项目实战(5)-首页类型组件实现

一、素材准备

1、从网上下载一些商品图片,我这里准备了6个商品的图片

文件下载

  文件名称:商品图片   文件大小:342kb
  下载声明:本站资源仅供学习和研究使用,不得用于商业用途。如资源不慎侵犯你的版权请联系博主处理!
  下载地址:本地下载\” rel=\”nofollow noopener noreferrer\” target=\”_blank\”> 点击下载   解压密码:www.panziye.com

2、将其解压后存放到assets\\img目录下,以便测试使用

二、实现商品列表组件

1、在views目录下新建Goods.vue,代码如下:

注意:商品详情和添加到购物车暂时不实现,只是写了个方法

<template>
    <div id="goods">
        <div class="goods-item" v-for="(item1,index1) in goodsList" :key="index1">
            <h4>
                {{item1.type}}
            </h4>
            <ul class="clearfix">
                <!-- 商品详情方法暂不实现 -->
                <li v-for="(item2,index2) in item1.products" :key="index2" @click="goodsDetail(item2)">
                    <img :src="item2.img[0]"></img>
                    <span class="price">¥{{item2.price}}</span>
                    <span class="name">{{item2.name}}</span>
                    <!-- 添加购物车方法暂不实现 -->
                    <span class="shop-car" @click.stop="addToCart(item2)">
                        <icon name="cart-plus" scale="1.2"></icon>
                    </span>
                </li>
            </ul>
        </div>
    </div> 
</template>

<script>
    export default {
        data(){
            // 模拟商品数据
            return{
                goodsList:[
                    {
                            "type":"女装",
                            "products":[
                            {"id":1,"name":"气质长裙","price":599,"img":[require("../assets/img/nz1-1.jpg"),require("../assets/img/nz1-2.jpg")],"explain":"春秋装2020年新款大码女装胖mm洋气贵夫人妈妈连衣裙秋冬气质长裙"},
                            {"id":2,"name":"礼服旗袍","price":699,"img":[require("../assets/img/nz2-1.jpg"),require("../assets/img/nz2-2.jpg")],"explain":"春秋年会礼服旗袍改良款婚礼妈妈喜宴装中年婆婆女长袖连衣裙高贵"}
                            ]
                        },
                    {
                            "type":"T恤",
                            "products":[
                            {"id":3,"name":"短袖T恤","price":119,"img":[require("../assets/img/tx1-1.jpg"),require("../assets/img/tx1-2.jpg")]},
                            {"id":4,"name":"情侣装","price":299,"img":[require("../assets/img/tx2-1.jpg"),require("../assets/img/tx2-2.jpg")]}
                            ]
                        },
                    {
                            "type":"鞋子",
                            "products":[
                            {"id":5,"name":"老爹鞋","price":189,"img":[require("../assets/img/xz1-1.jpg"),require("../assets/img/xz1-2.jpg")],"explain":"2020年新款秋季休闲运动鞋小白鞋女鞋子秋冬爆款百搭ins潮老爹鞋"},
                            {"id":6,"name":"运动鞋","price":219,"img":[require("../assets/img/xz2-1.jpg"),require("../assets/img/xz2-2.jpg")]}
                            ]
                    }
                  ]
            }
        }
    }
</script>

<style scoped>
    #goods {
        background-color: #f6f6f6;
    }
    h4 {
        padding: 0 10px;
        line-height: 36px;
        font-size: 14px;
        background-color: #fff;
    }
    h4:before {
        content: "";
        display: inline-block;
        margin-right: 6px;
        width: 4px;
        height: 12px;
        background-color: #e8380d;
    }
    ul {
        border-top: 1px solid #ddd;
        border-bottom: 1px solid #ddd;
    }
    li {
        position: relative;
        float: left;
        margin: 0 1px;
        display: flex;
        flex-direction: column;
        width: 49%;
        border-right: 1px solid #ddd;
    }
    .goods-item:last-child {
        margin-bottom: 55px;
    }
    img {
        margin: 10px 0;
        width: 100%;
        height: 100%;
    }
    .price {
        padding-left: 10px;
        font-size: 14px;
        color: #e8380d;
    }
    .name {
        padding-left: 10px;
    }
    .shop-car {
        position: absolute;
        right: 10px;
        bottom: 4px;
        color: #1296db;
        cursor: pointer;
        color: #F06431
    }
    .clearfix:after {
        content: '';
        display: block;
        clear: both;
    }
    .clearfix {
        zoom: 1;
    }
</style>

2、修改Home.vue,代码如下:

<template>
    <div id="home">
        <!-- 顶部导航栏 -->
        <mt-header fixed title="首页">
            <mt-button icon="search" slot="right" @click="search"></mt-button>
        </mt-header>
        <!-- 由于顶部导航栏固定,所以轮播图要上边距占据其高度 -->
        <div style="height: 40px;"></div>
        <!-- 轮播图 -->
        <Banner></Banner>
        <!-- 类型列表 -->
        <Type></Type>
        <!-- 商品类别 -->
        <Goods></Goods>
    </div>
</template>

<script>
    // 导入轮播图组件
    import Banner from './Banner.vue'
    import Type from './Type.vue'
    import Goods from './Goods.vue'
    export default {
        methods:{
            // 点击搜索按钮,跳转到搜索组件
            search(){
                this.$router.push({name:"Search"});
            }
        },
        // 注册组件
        components:{
            Banner,
            Type,
            Goods
        }
    }
</script>

<style scoped>
</style>

三、测试效果

vue手机商城项目实战(6)-首页商品列表组件实现

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/6026.html

管理员

相关推荐
2025-08-06

文章目录 一、Promise基础回顾 二、Promise 与 axios 结合使用场景及方法 (一)直接返回 axios …

270
2025-08-06

文章目录 一、模块初始化时的内部机制 二、常见导出写法的差异分析 (一)写法一:module.exports…

108
2025-08-06

文章目录 一、ResizeObserver详解 (一)ResizeObserver是什么 (二)ResizeObserver的基本用法 …

684
2025-08-06

文章目录 一、前期准备工作 (一)下载相关文件 (二)安装必要工具 二、处理扣子空间生成的文件…

340
2025-08-06

文章目录 一、官方文档 二、自动解包的数据类型 ref对象:无需.value即可访问 reactive对象:保持…

372
2025-08-06

文章目录 一、Hooks的工作原理 二、在if语句中使用Hook会出什么岔子? 三、React官方的Hook使用规…

844
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号