「前端詞典」這些功能其實(shí)不需要 JS刑赶,CSS 就能搞定

直接入題

1. 每個(gè)單詞的首字母大寫

其實(shí)我第一次看到這個(gè)功能的時(shí)候就是使用 JS 去實(shí)現(xiàn)這個(gè)功能锯厢,想都沒想 CSS 可以完成這個(gè)功能。馬上就屁顛屁顛的寫了一個(gè)方法:

<pre style="margin: 0px; padding: 0px; border: 0px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-weight: 400; font-stretch: inherit; font-size: 18px; line-height: inherit; font-family: inherit; vertical-align: baseline; word-break: break-word; color: rgb(93, 93, 93); letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;">

function capitalizeFirst( str ) {
 let result = '';
 result = str.toLowerCase().replace(/( |^)[a-z]/g, (L) => L.toUpperCase());
 return result
} 

</pre>

寫完這個(gè)方法后叭爱,還有點(diǎn)小得意撮躁,也就沒想其他方案。直到有一天看到 CSS 也能做這個(gè)功能的時(shí)候买雾,我才反應(yīng)過來明明一句 CSS 就能解決的問題把曼,我卻使用了更復(fù)雜的方案杨帽。

CSS 方案如下:

<pre style="margin: 0px; padding: 0px; border: 0px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-weight: 400; font-stretch: inherit; font-size: 18px; line-height: inherit; font-family: inherit; vertical-align: baseline; word-break: break-word; color: rgb(93, 93, 93); letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;">

.capitalizeFirst-css {
 text-transform: capitalize;
}

</pre>

是不是特別簡(jiǎn)單(代碼在上面的 blog 倉庫,訪問 cssDo 路由便可嗤军,下面的案例都是這個(gè)路由下):

image

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

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

參數(shù)介紹:

  1. none: 默認(rèn)。定義帶有小寫字母和大寫字母的標(biāo)準(zhǔn)的文本叙赚。
  2. capitalize: 文本中的每個(gè)單詞以大寫字母開頭老客。
  3. uppercase: 定義僅有大寫字母。
  4. lowercase: 定義無大寫字母震叮,僅有小寫字母胧砰。

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

2. 單選高亮

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

image

不知道你是否第一次看到這種單選高亮的需求時(shí)尉间,是怎么處理的。我第一次直接是用 JS 控制的击罪。后來我發(fā)現(xiàn)這個(gè)需求用 CSS 更方便處理乌妒。

主要代碼就是一段 CSS 代碼:

<pre style="margin: 0px; padding: 0px; border: 0px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-weight: 400; font-stretch: inherit; font-size: 18px; line-height: inherit; font-family: inherit; vertical-align: baseline; word-break: break-word; color: rgb(93, 93, 93); letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;">

// 省略部分代碼,詳細(xì)代碼看倉庫
.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>

</pre>

看效果:

image

兩個(gè)選擇器的區(qū)別

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

  • 選擇器:查找某個(gè)元素后面緊鄰的兄弟元素

擴(kuò)展

其實(shí)這個(gè)技巧也完全可以使用在導(dǎo)航欄的交互效果外邓,個(gè)人覺得可以簡(jiǎn)化一部分工作。

3古掏、多列等高問題

之前做 pc 端的客戶畫像需求時(shí)损话,遇到需要左右兩邊等到的需求(左邊塊的高度會(huì)隨著內(nèi)容變化)。

最初我使用的 JS 計(jì)算高度再賦值槽唾,可是這樣會(huì)有頁面閃動(dòng)的效果丧枪。所以找到了兩種 CSS 的處理方案:

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

第一種有明顯的缺陷:

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

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

image

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

4恋博、表單驗(yàn)證

先聲明:這里沒有用到 JS,不過用到了 HTML5 關(guān)于 <input> 的新屬性 —— pattern( 檢查控件值的正則表達(dá)式 )私恬。

還有一點(diǎn):其實(shí)我在實(shí)際項(xiàng)目中沒這么用過债沮。

代碼如下:

<pre style="margin: 0px; padding: 0px; border: 0px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-weight: 400; font-stretch: inherit; font-size: 18px; line-height: inherit; font-family: inherit; vertical-align: baseline; word-break: break-word; color: rgb(93, 93, 93); letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;">

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>

</pre>

效果如下(樣式不好看的問題請(qǐng)忽略):

image

invalid 偽類和 vaild 偽類

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

后記

還有一些大家比較常用的這里就不介紹了疫衩,

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市荣德,隨后出現(xiàn)的幾起案子闷煤,更是在濱河造成了極大的恐慌童芹,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鲤拿,死亡現(xiàn)場(chǎng)離奇詭異假褪,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)皆愉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門嗜价,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人幕庐,你說我怎么就攤上這事久锥。” “怎么了异剥?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵瑟由,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我冤寿,道長(zhǎng)歹苦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任督怜,我火速辦了婚禮殴瘦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘号杠。我一直安慰自己蚪腋,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布姨蟋。 她就那樣靜靜地躺著屉凯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪眼溶。 梳的紋絲不亂的頭發(fā)上悠砚,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音堂飞,去河邊找鬼灌旧。 笑死,一個(gè)胖子當(dāng)著我的面吹牛酝静,可吹牛的內(nèi)容都是我干的节榜。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼别智,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼宗苍!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤讳窟,失蹤者是張志新(化名)和其女友劉穎让歼,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體丽啡,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谋右,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了补箍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片改执。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖坑雅,靈堂內(nèi)的尸體忽然破棺而出辈挂,到底是詐尸還是另有隱情,我是刑警寧澤裹粤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布终蒂,位于F島的核電站,受9級(jí)特大地震影響遥诉,放射性物質(zhì)發(fā)生泄漏拇泣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一矮锈、第九天 我趴在偏房一處隱蔽的房頂上張望霉翔。 院中可真熱鬧,春花似錦苞笨、人聲如沸早龟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至壹店,卻和暖如春猜丹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背硅卢。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國打工射窒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人将塑。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓脉顿,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親点寥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子艾疟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容