無錫網(wǎng)站設(shè)計哪里靠譜大數(shù)據(jù)營銷平臺那么多
前言:
上一篇我們掌握了關(guān)于小程序的框架,這篇博客帶你完成小程序版的會議OA首頁。效果如下:
一,
1.1先創(chuàng)建OA首頁頁面:
首先我們先建一個新項目,在app.json中編寫代碼
{"pages": ["pages/index/index","pages/meeting/list/list","pages/vote/list/list","pages/ucenter/index/index"],"window": {"backgroundTextStyle": "light","navigationBarBackgroundColor": "#fff","navigationBarTitleText": "Weixin","navigationBarTextStyle": "black"},"tabBar": {"list": [{"pagePath": "pages/index/index","text": "首頁","iconPath": "/static/tabBar/coding.png","selectedIconPath": "/static/tabBar/coding-active.png"},{"pagePath": "pages/meeting/list/list","iconPath": "/static/tabBar/sdk.png","selectedIconPath": "/static/tabBar/sdk-active.png","text": "會議"},{"pagePath": "pages/vote/list/list","iconPath": "/static/tabBar/template.png","selectedIconPath": "/static/tabBar/template-active.png","text": "投票"},{"pagePath": "pages/ucenter/index/index","iconPath": "/static/tabBar/component.png","selectedIconPath": "/static/tabBar/component-active.png","text": "設(shè)置"}]},"style": "v2","sitemapLocation": "sitemap.json"
}
出現(xiàn)報錯,因為我們資源沒有導(dǎo)入:
檢查沒有問題了:
1.2關(guān)于小程序中的彈性布局
什么是Flex彈性布局?
Flex 彈性布局(Flexbox)是一種用于在容器中進行靈活排列和對齊元素的布局模型。它是 CSS3 引入的一種布局方式,旨在解決傳統(tǒng)布局方式的限制和局限性。Flexbox 使用一維布局模型,將容器劃分為主軸(main axis)和交叉軸(cross axis)。主軸是元素的排列方向,可以水平或垂直,而交叉軸與主軸垂直,用于對齊元素。通過使用彈性容器和彈性項目,Flexbox 提供了更加靈活的元素排列方式。
Flexbox 提供了一系列的 CSS 屬性,用于控制容器和項目的行為。其中包括:
display: flex:將容器設(shè)置為彈性容器,以便使用 Flexbox 布局。
flex-direction:確定主軸的方向,可以是水平(row)或垂直(column)。
justify-content:定義主軸上項目的對齊方式(居中、開始、結(jié)束、空間等)。
align-items:定義交叉軸上項目的對齊方式(居中、開始、結(jié)束、拉伸等)。
flex-wrap:定義項目是否換行排列。
flex-grow、flex-shrink 和 flex-basis:控制項目在主軸上的擴展、收縮和初始大小。
order:定義項目的排列順序。
通過這些屬性的靈活組合,使用 Flexbox 可以輕松實現(xiàn)多種不同的布局效果,而無需依賴復(fù)雜的 CSS 或 JavaScript。它特別適用于響應(yīng)式設(shè)計和移動端布局,能夠更好地適應(yīng)不同屏幕大小和設(shè)備。flex彈性布局的特點?
在沒有加入flex的時候view塊狀元素是超出了我們的box盒范圍的。但是加入了之后,就可以非常直觀的看到我們每一個塊狀元素設(shè)置的大小都是100rpx,12個view塊狀元素加起來就是1200rpx,但是頁面的總寬高設(shè)置的是750rpx,但是意外的是750rpx的頁面承載了12個view快狀元素,這個就是Flex彈性布局的特點。?
Flex 彈性布局的常見屬性:
1.display:?? ? ? ? ? ? ? ? 1.定義一個容器為 Flex 容器。
? ? ? ? ? ? ? ? 2.可以取值為 flex 或 inline-flex。
2.flex-direction:? ? ? ? ? ? ? ? 1.定義 Flex 容器的主軸方向。
? ? ? ? ? ? ? ? 2.可以取值為 row(水平方向)、row-reverse(反向水平方向)、column(垂直 ? ? ? ? ? ? ? ? ? ? ? 方向)或 column-reverse(反向垂直方向)。
3.flex-wrap:? ? ? ? ? ? ? ? 1.定義 Flex 容器的項是否換行。
? ? ? ? ? ? ? ? 2.可以取值為 nowrap(不換行)、wrap(換行)或 wrap-reverse(反向換行)。
4.justify-content:? ? ? ? ? ? ? ? 1.定義 Flex 容器內(nèi) Flex 項在主軸上的對齊方式。
? ? ? ? ? ? ? ? 2.可以取值為 flex-start、flex-end、center、space-between、space-around 或 ? ? ? ? ? ? ? ? space-evenly。
5.align-items:? ? ? ? ? ? ? ? 1.定義 Flex 容器內(nèi) Flex 項在交叉軸上的對齊方式。
? ? ? ? ? ? ? ? 2.可以取值為 flex-start、flex-end、center、baseline 或 stretch。
6.align-content:? ? ? ? ? ? ? ? 1.定義多根交叉軸線的對齊方式。
? ? ? ? ? ? ? ? 2.僅在容器有多行的情況下有效。
? ? ? ? ? ? ? ? 3.可以取值為 flex-start、flex-end、center、space-between、space-around 或 ? ? ? ? ? ? ? ? ? ?stretch。
7.flex:? ? ? ? ? ? ? ? 1.是 flex-grow、flex-shrink 和 flex-basis 的縮寫。
? ? ? ? ? ? ? ? 2.用于設(shè)置 Flex 項的伸縮性。
8.flex-grow:? ? ? ? ? ? ? ? 1.定義了 Flex 項在容器內(nèi)分配額外空間的能力。
? ? ? ? ? ? ? ? 2.值為一個非負整數(shù),表示相對于其他 Flex 項的放大比例。
9.flex-shrink:? ? ? ? ? ? ? ? 1.定義了 Flex 項在容器內(nèi)收縮的能力。
? ? ? ? ? ? ? ? 2.值為一個非負整數(shù),表示相對于其他 Flex 項的收縮比例。
10.flex-basis:? ? ? ? ? ? ? ? 1.定義了 Flex 項在分配額外空間之前的初始尺寸。
? ? ? ? ? ? ? ? 2.可以設(shè)置為一個長度值或百分比。
11.order:? ? ? ? ? ? ? ? 1.定義了 Flex 項的排列順序。
? ? ? ? ? ? ? ? 2.值為一個整數(shù),決定了項的排列順序,值越小越靠前。
tab上(一級菜單)演示一下彈性布局到底是什么來幫助大家理解,我們在投票界面來給大家展示一下,首先在list.wxml中編寫以下代碼
list.wxml:
<!--pages/vote/list/list.wxml-->
<!-- <text>pages/vote/list/list.wxml</text> -->
<view class="box"><view>1</view>
<view>2</view>
<view>3</view>
<view>4</view>
<view>5</view>
<view>6</view>
<view>7</view>
<view>8</view>
<view>9</view>
<view>10</view>
<view>11</view>
<view>12</view>
</view>
然后在list.wxss中加入樣式來幫助大家更直觀的看到效果
/* pages/vote/list/list.wxss */
.box{height:750rpx;width:750rpx;background-color: greenyellow;
}
view{height: 100rpx;width: 100rpx;border: 1px solid red;
}
現(xiàn)在沒有使用flex布局的效果:
可以看到非常的不友好,這里我們就要使用到彈性布局了。
flex-wrap屬性:它可能取三個值。分別如下
(1)nowrap(默認):不換行。
(2)wrap:換行,第一行在上方。
(3)wrap-reverse:換行,第一行在下方。
- flex-start(默認值):左對齊
- flex-end:右對齊
- center: 居中
- space-between:兩端對齊,項目之間的間隔都相等。
- space-around:每個項目兩側(cè)的間隔相等。所以,項目之間的間隔比項目與邊框的間隔大一倍。
把flex-derection屬性的代碼注釋后,在list.wxss中編寫以下代碼
display: flex;flex-flow: row wrap;
二,輪播圖后臺數(shù)據(jù)獲取及組件使用
新建一個名為config的文件夾,文件夾下新建api.js專門放接口地址
建好之后在api.js中編寫以下代碼:
// 以下是業(yè)務(wù)服務(wù)器API地址// 本機開發(fā)API地址var WxApiRoot = 'http://localhost:8080/demo/wx/';// 測試環(huán)境部署api地址// var WxApiRoot = 'http://192.168.0.101:8070/demo/wx/';// 線上平臺api地址//var WxApiRoot = 'https://www.oa-mini.com/demo/wx/';module.exports = {IndexUrl: WxApiRoot + 'home/index', //首頁數(shù)據(jù)接口SwiperImgs: WxApiRoot+'swiperImgs', //輪播圖MettingInfos: WxApiRoot+'meeting/list', //會議信息};
然后在index.js中編寫代碼:
const api = require("../../config/api")data: {imgSrcs:[]},loadSwiperImgs(){let that=this;wx.request({url: api.SwiperImgs,dataType: 'json',success(res) {console.log(res)that.setData({imgSrcs:res.data.images})}})},
請求出現(xiàn)錯誤:解決將驗證關(guān)閉
Json的數(shù)據(jù):
{"data": {"images":[{"img": "https://cdn-we-retail.ym.tencent.com/tsr/home/v2/banner1.png","text": "1"},{"img": "https://cdn-we-retail.ym.tencent.com/tsr/home/v2/banner2.png","text": "2"},{"img": "https://cdn-we-retail.ym.tencent.com/tsr/home/v2/banner3.png","text": "3"},{"img": "https://cdn-we-retail.ym.tencent.com/tsr/home/v2/banner4.png","text": "4"},{"img": "https://cdn-we-retail.ym.tencent.com/tsr/home/v2/banner5.png","text": "5"},{"img": "https://cdn-we-retail.ym.tencent.com/tsr/home/v2/banner6.png","text": "6"}
]},"statusCode": "200","header": {"content-type":"applicaiton/json;charset=utf-8"}
}
?然后我們重新編譯代碼,控制器效果圖:
在index.wxml中編寫以下代碼:
<!--pages/index/index.wxml-->
<view><swiper indicator-dots="true" autoplay="true" ><block wx:for="{{imgSrcs}}" wx:key="*text"><swiper-item><image src=" {{item.img}}"></image></swiper-item></block></swiper>
</view>
三,實現(xiàn)會議展示
3.1首頁布局
先在index.wxml中編寫以下代碼
<view class="mobi-title"><text class="mobi-icon"></text><text>會議信息</text>
</view>
<block wx:for-items="{{lists}}" wx:for-item="item" wx:key="item.id"><view class="list" data-id="{{item.id}}"><view class="list-img"><image class="video-img" mode="scaleToFill" src="{{item.image}}"></image></view><view class="list-detail"><view class="list-title"><text>{{item.title}}</text></view><view class="list-tag"><view class="state">{{item.state}}</view><view class="join"><text class="list-num">{{item.num}}</text>人報名</view></view><view class="list-info"><text>{{item.location}}</text>|<text>{{item.starttime}}</text></view></view></view>
</block>
<view class="section bottom-line"><text>到底啦</text>
</view>
然后在index.wxss中編寫以下樣式:
/* pages/index/index.wxss */
.mobi-title{background-color: lightgray;padding: 10px;
}
.mobi-icon{border: 1rpx solid rgb(250, 126, 126);margin-right: 5px;
}
.mobi-title text{font-weight: 700;color: lightslategrey;
}
.list{display: flex;align-items: center;border-bottom: 3px solid lightgray;
}
.list-img{padding: 0 10px;
}
.video-img{height: 80px;width: 80px;
}
.list-title{font-weight: 700;margin: 3px 0;
}
.list-tag{display: flex;align-items: center;
}
.state{border: 2px solid lightblue;padding: 3px 6px;color: lightblue;margin: 0 5px 10px 0;
}
.join{color: lightgray;
}
.list-num{color: red;font-weight: 700;
}
.list-info{color: lightgray;font-size: 12px;
}
總體效果展示: