溫馨提示×

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

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

這些功能其實(shí)不需要 JS,CSS 就能搞定

發(fā)布時(shí)間:2020-07-11 17:07:04 來源:網(wǎng)絡(luò) 閱讀:224 作者:fcxyfc 欄目:web開發(fā)

直接入題

  1. 每個(gè)單詞的首字母大寫
    其實(shí)我第一次看到這個(gè)功能的時(shí)候就是使用 JS 去實(shí)現(xiàn)這個(gè)功能,想都沒想 CSS 可以完成這個(gè)功能。馬上就屁顛屁顛的寫了一個(gè)方法:
    function capitalizeFirst( str ) {
    let result = '';
    result = str.toLowerCase().replace(/( |^)[a-z]/g, (L) => L.toUpperCase());
    return result
    }
    復(fù)制代碼寫完這個(gè)方法后,還有點(diǎn)小得意,也就沒想其他方案。直到有一天看到 CSS 也能做這個(gè)功能的時(shí)候,我才反應(yīng)過來明明一句 CSS 就能解決的問題,我卻使用了更復(fù)雜的方案。
    CSS 方案如下:
    .capitalizeFirst-css {
    text-transform: capitalize;
    }
    復(fù)制代碼是不是特別簡(jiǎn)單(代碼在上面的 blog 倉(cāng)庫(kù),訪問 cssDo 路由便可,下面的案例都是這個(gè)路由下):

這些功能其實(shí)不需要 JS,CSS 就能搞定

text-transform 簡(jiǎn)單介紹

這是 CSS2 中的屬性,參數(shù)有 capitalize | uppercase | lowercase | none

參數(shù)介紹:

none: 默認(rèn)。定義帶有小寫字母和大寫字母的標(biāo)準(zhǔn)的文本。
capitalize: 文本中的每個(gè)單詞以大寫字母開頭。
uppercase: 定義僅有大寫字母。
lowercase: 定義無(wú)大寫字母,僅有小寫字母。

從這個(gè)屬性我們可以知道全部大寫(小寫)的需求這個(gè)屬性也能輕易實(shí)現(xiàn)。

  1. 單選高亮
    可能你看到“單選高亮”沒反應(yīng)過來,直接來張圖片你就馬上清楚了:

這些功能其實(shí)不需要 JS,CSS 就能搞定

不知道你是否第一次看到這種單選高亮的需求時(shí),是怎么處理的。我第一次直接是用 JS 控制的。后來我發(fā)現(xiàn)這個(gè)需求用 CSS 更方便處理。
主要代碼就是一段 CSS 代碼:
// 省略部分代碼,詳細(xì)代碼看倉(cāng)庫(kù)
.input:checked + .colors {
border-color: #e63838;
color: #e63838;
}

<div class="single-check">
<input class="input" type="radio" name="colors" value="1">
<div class="colors">天空之境</div>
</div>
復(fù)制代碼看效果:

這些功能其實(shí)不需要 JS,CSS 就能搞定

兩個(gè)選擇器的區(qū)別
~ 選擇器:查找某個(gè)元素后面的所有兄弟元素

  • 選擇器:查找某個(gè)元素后面緊鄰的兄弟元素
    擴(kuò)展
    其實(shí)這個(gè)技巧也完全可以使用在導(dǎo)航欄的交互效果,個(gè)人覺得可以簡(jiǎn)化一部分工作。
    3、多列等高問題
    之前做 pc 端的客戶畫像需求時(shí),遇到需要左右兩邊等到的需求(左邊塊的高度會(huì)隨著內(nèi)容變化)。
    最初我使用的 JS 計(jì)算高度再賦值,可是這樣會(huì)有頁(yè)面閃動(dòng)的效果。所以找到了兩種 CSS 的處理方案:

每列設(shè)置一個(gè)很大的 padding,再設(shè)置一個(gè)很大的負(fù)的 margin
使用 display: table;

第一種有明顯的缺陷:

border-bottom 看不到了
設(shè)置的下方的兩個(gè)圓角也不見了

所以我使用了 display: table; 的方式來實(shí)現(xiàn)等高,可以說非常的方便。

建議不要一味的抵觸 table,有的場(chǎng)景還是可以使用的。

4、表單驗(yàn)證

先聲明:這里沒有用到 JS,不過用到了 HTML5 關(guān)于 <input> 的新屬性 —— pattern( 檢查控件值的正則表達(dá)式 )。
還有一點(diǎn):其實(shí)我在實(shí)際項(xiàng)目中沒這么用過。

代碼如下:
input[type="text"]:invalid ~ input[type="submit"] {
display: none
}

<div class="form-css">
<input type="text" name="tel" placeholder="輸入手機(jī)號(hào)碼" pattern="^1[3456789]\d{9}$" required><br>
<input type="text" name="smscode" placeholder="輸入驗(yàn)證碼" pattern="\d{4}" required><br>
<input type="submit" ></input>
</div>
復(fù)制代碼效果如下(樣式不好看的問題請(qǐng)忽略):

這些功能其實(shí)不需要 JS,CSS 就能搞定

invalid 偽類和 vaild 偽類
valid 偽類,匹配通過 pattern 驗(yàn)證的元素
invalid 偽類,匹配未通過 pattern 驗(yàn)證的元素

向AI問一下細(xì)節(jié)

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

AI