微信小程式知識點,踩過的坑小結
阿新 • • 發佈:2019-02-01
前言
微信小程式開發也有一段時間了,把開發過程中的一些知識點,踩過的坑記錄一下
頁面的
json
配置檔案不能夠使用註釋//
,使用註釋會報錯VM360:2 pages/accountSetting/accountSetting.json 檔案解析錯誤 SyntaxError: Unexpected token / in JSON at position 39
因此,需要的進行配置,不需要的就不進行配置
- 正確
{
"navigationBarTitleText": "賬號設定"
}
- 錯誤
{
"navigationBarTitleText": "賬號設定"
//
}
true
和false
是關鍵字,在json
檔案中進行配置的時候,不需要加引號""
,"true"
等價於false
- 正確
"enablePullDownRefresh": false
wxss
樣式檔案中寬度和高度屬性可以配合使用,如下
width: 100% - 40rpx;
template
的資料傳遞,可以使用相同的資料名稱進行對映,也可以自定義資料名稱進行對映
- 相同的資料名稱
“`html
- 相同的資料名稱
模板中使用的資料名稱就是 `userInfoImage, userInfoName, userInfoClassName, userInfoKindName, userInfoEnteredStatus` 這些
- 自定義資料名稱
```html
<template is="userInfoCard" data="{{userInfoImage:userImage, userInfoName, userInfoClassName, userInfoKindName, userInfoEnteredStatus}}"></template>
`userInfoImage` 是模板使用到的資料
`userImage` 是js中傳遞過來的資料
- 自定義模板中使用到的樣式需要在
app.wxss
中引入
“`c
@import ‘style/weui.wxss’;
@import ‘template/nullData/nullData.wxss’;
@import ‘template/common.wxss’;
- 路徑
- `../` 表示上一級目錄
- `./` 表示當前目錄
- `/` 表示根目錄
- 不同js之間相互呼叫的時候,根據“目標檔案”相對“當前檔案”路徑進行處理
- `wxml` 檔案中載入圖片時,三目運算子設定佔位圖片,需要加引號 `''`
```html
<image class="user-info-container-avatar" src="{{userInfoImage.length > 0 ? userInfoImage : '../../resources/images/user_placeholder.png'}}" mode='aspectFill'></image>
wxml
設定顏色時,使用三目運算子設定顏色時,需要加引號''
“`html
style=”background-color:{{item.checked ? ‘#1296DB’ : white}};”
- 建議使用 that 代替 this ,`var that = this` ,
```javascript
var that = this
setTimeout(function () {
that.globalEventTimeStamp = 0
console.log("事件倒計時結束-------")
console.log("全域性時間戳為:" + that.globalEventTimeStamp)
//這裡使用的this,代表這個函式裡面的內容, that 才是整個js內容
}, 1000)
<div class="se-preview-section-delimiter"></div>
列印 this
如下:
ƒ () {
that.globalEventTimeStamp = 0;
console.log("事件倒計時結束-------");
console.log("全域性時間戳為:" + that.globalEventTimeStamp);
}
<div class="se-preview-section-delimiter"></div>
列印 that
如下
e {globalEventTimeStamp: 0, onLaunch: ƒ, onShow: ƒ, onHide: ƒ, onUnlaunch: ƒ, …}
<div class="se-preview-section-delimiter"></div>
flex
佈局中,利用flex
屬性auto
、none
進行相關的view
的對齊;flex
預設是none
,當有空白內容時,不會進行填充設定
page
背景色
//在app/wxss是全域性設定,在某個page下設定只針對這個頁面
page {
background-color: rgb(239, 239, 244);
}
<div class="se-preview-section-delimiter"></div>
- 覆蓋系統元件樣式
如button
/* 覆蓋button邊框樣式 */
button::after {
border-color: #3E76F6;
}
<div class="se-preview-section-delimiter"></div>
- 設定
css
屬性為position:fixed
後讓內容居中方式: 子元素需要設定margin:0 auto
.bottom-tips-container {
position: fixed;
bottom: 92rpx;
left: 0;
right: 0;
}
.bottom-tips {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
width: 570rpx;
height: 82rpx;
margin-left: auto;
margin-right: auto;
background-color: white;
}
<div class="se-preview-section-delimiter"></div>
url
中的數字,都會被誒轉化為字串, 如2 -> “2”
wx:if
和block wx:if
對比block wx:if
不會控制view
的渲染,顯示和隱藏,即已經顯示了的view
及時條件為false
,block
標籤下的內容也“不會隱藏”wx:if
控制view
的渲染,顯示和隱藏,即已經顯示了的view
及時條件為false
,wx:if
標籤下的內容“會隱藏”
角標設定, 父容器設定為
relative
,角標容器設定為absolute
使用圖片
.user-info-current {
position: relative;
align-self: flex-start;
top: -20rpx;
/*因為父容器設定了padding,所以需要向上偏移-20rpx */
}
.user-info-container-corner-mask {
width: 114rpx;
height: 114rpx;
position: absolute;
top: 0;
}
<div class="se-preview-section-delimiter"></div>
- 陰影:
.box-shadow-6{
box-shadow:-10px 0 10px red, /*左邊陰影*/
10px 0 10px yellow, /*右邊陰影*/
0 -10px 10px blue, /*頂部陰影*/
0 10px 10px green; /*底邊陰影*/
}
文字對齊
text-align
和margin
衝突,和padding
不衝突width屬性,可以設定
'40%'
有效,設定為0.4
無效,這個可以擁有動態設定進度,如直播答題的答對人數背景色cover-view
內容為文字的時候,對於在live-pusher
或者live-player
在上面使用 ,如果font-size
未設定,則不會顯示,普通view
上面使用,及時不設定font-size
,也會顯示