容易被忽略的5个HTML技巧

Souleigh ✨
• 阅读 947

对于所有 Web 开发人员来说,无论你选择的是哪种框架或后端语言,都需要大量使用 HTML(超文本标记语言)。

各种框架和编程语言可能会此消彼长,但 HTML 永不会过时。只是,就算 HTML 的应用如此广泛,这种语言中还是有不少多数开发人员都不了解的标签和属性。

而且,尽管市面上有各种模板引擎(例如 Pug)可用,但你仍然需要对 HTML 和 CSS 有所了解。

如果你经常使用 CSS,请查看我最近的博客,了解一些鲜为人知却非常有用的 CSS 属性:

https://medium.com/javascript-in-plain-english/6-css-properties-nobody-is-talking-about-e6cab5138d02

我认为,大家最好尽可能使用 HTML 特性来实现所需的功能,尽量不要动用 JavaScript。当然我也承认,HTML 写起来可能会枯燥无味。

虽然许多开发人员每天都在使用 HTML,但他们并没有试着提升自己的技能水平,没有想过真正用好一些鲜为人知的 HTML 特性。

以下是你应该了解的 5 个 HTML 标签和属性:

1. 延迟加载图像

图像延迟加载可以帮助开发人员提升网站性能和响应速度。

延迟加载可防止设备第一时间加载屏幕上尚不需要的图像。但是,当你向下滚动或靠近图像时,图像就会开始加载。

换句话说,当用户滚动时才加载图像,让图像变为可见,否则就不加载。

这可以通过纯 HTML 轻松实现。

你所要做的就是将 loading= "lazy"属性添加到你的图像文件中。

添加属性后,你的图片元素应如下所示:

<img src="image.png" loading="lazy" alt="…" width="200" height="200">

使用谷歌的 Lighthouse 工具,你可以深入了解这一特性可以为你节省的内容加载字节数:

https://developers.google.com/web/tools/lighthouse/

2. 输入建议

尝试搜索什么事物时获取有用的关联建议确实会很有帮助。

如今,输入建议和自动完成功能相当流行,你一定已经在谷歌和 Facebook 等网站上注意到它们了。

你可以使用 JavaScript 添加输入建议,方法是在输入字段上设置一个事件侦听器,然后将搜索的术语与预定义建议进行匹配。

https://www.w3schools.com/howto/howto\_js\_autocomplete.asp

但是,HTML 也允许你使用标签显示一组预定义的建议。

请记住,此标签的 ID 属性必须与输入字段列表属性相同。

<label for="country">Choose your country from the list:</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">  
</datalist>

3. 图片标签

你是否遇到过图像无法按预期缩放的问题?我当然就遇到过很多次。

当你试图构建一个图像展示网站,或使用一个大尺寸图像并将其显示为缩略图时,往往就会发生这种情况。

更改视口宽度时,你可能会注意到某些图像未按预期缩放。

幸运的是,HTML 的标签使开发人员可以很轻松地解决这一问题,这个标签让你可以添加适合不同宽度的多个图像,而不必只对一张图上下缩放。

你的代码将如下所示:

<picture>  
  <source media="(min-width:768px)" srcset="med_flag.jpg">  
  <source media="(min-width:495px)" srcset="small_flower.jpg">  
  <img src="high_flag.jpg" alt="Flags" style="width:auto;">  
</picture>

如你所见,我们指定了特定图像必须显示的一个最小宽度。此标签与

4. Base URL

创建网站索引或站点地图时,这是我最喜欢的标签之一。

当你有很多锚标签重定向到某个 URL,并且所有 URL 都以相同的基础地址开头时,这个标签就会派上用场。

例如,如果我要指定 Elon Musk 和 Bill Gates 的 Twitter 内容的 URL,则 URL(域)的开头都会相同,而其后将是他们各自的 ID。

一般来说,我必须将链接与相同的域名一起粘贴两次。

但是,HTML 有一个标签,可用于设置基础 URL,如下所示:

<head>  
  <base href="https://www.twitter.com/" target="_blank">  
</head>  
<body>  
<img src="elonmusk" alt="Elon Musk">  
<a href="BillGates">Bill Gate</a>  
</body>

上面的代码将生成一个图像重定向到“https://www.twitter.com/elonmusk”和一个锚标记重定向到“https://www.twitter.com/billgates”。标签必须具有“href”或一个目标属性。

5. 文档刷新

如果要在页面一段时间不活动时,或者第一时间将用户重定向到另一个页面,只需使用纯 HTML 即可轻松实现。

当你打开某些站点时,你可能已经注意到了此特性,看到了“你将在 5 秒钟内被重定向”这一行文字。

此行为已烘焙到 HTML 中,你可以使用标签,在其上设置 http-equiv= "refresh"来启用它。

<meta http-equiv="refresh" content="4; URL='https://google.com' />

这里的 content 属性指定了重定向倒计时的秒数。值得注意的是,尽管谷歌声称将这种形式的重定向与其他重定向一样对待,但除非确实需要,否则使用这种类型的重定向是不明智的。

因此应该只在某些情况下才使用它,例如在长时间不活动后重定向页面。

最后的想法

HTML 和 CSS 非常强大,你可以只使用两者就构建出色的网站。

但是,尽管人们在大量使用这两种语言,可许多开发人员并没有真正沉浸其中。

除了上面我分享的一些技巧外,还有很多这样的技巧和窍门,当然它们都值得你在自己的项目中尝试。

如果你还计划使用 JavaScript,那么一定要查看我最近的博客,其中讨论了一些可以节省你时间的技巧:

https://medium.com/javascript-in-plain-english/5-modern-javascript-tips-and-tricks-to-save-time-7773aff6be26

学习任何东西并精通它都需要时间、奉献精神和实践,HTML 也不例外。

点赞
收藏
评论区
推荐文章
技术小男生 技术小男生
4个月前
linux环境jdk环境变量配置
1:编辑系统配置文件vi/etc/profile2:按字母键i进入编辑模式,在最底部添加内容:JAVAHOME/opt/jdk1.8.0152CLASSPATH.:$JAVAHOME/lib/dt.jar:$JAVAHOME/lib/tools.jarPATH$JAVAHOME/bin:$PATH3:生效配置
光头强的博客 光头强的博客
4个月前
Java面向对象试题
1、请创建一个Animal动物类,要求有方法eat()方法,方法输出一条语句“吃东西”。创建一个接口A,接口里有一个抽象方法fly()。创建一个Bird类继承Animal类并实现接口A里的方法输出一条有语句“鸟儿飞翔”,重写eat()方法输出一条语句“鸟儿吃虫”。在Test类中向上转型创建b对象,调用eat方法。然后向下转型调用eat()方
刚刚好 刚刚好
4个月前
css问题
1、在IOS中图片不显示(给图片加了圆角或者img没有父级)<div<imgsrc""/</divdiv{width:20px;height:20px;borderradius:20px;overflow:h
blmius blmius
1年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
小森森 小森森
4个月前
校园表白墙微信小程序V1.0 SayLove -基于微信云开发-一键快速搭建,开箱即用
后续会继续更新,敬请期待2.0全新版本欢迎添加左边的微信一起探讨!项目地址:(https://www.aliyun.com/activity/daily/bestoffer?userCodesskuuw5n)\2.Bug修复更新日历2.情侣脸功能大家不要使用了,现在阿里云的接口已经要收费了(土豪请随意),\\和注意
晴空闲云 晴空闲云
4个月前
css中box-sizing解放盒子实际宽高计算
我们知道传统的盒子模型,如果增加内边距padding和边框border,那么会撑大整个盒子,造成盒子的宽度不好计算,在实务中特别不方便。boxsizing可以设置盒模型的方式,可以很好的设置固定宽高的盒模型。盒子宽高计算假如我们设置如下盒子:宽度和高度均为200px,那么这会这个盒子实际的宽高就都是200px。但是当我们设置这个盒子的边框和内间距的时候,那
艾木酱 艾木酱
3个月前
快速入门|使用MemFire Cloud构建React Native应用程序
MemFireCloud是一款提供云数据库,用户可以创建云数据库,并对数据库进行管理,还可以对数据库进行备份操作。它还提供后端即服务,用户可以在1分钟内新建一个应用,使用自动生成的API和SDK,访问云数据库、对象存储、用户认证与授权等功能,可专
Wesley13 Wesley13
1年前
MySQL查询按照指定规则排序
1.按照指定(单个)字段排序selectfromtable_nameorderiddesc;2.按照指定(多个)字段排序selectfromtable_nameorderiddesc,statusdesc;3.按照指定字段和规则排序selec
NVIDIA安培架构下MIG技术分析
关键词:NVIDIA、MIG、安培一什么是MIG2020年5月,NVIDIA发布了最新的GPU架构:安培,以及基于安培架构的最新的GPU:A100。安培提供了许多新的特性,MIG是其中一项非常重要的新特性。MIG的全名是MultiInstanceGPU。NVIDIA安培架构中的MIG模式可以在A100GPU上并行运行七个作业。多实
helloworld_28799839 helloworld_28799839
4个月前
常用知识整理
Javascript判断对象是否为空jsObject.keys(myObject).length0经常使用的三元运算我们经常遇到处理表格列状态字段如status的时候可以用到vue
helloworld_34035044 helloworld_34035044
6个月前
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为