盤點五個驚艷一時的CSS屬性(不常用但很有用)
前言
隨著前端的不斷發(fā)展,更多新的 CSS 屬性不斷加入提案,本文列舉 5 個不常用但很有用且你見過也可能沒見過的 CSS 屬性,帶大家領(lǐng)略 CSS 之美。
一、position: sticky
不知道大家平時業(yè)務(wù)開發(fā)中有沒有碰到這樣的需求:標題在滾動的時候,會一直貼著最頂上。這種場景實際上很多:比如表格的標題欄、網(wǎng)站的導(dǎo)航欄、手機通訊錄的人名首字母標題等等。如果讓大家自己動手做的話,是不是會用 js 結(jié)合 css 來實現(xiàn)呢?以前確實是這樣的,直到后來 position 屬性新增了一個屬性值 sticky ,前端程序員才迎來了小春天。
css 部分:
.container {
background-color: oldlace;
height: 200px;
width: 140px;
overflow: auto;
}
.container div {
height: 20px;
background-color: aqua;
border: 1px solid;
}
.container .header {
position: sticky;
top: 0;
background-color: rgb(187, 153, 153);
}
html 部分:
<div class="container"> <div class="header">Header</div> <div>1</div> <div>2</div> <div>3</div> </div>
就這么簡單?對,就這么簡單,但是使用的時候要注意兼容性。
二、:empty 選擇器

平時開發(fā)的時候數(shù)據(jù)都是通過請求接口獲取的,也會存在接口沒有數(shù)據(jù)的情況。這個時候正常的做法是給用戶一個提示,讓用戶知道當前不是出 bug 了,而是確實沒有數(shù)據(jù)。一般的做法是我們?nèi)藶榈呐袛喈斍皵?shù)據(jù)返回列表的長度是否為 0,如果為 0 則顯示一個 “暫無數(shù)據(jù)” 給用戶,反之則隱藏該提示。寫過 Vue 的小伙伴是不是經(jīng)常這么做:
<div>
<template v-if="datas.length">
<div v-for="data in datas"></div>
</template>
<template v-else>
<div>暫無數(shù)據(jù)</div>
</template>
</div>
但是有了 :empty 這個選擇器后,你大可以把這個活交給 CSS 來干:
.container {
height: 400px;
width: 600px;
background-color: antiquewhite;
display: flex;
justify-content: center;
align-items: center;
}
.container:empty::after {
content: "暫無數(shù)據(jù)";
}
通過 :empty 選中內(nèi)容為空的容器,然后通過偽元素為空容器添加提示。是不是非常方便?
三、gap
小伙伴們?nèi)粘i_發(fā)中,都有用過 padding 和 margin 吧,margin 一般用做邊距,讓兩個元素隔開一點距離,但是對于一些場景下,我們很難通過計算得到一個除的盡的值,比如 100px 我要讓 3 個元素等分,且每個元素隔開 10px,這就很尷尬了。
沒關(guān)系!我們可以用 gap 屬性,gap 屬性它適用于 Grid 布局、Flex 布局以及多列布局,并不一定只是 Grid 布局中可以使用。
比如我們要讓每個元素之間隔開 20px, 那么使用 gap 我們可以這樣:
display: flex | grid; gap: 20px;
四、background-clip: text
這個屬性可能用的不多,有什么用呢?簡單來說就是可以做一個帶背景的文字效果:


大家平時 background-clip 是不是都用來做一些裁切效果?你知道它還有個屬性值是 text 嗎?background-clip: text 用來做帶背景的文字效果,相信大家平時瀏覽一些網(wǎng)站的時候都會看到類似的實現(xiàn),實際上通過 CSS 我們也能做到這種效果。
五、:invalid 偽類
:invalid 表示任意內(nèi)容未通過驗證的 input 或其他 form 元素。什么意思呢?舉個例子。
<form> <label for="url_input">Enter a URL:</label> <input type="url" id="url_input" /> <br /> <br /> <label for="email_input">Enter an email address:</label> <input type="email" id="email_input" required/> </form>
我們的需求是讓 input 當值有效時,元素顏色為綠色,無效時為紅色。
input:invalid {
background-color: #ffdddd;
}
form:invalid {
border: 5px solid #ffdddd;
}
input:valid {
background-color: #ddffdd;
}
form:valid {
border: 5px solid #ddffdd;
}
input:required {
border-color: #800000;
border-width: 3px;
}
input:required:invalid {
border-color: #C00000;
}
結(jié)論
本文就到此結(jié)束了,希望大家共同努力,早日拿下 CSS 。
到此這篇關(guān)于五個驚艷一時的CSS屬性的文章就介紹到這了,更多相關(guān)盤點CSS屬性內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!
相關(guān)文章
這篇文章主要介紹了 css常用字體屬性與背景屬性,css可以做出很多使html樣式的改變,今天主要說一說字體樣式與背景樣式,字體樣式的分類根據(jù)名字就可以判斷出來,下面文章的2022-02-25
這篇文章主要介紹了css一些不常見但很有用的屬性操作大全,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-28
這篇文章主要介紹了CSS如何設(shè)置列表樣式屬性(看這篇文章就夠用了),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著2019-11-25- 本文通過實例代碼給大家介紹了CSS定義字體、顏色、背景等屬性的相關(guān)知識,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧2018-08-01




