HTML标签优先级

HTML(HyperText Markup Language)标签的位置对于页面的结构、性能以及可维护性至关重要。合理安排标签的位置不仅有助于提高网页的加载速度,还能使得代码更加清晰易懂。以下是一些关于HTML标签放置的基本规则和建议:

1. 文档类型声明(DOCTYPE)

文档类型声明总是位于HTML文档的第一行,它告诉浏览器使用哪种HTML标准来解析页面。例如:

<!DOCTYPE html>

2. <html> 标签

<html> 标签是所有HTML文档的根元素,所有的内容都应该在这个标签内进行定义。

3. <head> 标签

<head> 包含了页面的元信息,如标题、样式表、脚本文件链接等,这些内容通常对用户来说是非可见的。 <head> 内容可以包括:

  • <title>:文档的标题。
  • <meta>:提供元数据,例如字符集设置、视口设置等。
  • <link>:引入外部CSS文件。
  • <script>:可以用来引入外部JavaScript文件,但通常建议将脚本放在文档的底部。

4. <body> 标签

<body> 是文档中所有可见内容的容器,包括文本、图像、表格、列表等。

脚本的位置
  • 文档顶部:将 <script> 标签放在 <head> 中可能导致浏览器在下载并执行脚本之前暂停渲染页面。这会增加首屏渲染的时间。
  • 文档底部:为了提高用户体验,推荐将 <script> 标签放在 <body> 的末尾,即在 </body> 之前。这样可以确保页面的主要内容先加载出来,然后再加载脚本。

5. <script> 标签的最佳实践

  • 异步加载:使用 async 或者 defer 属性可以让脚本异步加载,从而避免阻塞页面渲染。
    • async:脚本会被立即执行,且可能在其他脚本之前或之后执行。
    • defer:脚本会在DOM加载完成后按顺序执行。

示例代码

以下是一个典型的HTML文档结构示例:

<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>示例页面</title><link rel="stylesheet" href="styles.css">
</head>
<body><header><h1>欢迎来到我的网站</h1></header><main><p>这里是页面的主要内容。</p></main><footer><p>版权所有 © 2024</p></footer><!-- 文档底部加载脚本 --><script src="scripts.js"></script>
</body>
</html>

通过合理安排HTML标签的位置,可以有效地提升页面的性能表现,并使代码更易于理解和维护。同时,遵循良好的编码习惯也有助于团队合作开发项目时保持一致性。

错误的示例

如果HTML标签组织不合理,浏览器无法正常解析HTML文件,如下是一个使用highcharts来绘制柱状图的一个页面:

<html>
<body>
<h1>123123123</h1>
<div id="container" style="width:100%; height:400px;"></div><script src="https://code.highcharts.com/highcharts.js"></script>document.addEventListener('DOMContentLoaded', function () {const chart = Highcharts.chart('container', {chart: {type: 'bar'},title: {text: 'Fruit Consumption'},xAxis: {categories: ['Apples', 'Bananas', 'Oranges']},yAxis: {title: {text: 'Fruit eaten'}},series: [{name: 'Jane',data: [1, 0, 4]}, {name: 'John',data: [5, 7, 3]}]});});</body></html>

很多初学者容易犯的问题,打开文件看一下:
在这里插入图片描述

浏览器没有展示图表,显然不符合我们的预期,我们按照标签优先级调整一下HTML代码:

<!DOCTYPE html>
<html>
<head><script src="https://code.highcharts.com/highcharts.js"></script>
</head>
<body>
<h1>123123123</h1>
<div id="container" style="width:100%; height:400px;"></div><script>document.addEventListener('DOMContentLoaded', function () {Highcharts.chart('container', {chart: {type: 'bar'},title: {text: 'Fruit Consumption'},xAxis: {categories: ['Apples', 'Bananas', 'Oranges']},yAxis: {title: {text: 'Fruit eaten'}},series: [{name: 'Jane',data: [1, 0, 4]}, {name: 'John',data: [5, 7, 3]}]});});
</script></body>
</html>

再用浏览器打开文件看看:
在这里插入图片描述
图片渲染正常了,所以一定要正确的使用标签,才能正确的显示内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1535014.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【查看谷歌浏览器的个人文件路径】

查看谷歌浏览器的个人文件路径 chrome://version/

第307题|快速掌握 反常积分敛散性判定的方法|武忠祥老师每日一题

解题思路&#xff1a;先判断这个反常积分的敛散性&#xff0c;再讨论a的取值范围; 判断反常积分的敛散性&#xff0c;我们通常有三个方法&#xff1a; &#xff08;1&#xff09;根据定义&#xff0c;通常在原函数比较好求的情况下&#xff0c;可以根据定义 &#xff08;2&am…

Windows上指定盘符-安装WSL虚拟机(机械硬盘)

参考来自于教程1&#xff1a;史上最全的WSL安装教程 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/386590591#%E4%B8%80%E3%80%81%E5%AE%89%E8%A3%85WSL2.0 教程2&#xff1a;Windows 10: 将 WSL Linux 实例安装到 D 盘&#xff0c;做成移动硬盘绿色版也不在话下 - 知乎 (z…

React源码学习(一):如何学习React源码

本系列源码学习&#xff0c;是基于 v16.13.1&#xff0c;v17.x与v16.x区别并不太大&#xff01; 一、如何正确的学习React源码&#xff1f; 找到Github&#xff0c;转到React仓库&#xff0c;fork / clone源码&#xff1a;React 查看Readme&#xff0c;在Documentation中有Cont…

昇思MindSpore AI框架MindFormers实践3:ChatGLM3-6B对一段文字进行提取

MindSpore和MindFormers安装参见&#xff1a;昇思AI框架实践1:安装MindSpoe和MindFormers_miniconda 安装mindspore-CSDN博客 使用了MindSpore2.2和MindFormers1.0 支持的模型&#xff1a; KeyError: "model must be in odict_keys([gpt2, gpt2_lora, gpt2_xl, gpt2_xl…

2024.9.14 Python与图像处理新国大EE5731课程大作业,马尔可夫随机场和二值图割,校正立体图像的深度

1.马尔科夫随机场和二值图割 马尔可夫随机场&#xff08;MRF, Markov Random Field&#xff09;&#xff1a; MRF 是一种用来描述图像像素之间空间关系的概率模型。它假设图像中的像素不仅取决于自身的值&#xff0c;还与周围像素有关。这种模型经常用于图像分割、去噪等任务。…

51单片机 - DS18B20实验1-读取温度

上来一张图&#xff0c;明确思路&#xff0c;程序整体裤架如下&#xff0c;通过单总线&#xff0c;单独封装一个.c文件用于单总线的操作&#xff0c;其实&#xff0c;我们可以把点c文件看成一个类操作&#xff0c;其属性就是我们面向对象的函数&#xff0c;也叫方法&#xff0c…

iPhone 16预售已开,沙漠金色最抢手,喜提新机后别忘了这件事!

9月13日20点&#xff0c;iPhone 16系列正式开启官方预购。今年全新的iphone16不仅新增相机按钮和AI功能&#xff0c;还增加了沙漠金配色。“加量不加价”的iPhone 16系列开售依旧火爆&#xff0c;iPhone 16系列开售1分钟内&#xff0c;苹果官方网站一度被消费者买到崩&#xff…

(Python+selenium)UI自动化测试

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 前言 我们在进行UI自动化测试时&#xff0c;一般采用javaselenium或者pythonselenium的方式。由于python比较简单&#xff0c;上手快&#xff0c;因此建议大家采…

【第34章】Spring Cloud之SkyWalking分布式日志

文章目录 前言一、准备1. 引入依赖 二、日志配置1. 打印追踪ID2. gRPC 导出 三、完整日志配置四、日志展示1. 前端2. 后端 总结 前言 前面已经完成了请求的链路追踪&#xff0c;这里我们通过SkyWalking来处理分布式日志&#xff1b; 场景描述&#xff1a;我们有三个服务消费者…

Vue安装及环境配置【图解版】

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 Facts speak louder than words&#xff01; 目录 一.node.js的安装…

2024/9/14 408大题专项训练之存储系统

组相联映射怎么算组号&#xff1f; 有cache总大小/路数xcache大小 物理地址与虚拟地址位数不一定相等&#xff0c;但是她们页内地址和块内地址位数是一样的&#xff01;

基于自己的数据库构建基于LLM的专属知识库

简介&#xff1a; 基于自己的数据库构建基于LLM的专属知识库 要基于自己的数据库构建基于LLM的专属知识库&#xff0c;你需要遵循以下步骤&#xff1a; 确定目标&#xff1a;首先&#xff0c;你需要明确你的知识库的目标。这可能是用于回答特定领域的问题、提供个性化的建议或…

微信这些危险设置一定要关!

你有仔细研究你的微信吗&#xff1f; 用了这么久的微信&#xff0c;才知道 有这么几个设置需要及时关闭&#xff01; 逐个操作更安心1️⃣取消不常用的免密支付和自动续费 我>服务>钱包>底部 支付设置>免密支付/自动续费2️⃣取消对附近陌生人授权位置 2️⃣取消对…

大数据新视界 --大数据大厂之Kafka消息队列实战:实现高吞吐量数据传输

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

成功晋级 | 3本ELSEVIER期刊正式被ESCI收录,最快的录用后2天即可出版

爱思唯尔&#xff08;ELSEVIER&#xff09;作为一家国际顶尖出版集团&#xff0c;自1880年创办以来&#xff0c;旗下出版期刊有2800多种&#xff0c;其中包含《柳叶刀》《细胞》等TOP期刊&#xff0c;在学术科研界享誉盛名。 根据八月份公布的最新SCI目录显示&#xff0c;ELSE…

UART 16550的使用

前言 本文从操作系统使用 16550 的角度来学习 16550。主要解析通用的串口寄存器的作用。 16550 串口由一系列寄存器控制串口行为。不同的具体设备寄存器的偏移不同&#xff0c;寄存器的长度可能不同。 例如&#xff0c;在 AXI UART 16550中&#xff0c;各寄存器长度都为 32 b…

每天五分钟玩转深度学习PyTorch:模型参数优化器torch.optim

本文重点 在机器学习或者深度学习中,我们需要通过修改参数使得损失函数最小化(或最大化),优化算法就是一种调整模型参数更新的策略。在pytorch中定义了优化器optim,我们可以使用它调用封装好的优化算法,然后传递给它神经网络模型参数,就可以对模型进行优化。本文是学习第…

D - 1D Country(AtCoder Beginner Contest 371)

题目链接: D - 1D Country (atcoder.jp) 题目描述: 数据范围: 输入输出: 题目分析: 典型的l, r 区间问题&#xff0c;即是前缀和问题&#xff0c;但是注意到数据范围, 数据范围1e-9 到 1e9 数据范围&#xff0c;要是从最小到最大直接for循环去模拟的话&#xff0c;时间复杂度…

opencv中读取图片、视频以及对其基本操作

一、清华TUNA提供的Anaconda仓库镜像 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --set show_channel_urls yes 二、图…