Vue项目实战:首页实现

本文详细介绍了Vue项目中首页的实现,包括Nav-Header组件的复用技巧、使用@mixins简化代码、统一修改系统主题色以及数据请求。同时,讲解了如何通过vue-awesome-swiper实现轮播图,首页轮播菜单的创建,Modal弹窗的动画效果及父子组件通信,以及利用Vue的懒加载功能。
摘要由CSDN通过智能技术生成

目录

1. Nav-Header组件
2. 首页轮播功能实现

一. Nav-Header组件

(1)组件复用的一个技巧:

因为商场网站中多个页面共用了头部组件nav-header和底部组件nav-footer,而为了避免 每个需要这两个组件的页面中都需要单独引入组件,我们可以通过一个home页面来复用共用的组件。

  • 在路由文件中:
	{
   
			path: '/',
            name: 'home',
            component:Home,
            redirect: '/index',
            children: [ //下面是需要头部和底部组件的页面
                {
   
                    path: '/index',
                    name: 'index',
                    component: Index,
                },
                {
   
                    path: '/product/:id',
                    name: 'product',
                    component: Product,
                },
                {
   
                    path: '/detail/:id',
                    name: 'detail',
                    component: Detail,
                }                
            ]
        },
  • 在home.vue中:
<template>
    <div>
        home
        <nav-header></nav-header>
        <router-view></router-view>
        <nav-footer></nav-footer>
    </div>
</template>
<script>
import NavHeader from './../components/NavHeader';
import NavFooter from './../components/NavFooter';
export default {
    
    name: 'nav-home',
    components: {
    
        NavHeader,
        NavFooter

    }
}
</script>
(2)通过@mixin简化代码

为了有效的维护和开发项目,代码的重复利用就显得尤为重要。在Sass中,除了@import@extend可以使代码更加具有重复利用性,@mixin指令也同样能提高代码的重复使用率并简化你的代码。

  • 在assets文件夹中创建一个scss文件夹。在scss文件夹中创建mixin.scss文件,在里面存放将会共用的代码:
@mixin flex($hov: space-between, $col:center) {
    display: flex;
    justify-content: $hov;
    align-items: $col;
}

@mixin bgImg($w:0, $h:0, $img:'', $size:contain) {
    display: inline-block;
    width: $w;
    height: $h;
    background:url($img) no-repeat center;
    background-size: $size;
    margin-right: 4px;
}
  • 在用到mixin.scss里样式的文件NavHeader里,在<style>标签中引入mixin.scss文件并替换用到的css代码
<style lang="scss">
@import './../assets/scss/mixin.scss';
    .container{
            height: 112px;
		/*	display: flex;
        	justify-content: $hov;
        	 align-items: $col; */
            @include flex();
    }
        .my-cart{
            width: 100px;
            background-color: #FF6600;
            text-align: center;
            color: #ffffff;
            .icon-cart{
           /*
               display: inline-block;
  			   width: 16px;
   		       height: 12px;
  		  	   background:url('/imgs/icon-cart-checked.png') no-repeat center;
 			   background-size: contain;
 			   margin-right: 4px;
                */
                @include bgImg(16px, 12px, '/imgs/icon-cart-checked.png');
                margin-right:4px;
            }
        }  
    
</style>
  • @mixin学习资料:

Sass: @mixin指令介绍

Sass: @mixin 菜鸟教程

(3)统一修改系统主题色
  • 在scss文件夹中加入文件config.scss文件,该文件定义了一些常规样式。
/*
  样式规范表
*/
$min-width:1226px;  //容器安全区域宽度

// 常规字体大小设置
$fontA:       80px; //产品站大标题
$fontB:       38px; //产品站标题
$fontC:       28px; //导航标题
$fontD:       26px; //产品站副标题
$fontE:       24px; 
$fontF:       22px;
$fontG:       20px; //用在较为重要的文字、操作按钮
$fontH:       18px; //用于大多数文字
$fontI:       16px; //用于辅助性文字
$fontJ:       14px; //用于一般文字
$fontK:       12px; //系统默认大小

// 常规配色设置
$colorA:      #FF6600 !default; //用于需要突出和强调的文字、按钮和icon
$colorB:      #333333 !default; //用于较为重要的文字信息、内页标题等
$colorC:      #666666 !default; //用于普通段落信息 引导词
$colorD:      #999999 !default; //用于辅助、此要的文字信息、普通按钮的描边
$colorE:      #cccccc !default; //用于特别弱的文字
$colorF:      #d7d7d7 !default; //用于列表分割线、标签秒变
$colorG:      #ffffff !default; //用于导航栏文字、按钮文字、白色背景
$colorH:      #e5e5e5 !default; //用于上下模块分割线
$colorI:      #000000 !default; //纯黑色背景,用于遮罩层
$colorJ:      #F5F5F5 !default; //弹框标题背景色
$colorK:      #FFFAF7 !default; //订单标题背景色
  • 在需要用到常规样式的组件或页面中引入config.scss并使用样式:
<style lang="scss">
@import "./../assets/scss/config.scss";
          &:hover {
    
              color:$colorA;
          }
</style>    
(4) 数据请求
export default {
   
  name: "nav-header",
  data() {
   
    return {
   
      username: "jack",
      phoneList: []
    };
  },
  mounted() {
   
    this.getProductList();
  
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值