小程序能夠在沒有受權時是能夠獲取微信頭像的信息顯示的,即經過open-data獲取顯示,頭像的type爲userAvatarUrl。小程序
//頭像顯示的寫法
<open-data type='userAvatarUrl'></open-data>
複製代碼
接下來咱們會給頭像加個佈局class和mode,那麼代碼就會變成這樣:微信
//添加class、mode
<open-data class='icon' mode='aspectFit' type='userAvatarUrl'></open-data>
複製代碼
.headView .icon {
height: 180rpx;
width: 180rpx;
border-radius: 50%;
}
複製代碼
這是咱們會發現咱們雖然class裏有作圓角,但是沒有起做用:xss
因此咱們獲得結論:小程序open-data中的頭像,咱們是不能對其作圓角之類的處理。那麼,咱們怎樣才能作到在沒有獲取受權時 拿用戶頭像顯示 並作圓角呢?佈局
實現邏輯:頭像作絕對佈局,並在其上面覆蓋一箇中間鏤空的view設置view的邊界足夠遮擋住頭像非圓形部分,且鏤空view邊界顏色須要跟周圍背景顏色同樣,這樣就實現了僞圓角。flex
實現代碼:優化
.headView {
display: flex;
justify-content: center;
align-items: center;
margin-top: 50rpx;
height: 300rpx;
width: 750rpx;
position: relative;
}
/**
*open-data 的頭像作不了圓角
*這裏是覆蓋一個鏤空的view在上面 鏤空view的邊界作成與周圍背景顏色同樣 作了僞圓角
**/
.headView .icon {
position: absolute;
height: 180rpx;
width: 180rpx;
border-radius: 50%;
border: 50rpx solid #f1f1f1;
}
複製代碼
<view class='headView'>
<open-data class='icon' mode='aspectFit' type='userAvatarUrl'></open-data>
<view class='icon'/>
</view>
複製代碼
這樣就大致實現了!spa
有些人實現效果多是這樣: code
這種狀況要改爲跟目標效果同樣只須要調整一下view的邊界寬度和邊界顏色就能夠了:cdn
代碼優化以下:xml
<open-data class='icon' mode='aspectFit' type='userAvatarUrl'></open-data>
複製代碼
.headView .icon {
height: 180rpx;
width: 180rpx;
border-radius: 50%;
overflow:hidden;//只須要添加這句 把溢出部分隱藏就能夠了
}
複製代碼
感謝提醒,若有哪裏須要改進的 多多指教