溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

CSS偽類:empty的用法

發(fā)布時間:2021-03-17 09:29:06 來源:億速云 閱讀:241 作者:小新 欄目:web開發(fā)

這篇文章給大家分享的是有關(guān)CSS偽類:empty的用法的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

我當時是這么想的:一方面出于“不在JavaScript里寫太多東西”的考慮,另一方面,由于省、市、區(qū)我是分別用三個變量來實現(xiàn)的,所以JavaScript里就關(guān)注這三個變量,比如之間的空格或其它東西都拿到wxml文件里。就像這樣:

<view class="departments location" bindtap="fixedshow">
  <view class="depart_title">所在位置</view>
  <view wx:if="{{provinces&&citys&&areas}}" class="placeholder depart_content">{{provinces}} {{citys}} {{areas}}</view>
  <view class="placeholder depart_content befselect" wx:else>請選擇當前位置</view>
  <view class="desc">如有變動請修改后再次提交</view>
</view>

(因為調(diào)用涉及到后來改動的只有在點擊彈窗里的“確認”按鈕時在事件中將那三個變量分別賦給這段代碼中出現(xiàn)的三個變量 &mdash;&mdash; 否則會只要改動不管是點取消還是確認已經(jīng)發(fā)生改變了,這樣不妥?。?/p>

其布局是這樣的: 

.departments{
  width: 100%;
  height: 96rpx;
  display: flex;
  align-items: center;
  font-size: 36rpx;
  font-weight: 347;
  text-overflow: ellipsis;
  overflow: hidden;
  white-space: nowrap;
}
.location{
  position: relative;
  border-bottom: 1rpx solid rgba(0,0,0,.009);
  display: flex;
  align-items: flex-start;
  padding-top: 20rpx;
}

.desc{
  position: absolute;
  right: 19rpx;
  bottom: 4rpx;
  color: rgb(63,142,255);
  font-size: 23rpx;
}
.departments .depart_title{
  width: 20%;
}
.departments .depart_content{
  margin-left: 10%;
  text-overflow: ellipsis;
  overflow: hidden;
  white-space: nowrap;
}
.departments .placeholder{
  width: 69%;
  text-overflow: ellipsis;
  overflow: hidden;
  white-space: nowrap;
}

CSS偽類:empty的用法

在決定了要替換這里的wx:if以后,你首先要想:用什么替換?
wx:if作用是判斷“是否存在”,如果不存在(條件不滿足)就切換到wx:else或是wx:elif的邏輯里!

OK,想到這里,你應該能想到一個css偽類::empty !它的作用和我們想要的效果一樣:判斷如果元素(內(nèi)容)為空的話&hellip;
我迅速對代碼做了改動:

<view class="departments location" bindtap="fixedshow">
  <view class="depart_title">所在位置</view>
  <view class="placeholder depart_content">{{provinces}} {{citys}} {{areas}}</view>
  <view class="desc">如有變動請修改后再次提交</view>
</view>

然后在class - depart_content上加了這個偽類:

.placeholder:empty::before{
  content: "請選擇當前位置";
  color: rgba(0,0,0,.6);
}

CSS偽類:empty的用法
 

一片空白!

經(jīng)過查閱資料::empty偽類表示如果標簽內(nèi)容為空,那么內(nèi)容區(qū)域如果帶有空格,也是不會被匹配到的!

在寫標簽時一定要注意這一點:標簽內(nèi)是否有空格或換行?。〒Q行常常被解析為一個空格)
遇到非單標簽一定注意閉合標簽!

最后解決辦法是:在js中將三個變量用空格相連接,再渲染到頁面上即可!
 

CSS偽類:empty的用法
 

(其實這里是一個自定義的選擇器,而自動定位就是往高德地圖發(fā)送了請求獲取到省市區(qū)字段而已,代碼就不寫了。。。)


到這里我們會發(fā)現(xiàn)一個事:上面我們不僅用了empty偽類,還用了before偽元素!

其實這一點很平常 &mdash;&mdash; 畢竟只有empty是添加不了內(nèi)容的(似乎縱觀css,只有before和after這樣偽元素可以向頁面中添加內(nèi)容,不管是文字還是圖片之類的)

我認為更應該關(guān)注到的是兩個地方:

  • 偽元素中沒有用position定位!一般來說對一個(存在內(nèi)容的)元素來說,為其設(shè)置“前置”(before)/“后置”(after)樣式都需要定位:規(guī)定其顯示的地方。不然大概率偽元素中的文字是顯示不出來的,通過本文的empty可以猜測:他被原本存在的內(nèi)容覆蓋住了。

  • 從第一點可以得出::before:after 偽元素向標簽內(nèi)插入內(nèi)容、圖形,并不會影響empty偽類的匹配!

這個特性實用的一批。


由上,可見此偽類最大的用處就是“字段缺失提示”!這是非常實用的。而且把這項任務(wù)交給CSS也可以減輕許多“(布局)負擔”、體驗更好、維護起來也更方便!

比如:我在項目優(yōu)化時就將所有有請求的字段都加上了統(tǒng)一類名:

.ym-empty:empty::before{
	content: "暫無數(shù)據(jù),請重試",
	display: block;
	text-align: center;
	color: rgba(0,0,0,.6);
	/** 其它定位、字體更改操作 */
}

感謝各位的閱讀!關(guān)于“CSS偽類:empty的用法”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI