這篇具有很好參考價(jià)值的文章主要介紹了微信小程序案例2-2:本地生活。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。
一、運(yùn)行效果
- 輪播圖區(qū)域與九宮格區(qū)域
二、知識(shí)儲(chǔ)備
(一)swiper與swiper-item組件
1、swiper組件
(1)功能描述
- 滑塊視圖容器。其中只可放置swiper-item組件,否則會(huì)導(dǎo)致未定義的行為。
(2)屬性說(shuō)明
屬性 |
類型 |
默認(rèn)值 |
必填 |
說(shuō)明 |
最低版本 |
indicator-dots |
boolean |
false |
否 |
是否顯示面板指示點(diǎn) |
1.0.0 |
indicator-color |
color |
rgba(0, 0, 0, .3) |
否 |
指示點(diǎn)顏色 |
1.1.0 |
indicator-active-color |
color |
#000000 |
否 |
當(dāng)前選中的指示點(diǎn)顏色 1.1.0 |
|
autoplay |
boolean |
false |
否 |
是否自動(dòng)切換 |
1.0.0 |
current |
number |
當(dāng)前所在滑塊的index,默認(rèn)為0 |
1.0.0 |
|
|
interval |
number |
5000 |
否 |
自動(dòng)切換時(shí)間間隔 |
1.0.0 |
circular |
boolean |
false |
否 |
是否采用銜接滑動(dòng) |
1.0.0 |
2、swiper-item組件
(1)功能描述
- 僅可放置在swiper組件中,寬高自動(dòng)設(shè)置為100%。
(2)屬性說(shuō)明
屬性 |
類型 |
默認(rèn)值 |
必填 |
說(shuō)明 |
最低版本 |
item-id |
string |
|
否 |
該 swiper-item 的標(biāo)識(shí)符 |
1.9.0 |
skip-hidden-item-layout |
boolean |
false |
否 |
是否跳過(guò)未顯示的滑塊布局,設(shè)為 true 可優(yōu)化復(fù)雜情況下的滑動(dòng)性能,但會(huì)丟失隱藏狀態(tài)滑塊的布局信息 |
1.9.0 |
3、基本語(yǔ)法
- swiper組件通過(guò)
<swiper>
標(biāo)簽定義,swiper-item組件通過(guò)<swiper-item>
標(biāo)簽定義。
<swiper>
<swiper-item>1</swiper-item>
<swiper-item>2</swiper-item>
<swiper-item>3</swiper-item>
</swiper>
- swiper組件為外層容器,內(nèi)層有3個(gè)swiper-item組件,表示當(dāng)前滑塊視圖內(nèi)容一共有3項(xiàng)?;瑝K視圖內(nèi)容在初始狀態(tài)下只顯示第1項(xiàng),向左滑動(dòng)顯示第2項(xiàng),再向右滑動(dòng)可以返回第1項(xiàng)。
4、案例演示
<swiper class="swiper-container" current="2" indicator-dots="true" indicator-color="yellow" indicator-active-color="red" autoplay="true" interval="3000" circular="true">
<swiper-item class="item">1</swiper-item>
<swiper-item class="item">2</swiper-item>
<swiper-item class="item">3</swiper-item>
</swiper>
.swiper-container {
height: 100px;
background-color: thistle;
}
.item {
line-height: 100px;
align-content: center;
font-size: xx-large;
}
- 預(yù)覽效果
(二)text組件
- 在HTML中,一般通過(guò)
<span>
標(biāo)簽定義行內(nèi)文本,而在微信小程序中,則可以通過(guò)text組件定義行內(nèi)文本。需要注意的是,text組件內(nèi)部只能嵌套text組件。
1、常用屬性
屬性 |
類型 |
說(shuō)明 |
user-select |
boolean |
文本是否可選,該屬性會(huì)使文本節(jié)點(diǎn)顯示為 inline-block |
space |
string |
顯示連續(xù)空格,可選參數(shù)為ensp(中文字符空格一半大?。msp(中文字符空格大?。┖蚽bsp(根據(jù)字體設(shè)置的空格大小) |
decode |
boolean |
是否解碼 |
2、案例演示
- 使用user-select屬性實(shí)現(xiàn)長(zhǎng)按選中文本的效果
<text user-select="true">歡迎使用微信小程序</text>
- 手指長(zhǎng)按前
- 手指長(zhǎng)按后
- 使用鼠標(biāo)模擬手指長(zhǎng)按文本之后的選中效果,此處通過(guò)長(zhǎng)按選中了“程序”文本。如果在微信客戶端運(yùn)行的小程序中長(zhǎng)按文本,會(huì)出現(xiàn)“復(fù)制”選項(xiàng),可以實(shí)現(xiàn)長(zhǎng)按復(fù)制文本的效果。
(三)Flex布局
- 目標(biāo):掌握Flex布局的使用方法,能夠使用Flex布局的相關(guān)屬性完成頁(yè)面布局
1、什么是Flex布局
- 在微信小程序中可以使用Flex布局實(shí)現(xiàn)自適應(yīng)頁(yè)面。Flex布局又稱為彈性盒(Flexible Box)布局,它為盒子模型提供了很強(qiáng)的靈活性,任何一個(gè)容器都可以指定為Flex布局。
2、基本概念
(1)Flex容器
- 采用Flex布局的元素,稱為Flex容器(簡(jiǎn)稱容器)。
(2)Flex項(xiàng)目
- Flex容器的所有子元素自動(dòng)成為容器成員,稱為Flex項(xiàng)目(簡(jiǎn)稱項(xiàng)目)。
(3)軸
- Flex容器內(nèi)有兩根軸:主軸(Main Axis)和交叉軸(Cross Axis),默認(rèn)情況下主軸為水平方向,交叉軸為垂直方向,項(xiàng)目默認(rèn)沿主軸排列。
- 若想使用Flex布局,首先要設(shè)置父元素的display屬性為flex,表示將父元素設(shè)置為容器,然后就可以使用容器和項(xiàng)目的相關(guān)屬性了。
3、容器常用屬性
屬性 |
說(shuō)明 |
flex-direction |
決定主軸的方向(即項(xiàng)目的排列方向),默認(rèn)值為row,即主軸為從左到右的水平方向,項(xiàng)目按照主軸方向排列 |
flex-wrap |
規(guī)定是否允許項(xiàng)目換行,默認(rèn)值為nowrap,即不換行 |
flex-flow |
flex-direction和flex-wrap的組合屬性,默認(rèn)值為row nowrap |
justify-content |
定義了項(xiàng)目在主軸上的對(duì)齊方式,默認(rèn)值為flex-start,即項(xiàng)目在主軸方向上,與主軸起始位置對(duì)齊 |
align-items |
定義項(xiàng)目在交叉軸上的對(duì)齊方式,默認(rèn)值為normal(等同于stretch),即如果項(xiàng)目沒(méi)有設(shè)置固定的大小,則會(huì)被拉伸填充滿交叉軸方向剩余的空間 |
align-content |
只適用多行的容器,定義項(xiàng)目在交叉軸上的對(duì)齊方式,默認(rèn)值為normal(等同于stretch),即交叉軸方向剩余的空間平均分配到每一行,并且行的高度會(huì)拉伸,填滿整行的空間 |
4、項(xiàng)目常用屬性
屬性 |
說(shuō)明 |
order |
定義項(xiàng)目的排列順序,按從小到大排列,默認(rèn)值為0 |
flex-grow |
定義項(xiàng)目的放大比例,默認(rèn)值為0,即如果存在剩余空間,該項(xiàng)目也不放大 |
flex-shrink |
定義項(xiàng)目的縮小比例,默認(rèn)值為1,即如果空間不足,該項(xiàng)目將縮小 |
flex-basis |
定義在分配多余空間之前,項(xiàng)目占據(jù)的主軸空間,默認(rèn)值為auto |
flex |
flex-grow、flex-shrink和flex-basis的組合屬性,默認(rèn)值為0 1 auto |
align-self |
允許單個(gè)項(xiàng)目有與其他項(xiàng)目不一樣的對(duì)齊方式,可覆蓋align-items屬性。默認(rèn)值為auto,表示繼承父元素的align-items屬性,如果父元素沒(méi)有設(shè)置align-items屬性,則等同于normal和stretch |
5、flex-direction屬性
- flex-direction屬性用于設(shè)置主軸方向,通過(guò)設(shè)置主軸方向可以規(guī)定項(xiàng)目的排列方向,它有以下4個(gè)常用的可選值。
屬性 |
說(shuō)明 |
row |
默認(rèn)值,主軸為從左到右的水平方向 |
row-reverse |
主軸為從右到左的水平方向 |
column |
主軸為從上到下的垂直方向 |
column-reverse |
主軸為從下到上的垂直方向 |
<view class="demo">
<view>中國(guó)</view>
<view>四川</view>
<view>瀘州</view>
</view>
.demo {
display: flex;
flex-direction: column-reverse;
}
- 預(yù)覽效果
6、 justify-content屬性
- justify-content屬性用于設(shè)置項(xiàng)目在主軸方向上的對(duì)齊方式,能夠分配項(xiàng)目之間及其周圍多余的空間,它有以下5個(gè)常用的可選值。
屬性 |
說(shuō)明 |
flex-start |
默認(rèn)值,表示項(xiàng)目對(duì)齊到主軸起點(diǎn),項(xiàng)目間不留空隙。 |
flex-end |
項(xiàng)目對(duì)齊到主軸終點(diǎn),項(xiàng)目間不留空隙。 |
center |
項(xiàng)目在主軸上居中排列,項(xiàng)目間不留空隙。主軸上第一個(gè)項(xiàng)目離主軸起點(diǎn)的距離等于最后一個(gè)項(xiàng)目離主軸終點(diǎn)的距離。 |
space-between |
兩端對(duì)齊,兩端的項(xiàng)目分別靠向容器的兩端,其他項(xiàng)目之間的間隔相等。 |
space-around |
每個(gè)項(xiàng)目之間的距離相等,第一個(gè)項(xiàng)目離主軸起點(diǎn)和最后一個(gè)項(xiàng)目離終點(diǎn)的距離為中間項(xiàng)目間距的一半。 |
<view class="demo">
<view>中國(guó)</view>
<view>四川</view>
<view>瀘州</view>
</view>
.demo {
background-color: silver;
display: flex;
justify-content: space-between;
}
- 預(yù)覽效果
7、align-items屬性
- align-items屬性用于設(shè)置項(xiàng)目在交叉軸上的對(duì)齊方式,它有以下6個(gè)常用的可選值。
屬性 |
說(shuō)明 |
normal |
默認(rèn)值,等同于stretch。 |
stretch |
未設(shè)置項(xiàng)目大小時(shí)將項(xiàng)目拉伸,填充滿交叉軸方向剩余的空間。 |
flex-start |
項(xiàng)目頂部與交叉軸起點(diǎn)對(duì)齊。 |
flex-end |
項(xiàng)目底部與交叉軸終點(diǎn)對(duì)齊。 |
center |
項(xiàng)目在交叉軸的中間位置對(duì)齊。 |
baseline |
項(xiàng)目的第一行文字的基線對(duì)齊。 |
<view class="demo">
<view>中國(guó)</view>
<view>四川</view>
<view>瀘州</view>
</view>
.demo {
background-color: silver;
display: flex;
justify-content: space-between;
height: 100px;
align-items: center;
}
- 預(yù)覽效果
三、實(shí)現(xiàn)步驟
(一)創(chuàng)建項(xiàng)目
(二)創(chuàng)建頁(yè)面
- 在
app.json
里配置pages/grid/grid
頁(yè)面,手動(dòng)刪除index
目錄,設(shè)置導(dǎo)航欄
(三)準(zhǔn)備圖片素材
- 在項(xiàng)目根目錄創(chuàng)建
images
目錄,拷貝項(xiàng)目所需圖片素材
(四)編寫(xiě)頁(yè)面結(jié)構(gòu)
1、編寫(xiě)輪播區(qū)域頁(yè)面結(jié)構(gòu)
- 輪播圖有指示點(diǎn)面板,自動(dòng)輪播,時(shí)間間隔3000毫秒
<swiper indicator-dots="true" indicator-color="blue" indicator-active-color="red" autoplay="true" circular="true" interval="3000">
<swiper-item>
<view class="item">
<image src="/images/swiper01.png" mode="aspectFill" style="width: 100%; height: 100%;" />
</view>
</swiper-item>
<swiper-item>
<view class="item">
<image src="/images/swiper02.png" mode="aspectFill" style="width: 100%; height: 100%;" />
</view>
</swiper-item>
<swiper-item>
<view class="item">
<image src="/images/swiper03.png" mode="aspectFill" style="width: 100%; height: 100%;" />
</view>
</swiper-item>
</swiper>
- 預(yù)覽效果(看不見(jiàn)圖片,可以看見(jiàn)指示點(diǎn)在循環(huán))
2、編寫(xiě)九宮格區(qū)域頁(yè)面結(jié)構(gòu)
- view組件里嵌套9個(gè)view組件
<view class="grids">
<view class="grid-item">
<image src="/images/food.png" />
<text>美食</text>
</view>
<view class="grid-item">
<image src="/images/fitup.png" />
<text>裝修</text>
</view>
<view class="grid-item">
<image src="/images/bath.png" />
<text>洗浴</text>
</view>
<view class="grid-item">
<image src="/images/car.png" />
<text>汽車</text>
</view>
<view class="grid-item">
<image src="/images/sing.png" />
<text>唱歌</text>
</view>
<view class="grid-item">
<image src="/images/house.png" />
<text>住宿</text>
</view>
<view class="grid-item">
<image src="/images/study.png" />
<text>學(xué)習(xí)</text>
</view>
<view class="grid-item">
<image src="/images/work.png" />
<text>工作</text>
</view>
<view class="grid-item">
<image src="/images/marry.png" />
<text>結(jié)婚</text>
</view>
</view>
- 預(yù)覽效果(顯然不是我們想要的結(jié)果)
(五)編寫(xiě)頁(yè)面樣式
1、編寫(xiě)輪播圖區(qū)域頁(yè)面樣式
- 設(shè)置swiper容器高度:
350rpx
,設(shè)置圖片容器的高度和寬度
.item {
width: 100%;
height: 100%;
}
- 預(yù)覽效果
2、編寫(xiě)九宮格區(qū)域頁(yè)面樣式
.grids {
display: flex;
flex-wrap: wrap;
}
.grids .grid-item {
width: 250rpx;
height: 250rpx;
border-right: 1rpx solid #eee;
border-bottom: 1rpx solid #eee;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.grids .grid-item:nth-child(3) {
border-right: 0;
}
.grids .grid-item:nth-child(6) {
border-right: 0;
}
.grids .grid-item:nth-child(9) {
border-right: 0;
}
.grids .grid-item image {
width: 90rpx;
height: 90rpx;
}
.grids .grid-item text {
color: #999;
font-size: 35rpx;
margin-top: 20rpx;
}
(六)查看模擬機(jī)效果
- 查看輪播圖和九宮格
- 真機(jī)調(diào)試 - 二維碼真機(jī)調(diào)試
- 掃碼
- 手機(jī)截屏
到了這里,關(guān)于微信小程序案例2-2:本地生活的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!
本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!