當(dāng)前src/App.vue
完整代碼如下:
<template>
<!-- 主體內(nèi)容容器 -->
<div class="wrapper">
<!-- 頂部位置信息左敌、通知欄 -->
<div class="position">
<span>
<i class="position__icon custom-icon custom-icon-position"></i>
</span>
西安交通大學(xué)興慶校區(qū)梧桐苑食堂北側(cè)小院子放臺(tái)階上
<i class="position__notice custom-icon custom-icon-bell"></i>
</div>
<!-- 搜索欄 -->
<div class="search">
<span class="search__icon">
<i class="custom-icon custom-icon-search"></i>
</span>
<span class="search__text"> 黃燜雞米飯</span>
</div>
<!-- 橫幅廣告推廣欄 -->
<div class="banner">
<img class="banner__img" src="/i18n/9_16/img/banner.jpg" />
</div>
<!-- 分類列表欄 -->
<div class="category_list">
<!-- 10個(gè) -->
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/超市.png"
/>
<p class="category_list__item__desc">超市便利</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/菜市場(chǎng).png"
/>
<p class="category_list__item__desc">菜市場(chǎng)</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/水果店.png"
/>
<p class="category_list__item__desc">水果店</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/鮮花.png"
/>
<p class="category_list__item__desc">鮮花綠植</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/醫(yī)藥健康.png"
/>
<p class="category_list__item__desc">醫(yī)藥健康</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/家居.png"
/>
<p class="category_list__item__desc">家居時(shí)尚</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/蛋糕.png"
/>
<p class="category_list__item__desc">烘焙蛋糕</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/簽到.png"
/>
<p class="category_list__item__desc">簽到</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/大牌免運(yùn).png"
/>
<p class="category_list__item__desc">大牌免運(yùn)</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/紅包.png"
/>
<p class="category_list__item__desc">紅包套餐</p>
</div>
</div>
<!-- 灰色留白分隔欄 -->
<div class="gap"></div>
</div>
<!-- 底部主菜單容器 -->
<div class="docker">
<span class="docker__item docker__item--active">
<div class="docker__item_icon">
<i class="custom-icon custom-icon-home"></i>
</div>
<div class="docker__item__title">首頁(yè)</div>
</span>
<span class="docker__item ">
<div class="docker__item_icon">
<i class="custom-icon custom-icon-shopping"></i>
</div>
<div class="docker__item__title">購(gòu)物車</div>
</span>
<span class="docker__item ">
<div class="docker__item_icon">
<i class="custom-icon custom-icon-order"></i>
</div>
<div class="docker__item__title">訂單</div>
</span>
<span class="docker__item ">
<div class="docker__item_icon">
<i class="custom-icon custom-icon-my"></i>
</div>
<div class="docker__item__title">我的</div>
</span>
</div>
<router-view />
</template>
<style lang="scss">
@import './style/viriables';
@import './style/mixins';
.wrapper {
position: absolute;
left: 0;
top: 0;
bottom: 0.5rem;
right: 0;
padding: 0 0.18rem;
}
.position {
//文字顯示省略號(hào)配置
@include ellipsis;
// 其他一般設(shè)定
position: relative;
padding: 0.16rem 0.24rem 0.16rem 0;
line-height: 0.22rem;
font-size: 0.16rem;
color: $content-font-color;
.position__icon {
position: relative;
top: 0.01rem;
font-size: 0.2rem;
margin-right: 0.08rem;
}
.position__notice {
top: 0.17rem;
right: 0;
position: absolute;
font-size: 0.2rem;
}
}
.search {
margin-bottom: 0.12rem;
line-height: 0.32rem; //行高:將會(huì)自動(dòng)撐開
background: #f5f5f5;
color: #b7b7b7;
border-radius: 0.16rem;
font-size: 0.14rem;
&__icon {
display: inline-block;
padding: 0 0.05rem 0 0.16rem;
font-size: 0.15rem;
}
&__text {
display: inline-block;
font-size: 0.14rem;
}
}
.banner {
height: 0%;
overflow: hidden;
padding-bottom: 25%; //屏幕寬度的25%
&__img {
width: 100%;
}
}
.category_list {
display: flex; //flex布局:彈性盒
flex-wrap: wrap; //讓彈性盒元素在必要的時(shí)候拆行
margin-top: 0.16rem;
&__item {
width: 20%;
&__img {
display: block;
width: 0.4rem;
height: 0.4rem;
margin: 0 auto;
}
&__desc {
margin: 0.06rem 0 0.16rem 0;
text-align: center;
color: $content-font-color;
}
}
}
.gap {
height: 0.1rem;
background: $content-bg-color;
margin: 0 -0.18rem;
}
.docker {
color: $content-font-color;
display: flex; //自適應(yīng)均贈(zèng),彈性盒子
position: absolute; //絕對(duì)定位
box-sizing: border-box; //這個(gè)會(huì)以body的最外層作為容器的最外層
padding: 0 0.18rem;
left: 0;
bottom: 0;
width: 100%;
height: 0.49rem;
border-top: 1px solid $content-bg-color;
&__item {
flex: 1;
text-align: center;
&--active {
color: #1fa4fc;
}
&_icon {
margin: 0.05rem 0 0.02rem 0; //圖標(biāo)距離上邊距7px左右;
font-size: 0.18rem;
}
&__title {
//瀏覽器最小像素是12px荷逞,如果想表達(dá)12px以下大小得如下編寫
font-size: 0.12rem;
transform: scale(0.5 0.5); //橫向縮小50% 縱向搜小50%
transform-origin: center top; //縮放的中心點(diǎn)
}
}
}
</style>
增加主體商鋪內(nèi)容:
<template>
<!-- 主體內(nèi)容容器 -->
<div class="wrapper">
<!-- 頂部位置信息、通知欄 -->
<div class="position">
......
</div>
<!-- 搜索欄 -->
<div class="search">
......
</div>
<!-- 橫幅廣告推廣欄 -->
<div class="banner">
......
</div>
<!-- 分類列表欄 -->
<div class="category_list">
......
</div>
<!-- 灰色留白分隔欄 -->
<div class="gap"></div>
<!-- 主體商鋪展示內(nèi)容 -->
<div class="nearby">
<h3 class="nearby__title">附近店鋪</h3>
<div class="nearby__item">
<img src="/i18n/9_16/img/near.png" class="nearby__item__img" />
<div class="nearby__item__content">
<div class="nearby__item__content__title">某爾瑪</div>
<div class="nearby__item__content__tags">
<span class="nearby__item__content__tag">月售1萬(wàn)+</span>
<span class="nearby__item__content__tag">起送¥0</span>
<span class="nearby__item__content__tag">基礎(chǔ)運(yùn)費(fèi)¥5</span>
</div>
<p class="nearby__item__content__highlight">
VIP尊享89元減4元運(yùn)費(fèi)券(每月3張)
</p>
</div>
</div>
</div>
</div>
......
效果如下:
image.png
調(diào)整樣式:
......
.nearby {
&__title {
margin: 0.16rem 0 0.02rem 0;
font-size: 0.18rem;
color: $content-font-color;
font-weight: normal; //不加粗展示
}
&__item {
display: flex;
&__img {
width: 0.56rem;
height: 0.56rem;
}
}
}
.docker {
......
}
image.png
進(jìn)一步調(diào)整
.nearby {
&__title {
margin: 0.16rem 0 0.02rem 0;
font-size: 0.18rem;
color: $content-font-color;
font-weight: normal; //不加粗展示
}
&__item {
display: flex;
padding-top: 0.12rem;
// 圖片
&__img {
margin-right: 0.16rem;
width: 0.56rem;
height: 0.56rem;
}
//右側(cè)文字內(nèi)容
&__content {
flex: 1;
&__title {
line-height: 0.22rem;
font-size: 0.16rem;
color: $content-font-color;
}
}
}
}
image.png
進(jìn)一步優(yōu)化:
.nearby {
&__title {
margin: 0.16rem 0 0.02rem 0;
font-size: 0.18rem;
color: $content-font-color;
font-weight: normal; //不加粗展示
}
&__item {
display: flex;
padding-top: 0.12rem;
// 圖片
&__img {
margin-right: 0.16rem;
width: 0.56rem;
height: 0.56rem;
}
//右側(cè)文字內(nèi)容
&__content {
flex: 1;
&__title {
line-height: 0.22rem;
font-size: 0.16rem;
color: $content-font-color;
}
&__tags {
margin-top: 0.08rem;
line-height: 0.18rem;
font-size: 0.13rem;
color: $content-font-color;
}
&__tag {
margin-right: 0.16rem;
}
}
}
}
image.png
進(jìn)一步優(yōu)化:
.nearby {
&__title {
margin: 0.16rem 0 0.02rem 0;
font-size: 0.18rem;
color: $content-font-color;
font-weight: normal; //不加粗展示
}
&__item {
display: flex;
padding-top: 0.12rem;
// 圖片
&__img {
margin-right: 0.16rem;
width: 0.56rem;
height: 0.56rem;
}
//右側(cè)文字內(nèi)容
&__content {
padding-bottom: 0.12rem;
border-bottom: 1px solid $content-bg-color;
flex: 1;
&__title {
line-height: 0.22rem;
font-size: 0.16rem;
color: $content-font-color;
}
&__tags {
margin-top: 0.08rem;
line-height: 0.18rem;
font-size: 0.13rem;
color: $content-font-color;
}
&__tag {
margin-right: 0.16rem;
}
&__highlight {
color: #e93b3b;
line-height: 0.18rem;
font-size: 0.13rem;
margin: 0.08rem 0 0 0;
}
}
}
}
image.png
到此附近店鋪設(shè)計(jì)完畢,復(fù)制模塊組多個(gè),到此完整代碼為:
<template>
<!-- 主體內(nèi)容容器 -->
<div class="wrapper">
<!-- 頂部位置信息朱灿、通知欄 -->
<div class="position">
<span>
<i class="position__icon custom-icon custom-icon-position"></i>
</span>
西安交通大學(xué)興慶校區(qū)梧桐苑食堂北側(cè)小院子放臺(tái)階上
<i class="position__notice custom-icon custom-icon-bell"></i>
</div>
<!-- 搜索欄 -->
<div class="search">
<span class="search__icon">
<i class="custom-icon custom-icon-search"></i>
</span>
<span class="search__text"> 黃燜雞米飯</span>
</div>
<!-- 橫幅廣告推廣欄 -->
<div class="banner">
<img class="banner__img" src="/i18n/9_16/img/banner.jpg" />
</div>
<!-- 分類列表欄 -->
<div class="category_list">
<!-- 10個(gè) -->
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/超市.png"
/>
<p class="category_list__item__desc">超市便利</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/菜市場(chǎng).png"
/>
<p class="category_list__item__desc">菜市場(chǎng)</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/水果店.png"
/>
<p class="category_list__item__desc">水果店</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/鮮花.png"
/>
<p class="category_list__item__desc">鮮花綠植</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/醫(yī)藥健康.png"
/>
<p class="category_list__item__desc">醫(yī)藥健康</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/家居.png"
/>
<p class="category_list__item__desc">家居時(shí)尚</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/蛋糕.png"
/>
<p class="category_list__item__desc">烘焙蛋糕</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/簽到.png"
/>
<p class="category_list__item__desc">簽到</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/大牌免運(yùn).png"
/>
<p class="category_list__item__desc">大牌免運(yùn)</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/紅包.png"
/>
<p class="category_list__item__desc">紅包套餐</p>
</div>
</div>
<!-- 灰色留白分隔欄 -->
<div class="gap"></div>
<!-- 主體商鋪展示內(nèi)容 -->
<div class="nearby">
<h3 class="nearby__title">附近店鋪</h3>
<!-- 5個(gè) -->
<div class="nearby__item">
<img src="/i18n/9_16/img/near.png" class="nearby__item__img" />
<div class="nearby__item__content">
<div class="nearby__item__content__title">某爾瑪</div>
<div class="nearby__item__content__tags">
<span class="nearby__item__content__tag">月售1萬(wàn)+</span>
<span class="nearby__item__content__tag">起送¥0</span>
<span class="nearby__item__content__tag">基礎(chǔ)運(yùn)費(fèi)¥5</span>
</div>
<p class="nearby__item__content__highlight">
VIP尊享89元減4元運(yùn)費(fèi)券(每月3張)
</p>
</div>
</div>
<div class="nearby__item">
<img src="/i18n/9_16/img/near.png" class="nearby__item__img" />
<div class="nearby__item__content">
<div class="nearby__item__content__title">某爾瑪</div>
<div class="nearby__item__content__tags">
<span class="nearby__item__content__tag">月售1萬(wàn)+</span>
<span class="nearby__item__content__tag">起送¥0</span>
<span class="nearby__item__content__tag">基礎(chǔ)運(yùn)費(fèi)¥5</span>
</div>
<p class="nearby__item__content__highlight">
VIP尊享89元減4元運(yùn)費(fèi)券(每月3張)
</p>
</div>
</div>
<div class="nearby__item">
<img src="/i18n/9_16/img/near.png" class="nearby__item__img" />
<div class="nearby__item__content">
<div class="nearby__item__content__title">某爾瑪</div>
<div class="nearby__item__content__tags">
<span class="nearby__item__content__tag">月售1萬(wàn)+</span>
<span class="nearby__item__content__tag">起送¥0</span>
<span class="nearby__item__content__tag">基礎(chǔ)運(yùn)費(fèi)¥5</span>
</div>
<p class="nearby__item__content__highlight">
VIP尊享89元減4元運(yùn)費(fèi)券(每月3張)
</p>
</div>
</div>
<div class="nearby__item">
<img src="/i18n/9_16/img/near.png" class="nearby__item__img" />
<div class="nearby__item__content">
<div class="nearby__item__content__title">某爾瑪</div>
<div class="nearby__item__content__tags">
<span class="nearby__item__content__tag">月售1萬(wàn)+</span>
<span class="nearby__item__content__tag">起送¥0</span>
<span class="nearby__item__content__tag">基礎(chǔ)運(yùn)費(fèi)¥5</span>
</div>
<p class="nearby__item__content__highlight">
VIP尊享89元減4元運(yùn)費(fèi)券(每月3張)
</p>
</div>
</div>
<div class="nearby__item">
<img src="/i18n/9_16/img/near.png" class="nearby__item__img" />
<div class="nearby__item__content">
<div class="nearby__item__content__title">某爾瑪</div>
<div class="nearby__item__content__tags">
<span class="nearby__item__content__tag">月售1萬(wàn)+</span>
<span class="nearby__item__content__tag">起送¥0</span>
<span class="nearby__item__content__tag">基礎(chǔ)運(yùn)費(fèi)¥5</span>
</div>
<p class="nearby__item__content__highlight">
VIP尊享89元減4元運(yùn)費(fèi)券(每月3張)
</p>
</div>
</div>
</div>
</div>
<!-- 底部主菜單容器 -->
<div class="docker">
<span class="docker__item docker__item--active">
<div class="docker__item_icon">
<i class="custom-icon custom-icon-home"></i>
</div>
<div class="docker__item__title">首頁(yè)</div>
</span>
<span class="docker__item ">
<div class="docker__item_icon">
<i class="custom-icon custom-icon-shopping"></i>
</div>
<div class="docker__item__title">購(gòu)物車</div>
</span>
<span class="docker__item ">
<div class="docker__item_icon">
<i class="custom-icon custom-icon-order"></i>
</div>
<div class="docker__item__title">訂單</div>
</span>
<span class="docker__item ">
<div class="docker__item_icon">
<i class="custom-icon custom-icon-my"></i>
</div>
<div class="docker__item__title">我的</div>
</span>
</div>
<router-view />
</template>
<style lang="scss">
@import './style/viriables';
@import './style/mixins';
.wrapper {
position: absolute;
left: 0;
top: 0;
bottom: 0.5rem;
right: 0;
padding: 0 0.18rem;
}
.position {
//文字顯示省略號(hào)配置
@include ellipsis;
// 其他一般設(shè)定
position: relative;
padding: 0.16rem 0.24rem 0.16rem 0;
line-height: 0.22rem;
font-size: 0.16rem;
color: $content-font-color;
.position__icon {
position: relative;
top: 0.01rem;
font-size: 0.2rem;
margin-right: 0.08rem;
}
.position__notice {
top: 0.17rem;
right: 0;
position: absolute;
font-size: 0.2rem;
}
}
.search {
margin-bottom: 0.12rem;
line-height: 0.32rem; //行高:將會(huì)自動(dòng)撐開
background: #f5f5f5;
color: #b7b7b7;
border-radius: 0.16rem;
font-size: 0.14rem;
&__icon {
display: inline-block;
padding: 0 0.05rem 0 0.16rem;
font-size: 0.15rem;
}
&__text {
display: inline-block;
font-size: 0.14rem;
}
}
.banner {
height: 0%;
overflow: hidden;
padding-bottom: 25%; //屏幕寬度的25%
&__img {
width: 100%;
}
}
.category_list {
display: flex; //flex布局:彈性盒
flex-wrap: wrap; //讓彈性盒元素在必要的時(shí)候拆行
margin-top: 0.16rem;
&__item {
width: 20%;
&__img {
display: block;
width: 0.4rem;
height: 0.4rem;
margin: 0 auto;
}
&__desc {
margin: 0.06rem 0 0.16rem 0;
text-align: center;
color: $content-font-color;
}
}
}
.gap {
height: 0.1rem;
background: $content-bg-color;
margin: 0 -0.18rem;
}
.nearby {
&__title {
margin: 0.16rem 0 0.02rem 0;
font-size: 0.18rem;
color: $content-font-color;
font-weight: normal; //不加粗展示
}
&__item {
display: flex;
padding-top: 0.12rem;
// 圖片
&__img {
margin-right: 0.16rem;
width: 0.56rem;
height: 0.56rem;
}
//右側(cè)文字內(nèi)容
&__content {
padding-bottom: 0.12rem;
border-bottom: 1px solid $content-bg-color;
flex: 1;
&__title {
line-height: 0.22rem;
font-size: 0.16rem;
color: $content-font-color;
}
&__tags {
margin-top: 0.08rem;
line-height: 0.18rem;
font-size: 0.13rem;
color: $content-font-color;
}
&__tag {
margin-right: 0.16rem;
}
&__highlight {
color: #e93b3b;
line-height: 0.18rem;
font-size: 0.13rem;
margin: 0.08rem 0 0 0;
}
}
}
}
.docker {
color: $content-font-color;
display: flex; //自適應(yīng)均贈(zèng),彈性盒子
position: absolute; //絕對(duì)定位
box-sizing: border-box; //這個(gè)會(huì)以body的最外層作為容器的最外層
padding: 0 0.18rem;
left: 0;
bottom: 0;
width: 100%;
height: 0.49rem;
border-top: 1px solid $content-bg-color;
&__item {
flex: 1;
text-align: center;
&--active {
color: #1fa4fc;
}
&_icon {
margin: 0.05rem 0 0.02rem 0; //圖標(biāo)距離上邊距7px左右;
font-size: 0.18rem;
}
&__title {
//瀏覽器最小像素是12px报账,如果想表達(dá)12px以下大小得如下編寫
font-size: 0.12rem;
transform: scale(0.5 0.5); //橫向縮小50% 縱向搜小50%
transform-origin: center top; //縮放的中心點(diǎn)
}
}
}
</style>
image.png
這里發(fā)現(xiàn)數(shù)據(jù)溢出屏幕纵势,解決方案如下:
.wrapper {
overflow-y: auto;
......
}
image.png
當(dāng)然,還可以附近店鋪
底部留白會(huì)好看一些:
.wrapper {
padding: 0 0.18rem 0.1rem 0.18rem;
......
}
組件的合理拆分
到此為止泽疆,首頁(yè)代碼已經(jīng)接近400行户矢,以后維護(hù)會(huì)相當(dāng)困難。
新建src\views\home\Home.vue
:
將src/App.vue
復(fù)制到src\views\home\Home.vue
修改src/App.vue
:
<template>
<Home />
</template>
<script>
import Home from '@/views/home/Home'
export default {
name: 'App',
components: { Home }
}
</script>
src\views\home\Home.vue
:
<template>
<!-- 主體內(nèi)容容器 -->
<div class="wrapper">
<!-- 頂部位置信息殉疼、通知欄 -->
<div class="position">
<span>
<i class="position__icon custom-icon custom-icon-position"></i>
</span>
西安交通大學(xué)興慶校區(qū)梧桐苑食堂北側(cè)小院子放臺(tái)階上
<i class="position__notice custom-icon custom-icon-bell"></i>
</div>
<!-- 搜索欄 -->
<div class="search">
<span class="search__icon">
<i class="custom-icon custom-icon-search"></i>
</span>
<span class="search__text"> 黃燜雞米飯</span>
</div>
<!-- 橫幅廣告推廣欄 -->
<div class="banner">
<img class="banner__img" src="/i18n/9_16/img/banner.jpg" />
</div>
<!-- 分類列表欄 -->
<div class="category_list">
<!-- 10個(gè) -->
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/超市.png"
/>
<p class="category_list__item__desc">超市便利</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/菜市場(chǎng).png"
/>
<p class="category_list__item__desc">菜市場(chǎng)</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/水果店.png"
/>
<p class="category_list__item__desc">水果店</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/鮮花.png"
/>
<p class="category_list__item__desc">鮮花綠植</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/醫(yī)藥健康.png"
/>
<p class="category_list__item__desc">醫(yī)藥健康</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/家居.png"
/>
<p class="category_list__item__desc">家居時(shí)尚</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/蛋糕.png"
/>
<p class="category_list__item__desc">烘焙蛋糕</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/簽到.png"
/>
<p class="category_list__item__desc">簽到</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/大牌免運(yùn).png"
/>
<p class="category_list__item__desc">大牌免運(yùn)</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/紅包.png"
/>
<p class="category_list__item__desc">紅包套餐</p>
</div>
</div>
<!-- 灰色留白分隔欄 -->
<div class="gap"></div>
<!-- 主體商鋪展示內(nèi)容 -->
<div class="nearby">
<h3 class="nearby__title">附近店鋪</h3>
<!-- 5個(gè) -->
<div class="nearby__item">
<img src="/i18n/9_16/img/near.png" class="nearby__item__img" />
<div class="nearby__item__content">
<div class="nearby__item__content__title">某爾瑪</div>
<div class="nearby__item__content__tags">
<span class="nearby__item__content__tag">月售1萬(wàn)+</span>
<span class="nearby__item__content__tag">起送¥0</span>
<span class="nearby__item__content__tag">基礎(chǔ)運(yùn)費(fèi)¥5</span>
</div>
<p class="nearby__item__content__highlight">
VIP尊享89元減4元運(yùn)費(fèi)券(每月3張)
</p>
</div>
</div>
<div class="nearby__item">
<img src="/i18n/9_16/img/near.png" class="nearby__item__img" />
<div class="nearby__item__content">
<div class="nearby__item__content__title">某爾瑪</div>
<div class="nearby__item__content__tags">
<span class="nearby__item__content__tag">月售1萬(wàn)+</span>
<span class="nearby__item__content__tag">起送¥0</span>
<span class="nearby__item__content__tag">基礎(chǔ)運(yùn)費(fèi)¥5</span>
</div>
<p class="nearby__item__content__highlight">
VIP尊享89元減4元運(yùn)費(fèi)券(每月3張)
</p>
</div>
</div>
<div class="nearby__item">
<img src="/i18n/9_16/img/near.png" class="nearby__item__img" />
<div class="nearby__item__content">
<div class="nearby__item__content__title">某爾瑪</div>
<div class="nearby__item__content__tags">
<span class="nearby__item__content__tag">月售1萬(wàn)+</span>
<span class="nearby__item__content__tag">起送¥0</span>
<span class="nearby__item__content__tag">基礎(chǔ)運(yùn)費(fèi)¥5</span>
</div>
<p class="nearby__item__content__highlight">
VIP尊享89元減4元運(yùn)費(fèi)券(每月3張)
</p>
</div>
</div>
<div class="nearby__item">
<img src="/i18n/9_16/img/near.png" class="nearby__item__img" />
<div class="nearby__item__content">
<div class="nearby__item__content__title">某爾瑪</div>
<div class="nearby__item__content__tags">
<span class="nearby__item__content__tag">月售1萬(wàn)+</span>
<span class="nearby__item__content__tag">起送¥0</span>
<span class="nearby__item__content__tag">基礎(chǔ)運(yùn)費(fèi)¥5</span>
</div>
<p class="nearby__item__content__highlight">
VIP尊享89元減4元運(yùn)費(fèi)券(每月3張)
</p>
</div>
</div>
<div class="nearby__item">
<img src="/i18n/9_16/img/near.png" class="nearby__item__img" />
<div class="nearby__item__content">
<div class="nearby__item__content__title">某爾瑪</div>
<div class="nearby__item__content__tags">
<span class="nearby__item__content__tag">月售1萬(wàn)+</span>
<span class="nearby__item__content__tag">起送¥0</span>
<span class="nearby__item__content__tag">基礎(chǔ)運(yùn)費(fèi)¥5</span>
</div>
<p class="nearby__item__content__highlight">
VIP尊享89元減4元運(yùn)費(fèi)券(每月3張)
</p>
</div>
</div>
</div>
</div>
<!-- 底部主菜單容器 -->
<div class="docker">
<span class="docker__item docker__item--active">
<div class="docker__item_icon">
<i class="custom-icon custom-icon-home"></i>
</div>
<div class="docker__item__title">首頁(yè)</div>
</span>
<span class="docker__item ">
<div class="docker__item_icon">
<i class="custom-icon custom-icon-shopping"></i>
</div>
<div class="docker__item__title">購(gòu)物車</div>
</span>
<span class="docker__item ">
<div class="docker__item_icon">
<i class="custom-icon custom-icon-order"></i>
</div>
<div class="docker__item__title">訂單</div>
</span>
<span class="docker__item ">
<div class="docker__item_icon">
<i class="custom-icon custom-icon-my"></i>
</div>
<div class="docker__item__title">我的</div>
</span>
</div>
<router-view />
</template>
<script>
export default {
name: 'Home'
}
</script>
<style lang="scss">
@import '@/style/viriables';
@import '@/style/mixins';
.wrapper {
overflow-y: auto;
position: absolute;
left: 0;
top: 0;
bottom: 0.5rem;
right: 0;
padding: 0 0.18rem 0.1rem 0.18rem;
}
.position {
//文字顯示省略號(hào)配置
@include ellipsis;
// 其他一般設(shè)定
position: relative;
padding: 0.16rem 0.24rem 0.16rem 0;
line-height: 0.22rem;
font-size: 0.16rem;
color: $content-font-color;
.position__icon {
position: relative;
top: 0.01rem;
font-size: 0.2rem;
margin-right: 0.08rem;
}
.position__notice {
top: 0.17rem;
right: 0;
position: absolute;
font-size: 0.2rem;
}
}
.search {
margin-bottom: 0.12rem;
line-height: 0.32rem; //行高:將會(huì)自動(dòng)撐開
background: #f5f5f5;
color: #b7b7b7;
border-radius: 0.16rem;
font-size: 0.14rem;
&__icon {
display: inline-block;
padding: 0 0.05rem 0 0.16rem;
font-size: 0.15rem;
}
&__text {
display: inline-block;
font-size: 0.14rem;
}
}
.banner {
height: 0%;
overflow: hidden;
padding-bottom: 25%; //屏幕寬度的25%
&__img {
width: 100%;
}
}
.category_list {
display: flex; //flex布局:彈性盒
flex-wrap: wrap; //讓彈性盒元素在必要的時(shí)候拆行
margin-top: 0.16rem;
&__item {
width: 20%;
&__img {
display: block;
width: 0.4rem;
height: 0.4rem;
margin: 0 auto;
}
&__desc {
margin: 0.06rem 0 0.16rem 0;
text-align: center;
color: $content-font-color;
}
}
}
.gap {
height: 0.1rem;
background: $content-bg-color;
margin: 0 -0.18rem;
}
.nearby {
&__title {
margin: 0.16rem 0 0.02rem 0;
font-size: 0.18rem;
color: $content-font-color;
font-weight: normal; //不加粗展示
}
&__item {
display: flex;
padding-top: 0.12rem;
// 圖片
&__img {
margin-right: 0.16rem;
width: 0.56rem;
height: 0.56rem;
}
//右側(cè)文字內(nèi)容
&__content {
padding-bottom: 0.12rem;
border-bottom: 1px solid $content-bg-color;
flex: 1;
&__title {
line-height: 0.22rem;
font-size: 0.16rem;
color: $content-font-color;
}
&__tags {
margin-top: 0.08rem;
line-height: 0.18rem;
font-size: 0.13rem;
color: $content-font-color;
}
&__tag {
margin-right: 0.16rem;
}
&__highlight {
color: #e93b3b;
line-height: 0.18rem;
font-size: 0.13rem;
margin: 0.08rem 0 0 0;
}
}
}
}
.docker {
color: $content-font-color;
display: flex; //自適應(yīng)均贈(zèng),彈性盒子
position: absolute; //絕對(duì)定位
box-sizing: border-box; //這個(gè)會(huì)以body的最外層作為容器的最外層
padding: 0 0.18rem;
left: 0;
bottom: 0;
width: 100%;
height: 0.49rem;
border-top: 1px solid $content-bg-color;
&__item {
flex: 1;
text-align: center;
&--active {
color: #1fa4fc;
}
&_icon {
margin: 0.05rem 0 0.02rem 0; //圖標(biāo)距離上邊距7px左右;
font-size: 0.18rem;
}
&__title {
//瀏覽器最小像素是12px梯浪,如果想表達(dá)12px以下大小得如下編寫
font-size: 0.12rem;
transform: scale(0.5 0.5); //橫向縮小50% 縱向搜小50%
transform-origin: center top; //縮放的中心點(diǎn)
}
}
}
</style>
修改router.js:
import {
createRouter,
createWebHistory
} from 'vue-router'
// import Home from '../views/Home.vue'
const routes = [{
path: '/',
name: ''
}
]
const router = createRouter({
history: createWebHistory(process.env.BASE_URL),
routes
})
export default router
重新運(yùn)行vue項(xiàng)目,仍然可以加載頁(yè)面瓢娜。
將頁(yè)面拆成3個(gè)組件挂洛。
新建src\views\home\StaticPart.vue
:
<template>
<!-- 頂部位置信息叼屠、通知欄 -->
<div class="position">
<span>
<i class="position__icon custom-icon custom-icon-position"></i>
</span>
西安交通大學(xué)興慶校區(qū)梧桐苑食堂北側(cè)小院子放臺(tái)階上
<i class="position__notice custom-icon custom-icon-bell"></i>
</div>
<!-- 搜索欄 -->
<div class="search">
<span class="search__icon">
<i class="custom-icon custom-icon-search"></i>
</span>
<span class="search__text"> 黃燜雞米飯</span>
</div>
<!-- 橫幅廣告推廣欄 -->
<div class="banner">
<img class="banner__img" src="/i18n/9_16/img/banner.jpg" />
</div>
<!-- 分類列表欄 -->
<div class="category_list">
<!-- 10個(gè) -->
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/超市.png"
/>
<p class="category_list__item__desc">超市便利</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/菜市場(chǎng).png"
/>
<p class="category_list__item__desc">菜市場(chǎng)</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/水果店.png"
/>
<p class="category_list__item__desc">水果店</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/鮮花.png"
/>
<p class="category_list__item__desc">鮮花綠植</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/醫(yī)藥健康.png"
/>
<p class="category_list__item__desc">醫(yī)藥健康</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/家居.png"
/>
<p class="category_list__item__desc">家居時(shí)尚</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/蛋糕.png"
/>
<p class="category_list__item__desc">烘焙蛋糕</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/簽到.png"
/>
<p class="category_list__item__desc">簽到</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/大牌免運(yùn).png"
/>
<p class="category_list__item__desc">大牌免運(yùn)</p>
</div>
<div class="category_list__item">
<img
class="category_list__item__img"
src="/i18n/9_16/img/category_list/紅包.png"
/>
<p class="category_list__item__desc">紅包套餐</p>
</div>
</div>
<!-- 灰色留白分隔欄 -->
<div class="gap"></div>
</template>
<script>
export default {
name: 'StaticPart'
}
</script>
<style lang="scss" scope>
@import '@/style/viriables';
@import '@/style/mixins';
.position {
//文字顯示省略號(hào)配置
@include ellipsis;
// 其他一般設(shè)定
position: relative;
padding: 0.16rem 0.24rem 0.16rem 0;
line-height: 0.22rem;
font-size: 0.16rem;
color: $content-font-color;
.position__icon {
position: relative;
top: 0.01rem;
font-size: 0.2rem;
margin-right: 0.08rem;
}
.position__notice {
top: 0.17rem;
right: 0;
position: absolute;
font-size: 0.2rem;
}
}
.search {
margin-bottom: 0.12rem;
line-height: 0.32rem; //行高:將會(huì)自動(dòng)撐開
background: #f5f5f5;
color: #b7b7b7;
border-radius: 0.16rem;
font-size: 0.14rem;
&__icon {
display: inline-block;
padding: 0 0.05rem 0 0.16rem;
font-size: 0.15rem;
}
&__text {
display: inline-block;
font-size: 0.14rem;
}
}
.banner {
height: 0%;
overflow: hidden;
padding-bottom: 25%; //屏幕寬度的25%
&__img {
width: 100%;
}
}
.category_list {
display: flex; //flex布局:彈性盒
flex-wrap: wrap; //讓彈性盒元素在必要的時(shí)候拆行
margin-top: 0.16rem;
&__item {
width: 20%;
&__img {
display: block;
width: 0.4rem;
height: 0.4rem;
margin: 0 auto;
}
&__desc {
margin: 0.06rem 0 0.16rem 0;
text-align: center;
color: $content-font-color;
}
}
}
.gap {
height: 0.1rem;
background: $content-bg-color;
margin: 0 -0.18rem;
}
</style>
新建src\views\home\Nearby.vue
:
<template>
<!-- 主體商鋪展示內(nèi)容 -->
<div class="nearby">
<h3 class="nearby__title">附近店鋪</h3>
<!-- 5個(gè) -->
<div class="nearby__item">
<img src="/i18n/9_16/img/near.png" class="nearby__item__img" />
<div class="nearby__item__content">
<div class="nearby__item__content__title">某爾瑪</div>
<div class="nearby__item__content__tags">
<span class="nearby__item__content__tag">月售1萬(wàn)+</span>
<span class="nearby__item__content__tag">起送¥0</span>
<span class="nearby__item__content__tag">基礎(chǔ)運(yùn)費(fèi)¥5</span>
</div>
<p class="nearby__item__content__highlight">
VIP尊享89元減4元運(yùn)費(fèi)券(每月3張)
</p>
</div>
</div>
<div class="nearby__item">
<img src="/i18n/9_16/img/near.png" class="nearby__item__img" />
<div class="nearby__item__content">
<div class="nearby__item__content__title">某爾瑪</div>
<div class="nearby__item__content__tags">
<span class="nearby__item__content__tag">月售1萬(wàn)+</span>
<span class="nearby__item__content__tag">起送¥0</span>
<span class="nearby__item__content__tag">基礎(chǔ)運(yùn)費(fèi)¥5</span>
</div>
<p class="nearby__item__content__highlight">
VIP尊享89元減4元運(yùn)費(fèi)券(每月3張)
</p>
</div>
</div>
<div class="nearby__item">
<img src="/i18n/9_16/img/near.png" class="nearby__item__img" />
<div class="nearby__item__content">
<div class="nearby__item__content__title">某爾瑪</div>
<div class="nearby__item__content__tags">
<span class="nearby__item__content__tag">月售1萬(wàn)+</span>
<span class="nearby__item__content__tag">起送¥0</span>
<span class="nearby__item__content__tag">基礎(chǔ)運(yùn)費(fèi)¥5</span>
</div>
<p class="nearby__item__content__highlight">
VIP尊享89元減4元運(yùn)費(fèi)券(每月3張)
</p>
</div>
</div>
<div class="nearby__item">
<img src="/i18n/9_16/img/near.png" class="nearby__item__img" />
<div class="nearby__item__content">
<div class="nearby__item__content__title">某爾瑪</div>
<div class="nearby__item__content__tags">
<span class="nearby__item__content__tag">月售1萬(wàn)+</span>
<span class="nearby__item__content__tag">起送¥0</span>
<span class="nearby__item__content__tag">基礎(chǔ)運(yùn)費(fèi)¥5</span>
</div>
<p class="nearby__item__content__highlight">
VIP尊享89元減4元運(yùn)費(fèi)券(每月3張)
</p>
</div>
</div>
<div class="nearby__item">
<img src="/i18n/9_16/img/near.png" class="nearby__item__img" />
<div class="nearby__item__content">
<div class="nearby__item__content__title">某爾瑪</div>
<div class="nearby__item__content__tags">
<span class="nearby__item__content__tag">月售1萬(wàn)+</span>
<span class="nearby__item__content__tag">起送¥0</span>
<span class="nearby__item__content__tag">基礎(chǔ)運(yùn)費(fèi)¥5</span>
</div>
<p class="nearby__item__content__highlight">
VIP尊享89元減4元運(yùn)費(fèi)券(每月3張)
</p>
</div>
</div>
</div>
</template>
<script>
export default { name: 'Nearby' }
</script>
<style lang="scss" scope>
@import '@/style/viriables';
@import '@/style/mixins';
.nearby {
&__title {
margin: 0.16rem 0 0.02rem 0;
font-size: 0.18rem;
color: $content-font-color;
font-weight: normal; //不加粗展示
}
&__item {
display: flex;
padding-top: 0.12rem;
// 圖片
&__img {
margin-right: 0.16rem;
width: 0.56rem;
height: 0.56rem;
}
//右側(cè)文字內(nèi)容
&__content {
padding-bottom: 0.12rem;
border-bottom: 1px solid $content-bg-color;
flex: 1;
&__title {
line-height: 0.22rem;
font-size: 0.16rem;
color: $content-font-color;
}
&__tags {
margin-top: 0.08rem;
line-height: 0.18rem;
font-size: 0.13rem;
color: $content-font-color;
}
&__tag {
margin-right: 0.16rem;
}
&__highlight {
color: #e93b3b;
line-height: 0.18rem;
font-size: 0.13rem;
margin: 0.08rem 0 0 0;
}
}
}
}
</style>
新建src\views\home\Docker.vue
:
<template>
<!-- 底部主菜單容器 -->
<div class="docker">
<span class="docker__item docker__item--active">
<div class="docker__item_icon">
<i class="custom-icon custom-icon-home"></i>
</div>
<div class="docker__item__title">首頁(yè)</div>
</span>
<span class="docker__item ">
<div class="docker__item_icon">
<i class="custom-icon custom-icon-shopping"></i>
</div>
<div class="docker__item__title">購(gòu)物車</div>
</span>
<span class="docker__item ">
<div class="docker__item_icon">
<i class="custom-icon custom-icon-order"></i>
</div>
<div class="docker__item__title">訂單</div>
</span>
<span class="docker__item ">
<div class="docker__item_icon">
<i class="custom-icon custom-icon-my"></i>
</div>
<div class="docker__item__title">我的</div>
</span>
</div>
</template>
<script>
export default {
name: 'Docker'
}
</script>
<style lang="scss" scope>
@import '@/style/viriables';
@import '@/style/mixins';
.docker {
color: $content-font-color;
display: flex; //自適應(yīng)均贈(zèng),彈性盒子
position: absolute; //絕對(duì)定位
box-sizing: border-box; //這個(gè)會(huì)以body的最外層作為容器的最外層
padding: 0 0.18rem;
left: 0;
bottom: 0;
width: 100%;
height: 0.49rem;
border-top: 1px solid $content-bg-color;
&__item {
flex: 1;
text-align: center;
&--active {
color: #1fa4fc;
}
&_icon {
margin: 0.05rem 0 0.02rem 0; //圖標(biāo)距離上邊距7px左右;
font-size: 0.18rem;
}
&__title {
//瀏覽器最小像素是12px驼抹,如果想表達(dá)12px以下大小得如下編寫
font-size: 0.12rem;
transform: scale(0.5 0.5); //橫向縮小50% 縱向搜小50%
transform-origin: center top; //縮放的中心點(diǎn)
}
}
}
</style>
調(diào)整src\views\home\Home.vue
:
<template>
<!-- 主體內(nèi)容容器 -->
<div class="wrapper">
<StaticPart />
<!-- 主體商鋪展示內(nèi)容 -->
<Nearby />
</div>
<!-- 底部主菜單容器 -->
<Docker/>
<router-view />
</template>
<script>
import StaticPart from '@/views/home/StaticPart'
import Nearby from '@/views/home/Nearby'
import Docker from '@/views/home/Docker'
export default {
name: 'Home',
components: { StaticPart, Nearby, Docker }
}
</script>
<style lang="scss">
.wrapper {
overflow-y: auto;
position: absolute;
left: 0;
top: 0;
bottom: 0.5rem;
right: 0;
padding: 0 0.18rem 0.1rem 0.18rem;
}
</style>