Web开发人员都在广泛的使用HTML。无论你使用什么框架或者选择哪个后端语言,框架在变,但是HTML始终如一。尽管被广泛使用,但还是有一些标签或者属性是大部分开发者不熟知的。虽然现在有很多的模版引擎供我们使用,但是我们还是需要尽可能的熟练掌握HTML内容,就像CSS一样。- D; v$ w/ T$ j7 l
前端开发中最好尽可能使用HTML特性来实现我们的功能,而不是使用JavaScript实现相同的功能,尽管编写HTML可能会是重复的和无聊的。许多开发人员每天都在使用HTML,但他们并没有尝试改进自己的项目,也没有真正利用HTML的一些鲜为人知的特性。下面这5个通过HTML标签/属性实现的功能虽然不常提及但也很有用。
% I5 ?$ e* j8 F; M+ q 注:所提到的标签和属性的兼容性需要大家根据实际场景来选取是否使用。 5 Y# I {* y- \0 ]6 E0 d
一、图片懒加载
1 a8 |% }% |# v { 图片懒加载可以帮助提升网站的性能和响应能力。图片懒加载可以避免立即加载那些不在屏幕中立即显示的图片素材,当用户滚动临近图片时再去开始加载。; x7 Z0 q. \( _
换言之,当用户滚动到图片出现时再进行加载,否则不加载。这就降低了屏幕内容展示过程中的图片素材的请求数量,提升了站点性能。
# A1 ]3 M# I! d7 _6 C( K) N1 W 往往我们都是通过javascript来实现的,通过监听页面滚动事件来确定加载对应的资源。但是在不完全考虑兼容性的场景下,我们其实可以通过图片文件添加loading="lazy"的属性来实现。3 f% `1 g- T& Q; b# X, Z/ x
<img src="image.png" loading="lazy" alt="lazy" width="200" height="200" />
二、输入提示
5 Y8 I7 Q- r1 |1 Y8 _ 当用户在进行输入搜索功能时,如果能够给出有效的提示,这会大大提升用户体验。输入建议和自动完成功能现在到处可见,我们可以使用Javascript添加输入建议,方法是在输入框上设置事件侦听器,然后将搜索到的关键词与预定义的建议相匹配。' d! A) I4 c W0 \7 d; f0 q W
其实,HTML也是能够让我们来实现预定义输入建议功能的,通过<datalist>标签来实现。需要注意的是,使用时这个标签的id属性需要和input元素的list属性一致。8 @9 [) Z9 R4 F3 H3 R" ~, X- g
<p><label for="country">请选择喜欢的国家:</label></p><p><input list="countries" name="country" id="country"></p><p><datalist id="countries"></p><p> <option value="UK"></p><p> <option value="Germany"></p><p> <option value="USA"></p><p> <option value="Japan"></p><p> <option value="India"></p><p> <option value=“China”></p><p></datalist></p>
三、Picture标签
0 T5 S$ M9 ?5 a" Y$ N: t 你是否遇到过在不同场景或者不同尺寸的设备上面的时候,图片展示适配问题呢?我想大家都遇到过。针对只有一个尺寸的图片素材的时候,我们往往可以通过CSS的object-fit属性来进行裁切适配。但是有些时候需要针对不同的分辨率来显示不同尺寸的图片的场景的时候,我们是否可以直接通过HTML来实现呢?* R: t1 k6 R; M. \# B6 T- Y! p
HTML提供了<picture>标签,允许我们来添加多张图片资源,并且根据不同的分辨率需求来展示不同的图片。7 {8 ^3 P% T% U8 m' ^
<p><picture></p><p> <source media="(min-width:768px)" srcset="med_flower.jpg"></p><p> <source media="(min-width:495px)" srcset="small_flower.jpg"></p><p> <img src="high_flower" style="width: auto;" /></p><p></picture></p>
我们可以定义不同区间的最小分辨率来确定图片素材,这个标签的使用有些类似<audio>和<video>标签。6 j& J1 A7 p5 g! k
四、Base URL 4 \7 d+ \/ v9 j0 r
当我们的页面有大量的锚点跳转或者静态资源加载时,并且这些跳转或者资源都在统一的域名的场景时,我们可以通过<base>标签来简化这个处理。例如,我们有一个列表需要跳转到微博的不同大V的主页,我们就可以通过设置<base>来简化跳转路径。+ e! |3 ^& \4 k+ M
<p><head></p><p> <base href="https://www.weibo.com/" target="_blank"> </p><p></head></p><p><body></p><p> <a href="jackiechan">成龙</a></p><p> <a href="kukoujialing">贾玲</a></p><p></body></p>
<base>标记必须具有href和target属性。4 t0 `; `. b2 A
五、页面重定向(刷新) 4 E. X' i6 s0 ^0 t/ g
当我们希望实现一段时间后或者是立即重定向到另一个页面的功能时,我们可以直接通过HTML来实现。我们经常会遇到有些站点会有这样一个功能,“5s后页面将跳转”。这个交互可以嵌入到HTML中,直接通过<meta>标签,设置http-equiv="refresh"来实现。
) A% t3 w1 D N1 a6 {7 r- B <meta http-equiv="refresh" content="4; URL='https://google.com' />
这里content属性指定了重定向发生的秒数。值得一提的是,尽管谷歌声称这种形式的重定向和其他的重定向方式一样可用,但是使用这种类型的重定向其实并不是那么的优雅,往往会显得很突兀。因此,最好在某些特殊的情况下使用它,比如在长时间用户不活动之后再重定向到目标页面。+ L0 R% |& K* C: L* ~1 x' q% |7 y
六、后记
) L& w( x8 q- b) Q+ T( y0 X HTML和CSS是非常强大的,哪怕我们仅仅使用这两种技术也能创建出一些奇妙的网站。虽然它们的使用量很大很普遍,还是有很多的开发者并没有真正的深入了解他们,还有很多的内容需要我们深入的去学习和理解,实践,有很多的技巧等待着我们去发现。
# G. `3 N, d' h( Z0 Z