view節(jié)點(diǎn)下如何讓其節(jié)點(diǎn)下的內(nèi)容居中顯示

在開發(fā)微信小程序UI時(shí),安卓一個(gè)很簡(jiǎn)單的cardview內(nèi)容居中效果,在微信小程序布局時(shí)寫的比較復(fù)雜,這里記錄一下:
想實(shí)現(xiàn)如下圖這樣一個(gè)效果中,每個(gè)item的圖表和文字居中顯示,怎么實(shí)現(xiàn)呢?


image.png

index.wxml中代碼如下:

 <view class="items">
  <navigator url="/pages/banner/banner" hover-class="navigator-hover" class="plate-item">
    <view class="item">
      <image src="{{bannerLogoUrl}}"></image>
      <text class="title">輪播圖</text>
    </view>
  </navigator>

  <navigator url="/pages/button/button" hover-class="navigator-hover" class="plate-item">
    <view class="item">
      <image src="{{buttonLogoUrl}}"></image>
      <text class="title">按鈕</text>
    </view>
  </navigator>

  <navigator url="/pages/dialog/dialog" hover-class="navigator-hover" class="plate-item">
    <view class="item">
      <image src="{{dialogLogoUrl}}"></image>
      <text class="title">對(duì)話框</text>
    </view>
  </navigator>
</view>

index.js中定義data,設(shè)置圖標(biāo)地址:

Page({
  data:{
    bannerLogoUrl:'/resources/ic_widget_banner.png',
    buttonLogoUrl:'/resources/ic_widget_button.png',
    dialogLogoUrl:'/resources/ic_widget_dialog.png'
  }
})

index.wxss的樣式代碼如下:

.items{
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
}

.plate-item{
  width: 33%;
  height: 100px;
}

.item{
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  height: 100%;
  border-color: chartreuse;
  border-width: 1px;
  background-color: red;
}

.item image{
  width: 30px;
  height: 30px;
}
.title{
  margin-top: 10px;
  
}

每個(gè)item中內(nèi)容居中的關(guān)鍵樣式代碼是:

.item{
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  height: 100%;
  border-color: chartreuse;
  border-width: 1px;
  background-color: red;
}

display:block

小程序的3個(gè)視圖容器(view,srcoll-view,swiper)默認(rèn)值均為display:block

block表示[塊內(nèi)]容器模式,總是使用新行開始顯示

display:flex

image.png

  • flex-direction屬性,有下面4個(gè)可選值,默認(rèn)為row
    • row:水平排列 (默認(rèn))
    • row-reverse:水平翻轉(zhuǎn)排列
    • column:豎直排列
    • column-reverse:豎直翻轉(zhuǎn)排列
flex屬性值,自動(dòng)調(diào)整各個(gè)子組件的寬度,一行排不開會(huì)被壓縮

如果不想被壓縮,就要用到另一個(gè)屬性flex-wrap,它有3個(gè)屬性值:

  • nowrap(不換行,默認(rèn)值)
  • wrap(換行)
  • wrap-reverse(與wrap的效果相反)

對(duì)齊方式:align-items和justify-content

只有在display:flex時(shí)對(duì)齊方式才起作用,如果是display:block則不起作用。
  • align-items,子組件在側(cè)軸(豎直)方向上的對(duì)齊方式

    • center,側(cè)軸居中(在父組件寬度/高度上的居中,并不是屏幕寬度/高度居中)
    • flex-start,側(cè)軸起始點(diǎn)開始
    • flex-end,側(cè)軸終點(diǎn)開始
    • baseline,效果不明
    • stretch,效果不明
  • justify-content,子組件在主軸(水平)方向上的對(duì)齊方式

    • center,主軸方向居中(在父組件高度/寬度上的居中,并不是屏幕高度/看寬度居中)
    • flex-start,主軸起始點(diǎn)對(duì)齊
    • flex-end,主軸結(jié)束點(diǎn)對(duì)齊
    • space-between,兩端對(duì)齊,除了兩端的子元素分別靠向兩端的容器外,其余子元素之間的間隔都相等。
    • space-around,子元素之間的距離相等,兩端子元素距離容器的距離是其它子元素之間的距離的1/2。
    • space-evenly,子元素之間的距離相等,兩端子元素距離容器的距離和其它子元素之間的距離相同。

display:none

控制view組件的顯示或隱藏值,還有一個(gè)屬性visibility的hidden值,也能讓控件消失,但卻會(huì)占位置,有一個(gè)空白位置,display:none會(huì)讓組件消失,后面的組件占用他的位置。


image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一.小程序的圖片和視頻的加載模式影響到的地方 image的mode:widthFix屬性會(huì)提前占用寬高視頻受到影響...
    默言1024閱讀 515評(píng)論 0 0
  • 網(wǎng)頁(yè)布局(layout)是CSS的一個(gè)重點(diǎn),傳統(tǒng)的方式是基于盒子模型,依賴display、position、flo...
    JunChow520閱讀 1,222評(píng)論 0 0
  • 微信小程序 View 支持兩種布局方式:Block 和 Flex 所有 View 默認(rèn)都是 block 要使用 f...
    KtYY閱讀 651評(píng)論 0 1
  • 1月9號(hào)微信小程序正式發(fā)布,前一段時(shí)間看過(guò)一段時(shí)候的小程序,后來(lái)趕項(xiàng)目就放在一邊了,年關(guān)將至,公司經(jīng)過(guò)了一輪大的裁...
    Zax_Smile閱讀 1,238評(píng)論 2 3
  • Flexbox解決了萬(wàn)惡的css復(fù)雜布局方式。關(guān)于彈性盒子,MDN是這樣解釋的: 彈性盒子中的子元素可以在各個(gè)方向...
    chiang24閱讀 795評(píng)論 0 1

友情鏈接更多精彩內(nèi)容