5 個不常提及的 HTML 技巧
2021年你需要知道的HTML標(biāo)簽和屬性
Web開發(fā)人員都在廣泛的使用HTML。無論你使用什么框架或者選擇哪個后端語言,框架在變,但是HTML始終如一。盡管被廣泛使用,但還是有一些標(biāo)簽或者屬性是大部分開發(fā)者不熟知的。雖然現(xiàn)在有很多的模版引擎供我們使用,但是我們還是需要盡可能的熟練掌握HTML內(nèi)容,就像CSS一樣。
在我看來,最好盡可能使用HTML特性來實現(xiàn)我們的功能,而不是使用JavaScript實現(xiàn)相同的功能,盡管我承認(rèn)編寫HTML可能會是重復(fù)的和無聊的。
盡管許多開發(fā)人員每天都在使用HTML,但他們并沒有嘗試改進(jìn)自己的項目,也沒有真正利用HTML的一些鮮為人知的特性。
下面這5個通過HTML標(biāo)簽/屬性實現(xiàn)的功能我覺得需要了解一下:
圖片懶加載
圖片懶加載可以幫助提升網(wǎng)站的性能和響應(yīng)能力。圖片懶加載可以避免立即加載那些不在屏幕中立即顯示的圖片素材,當(dāng)用戶滾動臨近圖片時再去開始加載。
換言之,當(dāng)用戶滾動到圖片出現(xiàn)時再進(jìn)行加載,否則不加載。這就降低了屏幕內(nèi)容展示過程中的圖片素材的請求數(shù)量,提升了站點性能。
往往我們都是通過javascript來實現(xiàn)的,通過監(jiān)聽頁面滾動事件來確定加載對應(yīng)的資源。但是,在不完全考慮兼容性的場景下,我們其實可以直接通過HTML來直接實現(xiàn)。
注:本篇的提到的標(biāo)簽和屬性的兼容性需要大家根據(jù)實際場景來選取是否使用
可以通過為圖片文件添加loading="lazy"的屬性來實現(xiàn):
- <img src="image.png" loading="lazy" alt="lazy" width="200" height="200" />
輸入提示
當(dāng)用戶在進(jìn)行輸入搜索功能時,如果能夠給出有效的提示,這會大大提升用戶體驗。輸入建議和自動完成功能現(xiàn)在到處可見,我們可以使用Javascript添加輸入建議,方法是在輸入框上設(shè)置事件偵聽器,然后將搜索到的關(guān)鍵詞與預(yù)定義的建議相匹配。
其實,HTML也是能夠讓我們來實現(xiàn)預(yù)定義輸入建議功能的,通過
- <label for="country">請選擇喜歡的國家:</label>
- <input list="countries" name="country" id="country">
- <datalist id="countries">
- <option value="UK">
- <option value="Germany">
- <option value="USA">
- <option value="Japan">
- <option value="India">
- <option value=“China”>
- </datalist>
Picture標(biāo)簽
你是否遇到過在不同場景或者不同尺寸的設(shè)備上面的時候,圖片展示適配問題呢?我想大家都遇到過。
針對只有一個尺寸的圖片素材的時候,我們往往可以通過CSS的object-fit屬性來進(jìn)行裁切適配。但是有些時候需要針對不同的分辨率來顯示不同尺寸的圖片的場景的時候,我們是否可以直接通過HTML來實現(xiàn)呢?
HTML提供了標(biāo)簽,允許我們來添加多張圖片資源,并且根據(jù)不同的分辨率需求來展示不同的圖片。
- <picture>
- <source media="(min-width:768px)" srcset="med_flower.jpg">
- <source media="(min-width:495px)" srcset="small_flower.jpg">
- <img src="high_flower" style="width: auto;" />
- </picture>
我們可以定義不同區(qū)間的最小分辨率來確定圖片素材,這個標(biāo)簽的使用有些類似
Base URL
當(dāng)我們的頁面有大量的錨點跳轉(zhuǎn)或者靜態(tài)資源加載時,并且這些跳轉(zhuǎn)或者資源都在統(tǒng)一的域名的場景時,我們可以通過標(biāo)簽來簡化這個處理。
例如,我們有一個列表需要跳轉(zhuǎn)到微博的不同大V的主頁,我們就可以通過設(shè)置來簡化跳轉(zhuǎn)路徑
- <head>
- <base href="https://www.weibo.com/" target="_blank">
- </head>
- <body>
- <a href="jackiechan">成龍</a>
- <a href="kukoujialing">賈玲</a>
- </body>
標(biāo)記必須具有href和target屬性。
頁面重定向(刷新)
當(dāng)我們希望實現(xiàn)一段時間后或者是立即重定向到另一個頁面的功能時,我們可以直接通過HTML來實現(xiàn)。
我們經(jīng)常會遇到有些站點會有這樣一個功能,“5s后頁面將跳轉(zhuǎn)”。這個交互可以嵌入到HTML中,直接通過標(biāo)簽,設(shè)置http-equiv="refresh"來實現(xiàn)
- <meta http-equiv="refresh" content="4; URL='https://google.com' />
這里content屬性指定了重定向發(fā)生的秒數(shù)。值得一提的是,盡管谷歌聲稱這種形式的重定向和其他的重定向方式一樣可用,但是使用這種類型的重定向其實并不是那么的優(yōu)雅,往往會顯得很突兀。
因此,最好在某些特殊的情況下使用它,比如在長時間用戶不活動之后再重定向到目標(biāo)頁面。
后記
HTML和CSS是非常強(qiáng)大的,哪怕我們僅僅使用這兩種技術(shù)也能創(chuàng)建出一些奇妙的網(wǎng)站。雖然它們的使用量很大很普遍,還是有很多的開發(fā)者并沒有真正的深入了解他們,還有很多的內(nèi)容需要我們深入的去學(xué)習(xí)和理解,實踐,有很多的技巧等待著我們?nèi)グl(fā)現(xiàn)。