本项目中,一般组件包括:Header组件和Footer组件。现在来一一实现它们。
Header组件的实现
- 模板结构(template)
- components下新建文件夹images,存放图片资源
- 样式(style)
- 安装less、less-loader
- index.html引入reset.css
模板结构(template)如下。
<template>
<header class="header">
<!-- 头部的第一行 -->
<div class="top">
<div class="container">
<div class="loginList">
<p>尚品汇欢迎您!</p>
<p>
<span>请</span>
<a href="###">登录</a>
<a href="###" class="register">免费注册</a>
</p>
</div>
<div class="typeList">
<a href="###">我的订单</a>
<a href="###">我的购物车</a>
<a href="###">我的尚品汇</a>
<a href="###">尚品汇会员</a>
<a href="###">企业采购</a>
<a href="###">关注尚品汇</a>
<a href="###">合作招商</a>
<a href="###">商家后台</a>
</div>
</div>
</div>
<!--头部第二行 搜索区域-->
<div class="bottom">
<h1 class="logoArea">
<a class="logo" title="尚品汇" href="###" target="_blank">
<img src="./images/logo.png" alt="" />
</a>
</h1>
<div class="searchArea">
<form action="###" class="searchForm">
<input
type="text"
id="autocomplete"
class="input-error input-xxlarge"
/>
<button class="sui-btn btn-xlarge btn-danger" type="button">
搜索
</button>
</form>
</div>
</div>
</header>
</template>
components
文件夹下新建文件夹:images
,用于存放组件模板用到的图片资源,如img标签需要用到的logo.png,<img src="./images/logo.png" alt="" />
。
样式(style)如下。
<style lang="less" scoped>
.header {
& > .top {
background-color: #eaeaea;
height: 30px;
line-height: 30px;
.container {
width: 1200px;
margin: 0 auto;
overflow: hidden;
.loginList {
float: left;
p {
float: left;
margin-right: 10px;
.register {
border-left: 1px solid #b3aeae;
padding: 0 5px;
margin-left: 5px;
}
}
}
.typeList {
float: right;
a {
padding: 0 10px;
& + a {
border-left: 1px solid #b3aeae;
}
}
}
}
}
& > .bottom {
width: 1200px;
margin: 0 auto;
overflow: hidden;
.logoArea {
float: left;
.logo {
img {
width: 175px;
margin: 25px 45px;
}
}
}
.searchArea {
float: right;
margin-top: 35px;
.searchForm {
overflow: hidden;
input {
box-sizing: border-box;
width: 490px;
height: 32px;
padding: 0px 4px;
border: 2px solid #ea4a36;
float: left;
&:focus {
outline: none;
}
}
button {
height: 32px;
width: 68px;
background-color: #ea4a36;
border: none;
color: #fff;
float: left;
cursor: pointer;
&:focus {
outline: none;
}
}
}
}
}
}
</style>
项目中使用less
来编写样式,因此需安装less
和less-loader
。
npm install --save less
,默认安装的是最新版本的less(“version”: “4.1.2”)。
npm install --save-dev less-loader@5
,安装5版本的less-loader(“version”: “5.0.0”)。
npm install --save-dev less-loader,默认安装最新版本的less-loader。less-loader当前的最新版本是10版本。
less@4搭配less-loader@10,将遇到报错:Syntax Error: TypeError: this.getOptions is not a function。原因就是less-loader版本过高,因此改用5版本的less-loader即可。
reset.css
用于清除默认样式,将该css文件放入项目根目录的public文件夹下,并在public/index.html中引入。
public目录,用于存放静态资源。webpack打包时,这些资源会原封不动地打包到dist目录下。
src的assets目录,也用于存放静态资源,通常是多个组件共用的静态资源。webpack打包时,这些资源会以模块的形式打包到js中。
在Home组件中引入Header组件,并使用,Home.vue如下。
<template>
<div>
欢迎来到Home页面
<Header/>
</div>
</template>
<script>
import Header from "@/components/Header";
export default {
name:"Home",
components:{
Header
}
}
</script>
npm run serve
,启动应用,测试下效果。
Footer组件的实现
- 模板结构(template)
- 样式(style)
模板结构(template)如下。
<template>
<div class="footer">
<div class="footer-container">
<div class="footerList">
<div class="footerItem">
<h4>购物指南</h4>
<ul class="footerItemCon">
<li>购物流程</li>
<li>会员介绍</li>
<li>生活旅行/团购</li>
<li>常见问题</li>
<li>购物指南</li>
</ul>
</div>
<div class="footerItem">
<h4>配送方式</h4>
<ul class="footerItemCon">
<li>上门自提</li>
<li>211限时达</li>
<li>配送服务查询</li>
<li>配送费收取标准</li>
<li>海外配送</li>
</ul>
</div>
<div class="footerItem">
<h4>支付方式</h4>
<ul class="footerItemCon">
<li>货到付款</li>
<li>在线支付</li>
<li>分期付款</li>
<li>邮局汇款</li>
<li>公司转账</li>
</ul>
</div>
<div class="footerItem">
<h4>售后服务</h4>
<ul class="footerItemCon">
<li>售后政策</li>
<li>价格保护</li>
<li>退款说明</li>
<li>返修/退换货</li>
<li>取消订单</li>
</ul>
</div>
<div class="footerItem">
<h4>特色服务</h4>
<ul class="footerItemCon">
<li>夺宝岛</li>
<li>DIY装机</li>
<li>延保服务</li>
<li>尚品汇E卡</li>
<li>尚品汇通信</li>
</ul>
</div>
<div class="footerItem">
<h4>帮助中心</h4>
<img src="./images/wx_cz.jpg" />
</div>
</div>
<div class="copyright">
<ul class="helpLink">
<li>
关于我们
<span class="space"></span>
</li>
<li>
联系我们
<span class="space"></span>
</li>
<li>
关于我们
<span class="space"></span>
</li>
<li>
商家入驻
<span class="space"></span>
</li>
<li>
营销中心
<span class="space"></span>
</li>
<li>
友情链接
<span class="space"></span>
</li>
<li>
关于我们
<span class="space"></span>
</li>
<li>
营销中心
<span class="space"></span>
</li>
<li>
友情链接
<span class="space"></span>
</li>
<li>关于我们</li>
</ul>
<p>地址:北京市昌平区宏福科技园综合楼6层</p>
<p>京ICP备19006430号</p>
</div>
</div>
</div>
</template>
components/images
下放入图片:wx_cz.jpg,<img src="./images/wx_cz.jpg" />
用到了。
样式(style)如下。
<style lang="less" scoped>
.footer {
background-color: #eaeaea;
.footer-container {
width: 1200px;
margin: 0 auto;
padding: 0 15px;
.footerList {
padding: 20px;
border-bottom: 1px solid #e4e1e1;
border-top: 1px solid #e4e1e1;
overflow: hidden;
padding-left: 40px;
.footerItem {
width: 16.6666667%;
float: left;
h4 {
font-size: 14px;
}
.footerItemCon {
li {
line-height: 18px;
}
}
&:last-child img {
width: 121px;
}
}
}
.copyright {
padding: 20px;
.helpLink {
text-align: center;
li {
display: inline;
.space {
border-left: 1px solid #666;
width: 1px;
height: 13px;
background: #666;
margin: 8px 10px;
}
}
}
p {
margin: 10px 0;
text-align: center;
}
}
}
}
</style>
在Home组件中引入Header组件,并使用,Home.vue如下。
<template>
<div>
欢迎来到Home页面
<Header/>
<Footer/>
</div>
</template>
<script>
import Header from "@/components/Header";
import Footer from "@/components/Footer";
export default {
name:"Home",
components:{
Header,
Footer
}
}
</script>
npm run serve
,启动应用,测试下效果。