html主要语义化标签(一)

本文详细介绍了HTML中包括a标签、列表、引用、代码展示、地址和时间、图像、视频音频、外部资源嵌入、SVG矢量图及响应式图片在内的主要语义化标签的用法和应用场景,帮助理解如何优化网页内容的结构和可访问性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、a标签:

1、基本格式:<a href=" ">xxx</a>;属性:title(提示信息),target(打开方式)(同<base target="_blank" />);download(链接代表的是下载地址);media(链接是为某个媒体设备设置优化的);

2、邮箱和电话:<a href="mailto:sunliu001@16.com ">yyy</a>;  <a href="tel:40012345656 ">ttt</a>

3、到页面中的某个位置;<a href="#name">顶部/尾部</a>;

4、四大伪类:a:link(初始,未被点击时);a:visited(链接被点击后);a:hover(鼠标移动到链接时候;此伪类也使用于其他标签,比如img的伪类,变亮;tiansition--transform scale等等)a:active(正在点击时候);

二、列表:

1、ul无序列表;ol有序列表;dl(dt/dd)描述(定义)列表(一组项目及其相关描述;如术语和定义、问题和答案);

三、引用:

1、<q>xxx</q>;行内引用;比如一个段落(<p>)中的一句话;

2、<blockquote><p>llll</p></blockquote>;块状引用,引用的内容是一个(或几个)段落,一个列表等;块状元素,自成一段;当只引用一段内容的时候,中间可以不带<p>标签;

3、cite:有两个用法;(1)作为引用标签中(q/blockquote)的属性,指明指明来源的url(此时浏览器窗口不会显示);(2)自己作为一个独立的标签,说明引用来源的名称(书名、人名);

四、计算机代码展示

1、code:标记计算机代码;一行的时候可直接使用;如果是多行代码,由于存在大量空白和缩进,需要和pre配合;

2、pre:由于浏览器不能识别大量的空白换行等,此时则粗腰pre原样显示; <pre><code>大量代码</code></pre>;

3、kbd:标记(用户通过)键盘(或其他设备)输入元素;将产生一个行内元素;

<p>按 <kbd>Ctrl</kbd>/<kbd>Cmd</kbd> + <kbd>A</kbd> 选择全部内容。</p>

4、samp:标记计算机程序的输出;

5、var:标记表示变量的名称;

五、地址和时间:

1、address:标记文档或者文章作者的联系信息。浏览器默认呈现的字体倾斜,如果不想使用此默认字体,可在css中需改。一般此标签里可以直接写本文,不用再用<p>标签包围,可以用<br/>换行;

         注意两点(1)当一个地址和此(作者)无关的时候,应该用<p>,而不是<address>; (2)此元素中,不能包含和联系信息无关的任何信息;比如出版时间。应该用<time>标记;

2、time:标记时间;该元素标签不会在浏览器呈现任何效果; 属性:datetime表示此元素的日期和时间;

<p>我在 <time datetime="2008-02-14">情人节</time>有个约会。</p>

六、图像

1、img:此标签不仅是一个空标签(不需要包含文本内容,不需要闭合标签);还是和<video>一样是个替换标签(因为元素的内容和尺寸均有外部资源提供 ,而不是元素本身);

在img标签属性中,最好设置width和height属性(有利于加载流畅);但是这里应根据img设置的宽和高,再选择并剪切成一样大小的图片(这样不会使图片过于拉伸或者加载过大的图片,浪费流量);

2、figure:此元素的内容可以是一张图片、视频、代码等;主要作用是用来进一步丰富、修饰主题内容的(比如文章中插入一张图片);其内容和主题相关,但如果删除,则不会影响主体内容。(将图片独立于P之外,为图片提供语义)

此元素一般与figcaption元素一起配合使用;

3、figcaption:用于描述figute元素中的数据(图片、视频、代码等)的说明/标题;所以说,figcaption一般都是放在figure元素中的第一个或者最后一个元素中;(与img中的alt属性不同的是,alt属性是在图片未能加载显示的时候出现展示,而figcaption则不管数据内容是否加载展示,都会显示)

七、视频和音频

1、vidoe视频:

	 <video controls width="320" height="223" muted loop  preload="auto" poster="./images/0000.jpg"  >
		<source src="./video/0000.mp4" type="video/mp4">
		   <!--这个是因为浏览器只支持识别部分视频的格式,所以为了各个浏览器都能兼容、播放显示,放置多个不同格式的视频-->
		<source src="./video/0000.webm" type="video/webm">
		   <!--这个添加type类型的属性,是为了方便浏览器进行检查,一旦检查到它支持的格式,则直接跳过后面的格式文件,否则还要逐个加载视频文件(检查),浪费时间-->
		<p>你的浏览器不支持 HTML5 视频。可点击<a href="rabbit320.mp4">此链接</a>观看</p>
		  <!--这个p标签称为后背内容,当浏览器不支持video的时候,他会显示出来-->
	 </video>
	 <!--- <video>标签中的6大属性:
	      1、width和height:定义了页面中视频展示播放窗口的大小(当然css也可以控制视频尺寸);
		2、controls:控制器;浏览器提供的控制接口;包括不限于:开始、暂停、调节音量、拉快等等;
		3、autopaly:页面在加载的过程中自动播放(甚至页面中其他版块内容还未加载完都已开始播放);体验不好,,建议不用此属性;
		4、muted:添加这个属性的时候,当视频在播放的时候,默认的是静音(声音未开启);
		5、loop:添加这个属性后,会进行循环播放视频;
		6、preload:预加载;此属性可有3个值选择; (如果使用了autoplay属性后,则忽略该属性)
		         .none:告诉浏览器,该视频在页面加载后,不需要预先加载视频;
			   .matadate:告诉浏览器,该视频在页面加载后,后台只需要预先加载(缓存)视频的元数据;
			   .auto:告诉浏览器,在页面加载中,预先缓存加载视频文件,准备播放;
		7、poster:这个属性指向一个(url)图片,是在点击播放按钮前、视频下载时显示的图片(同preload一样,如果使用了autoplay,就看不到poater呈现的图片效果了)
	 ---->

2、audio音频:

	 <audio controls muted loop preload="auto">
	    <source src="./audio/viper.mp3" type="audio/mp3">
		<source src="./audio/viper.ogg" type="audio/ogg">
		<p>目前你的浏览器不支持audio标签</p>
	 </audio>
	 <!---audio标签的一些说明(大致和video一样)
	    1、由于audio标签只需要显示控制音频的控件就可以了,没有视觉部件,所以也需要再设置width和height属性了;
		   (谷歌浏览器默认的 音频控件大小为300*54px;并且作为内联元素进行展示);
		2、和video相比;由于没有视觉部件,不需要width和height属性了,也就不再需要poster属性设置了;
	 -->

3、track显示音频轨迹文本;作用是使播放的视频带上字幕,方便听不懂视频中的语言或者想静音(周边环境比较糟乱)的人士体验;

字幕文件一般有两种格式;

  •  WebVTT : Web Video Text Track  (Web视频文本轨道----后缀名是vvt)
  •  TTML : Timed Text Markup Language (时序文本标记语言----用xml格式编写的文件)
	 <video id="mainvideo" src="video.mp4" type="video/mp4" controls autoplay loop>;  
           <track src="en_track.vtt" srclang="en" label="English" kind="caption" default>  
           <track src="cn_track.vtt" srclang="zh-cn" label="简体中文" kind="caption">  
      </video> 

上述标签含义:在播放“video.MP4”文件的时候,加入上字幕;

  • 一个是中文字幕,一个是英文字幕(srclang属性指的是编写字幕文件所选择的语言------主要是给浏览器看,播放器不使用这个属性);
  • 用户可以选择两种字幕(label属性:用户可以用来切换选择中文还是英文字幕,也可以有程序脚本切换------label在播放器中会使用这个属性的,主要供用户进行选择、切换);每个字幕元素(track)必需设置一个唯一不重复的label标签;
  • 此字幕默认的是英文字幕(default属性决定);一个视频文件(几个track)中,只能有一个default;如果都没有指定,则不会自动显示字幕;

其中kind属性是定义字幕内容的类型的;用户可以根据不同的需求,来显示不同的字幕内容;主要有以下几种:

  • subtitles:主要作用翻译来用,比如视频里面是说的是英文,听不懂英文,可以选择subtitles作为字幕翻译成熟悉的语言;
  • captions:主要作用是理解展示说明视频中的内容;比如不想开启音频、在吵闹环境中,或者听觉有障碍的人士;
  • descriptions:通过音频描述视频的内容;比如在视频不可见的场景,或者视觉有障碍的人士;
  • chapters:定义章节(标题);用于用户浏览媒体资源的时候;(导航媒介资源)
  • metadate:定义脚本使用的内容(track),对用户不可见;

此外:需要注意以下几点:

  1. 当kind的属性是subtitles(翻译)的时候,则必须指定srclang;
  2. 默认的时候,kind的属性是subtitles;
  3. 一个media 元素的任意两个 track 子元素不能有相同的 (kind, srclang) 和 label属性;

八、外部资源、文件嵌入到网站中:

      比如我们没有实力构造一个地图,可以把现成的诸如百度地图嵌入到页面中;我们也可以自己的视频资源,可以把优酷视频嵌入到自己的网站页面中;

1、iframe:

	 <iframe src="http://open.iqiyi.com/developer/player_js/coopPlayerIndex.html?vid=235d82cec8b9605c9b428ae67943648c&tvId=2128764600&accessToken=2.f22860a2479ad60d8da7697274de9346&appKey=3955c3425820435e86d0f4cdfe56f5e7&appId=1368&height=100%&width=100%" frameborder="0" allowfullscreen="true" width="100%" height="100%" >
	      <!----将爱奇艺视频嵌入到页面中---->
	   <p> <a href="#">Fallback link for browsers that don't support iframes</a></p>
	        <!---此处也是"备选内容";当浏览器不支持iframe的时候,他会显示出来---->
	  </iframe>

主要有以下几个属性:

  • width和height:指定iframe的宽和高;
  • frameborder:默认是1,显示此iframe框架和其他框架间绘制边框;如果设置0,则删除框架周围边框(推荐用css设置;border:none)
  • allowfullscreen:如果设置,<iframe>则可以通过全屏API设置为全屏模式;

同时:iframe嵌入也存在不少安全问题:

  • 如果,自己的网站内容,被iframe嵌入到了其他网页,则会占用消耗自己网站大量的带宽;
  • 如果,黑客将隐藏的iframe嵌入到您的文档中,并使用它来捕获用户的交互。这是误导用户或窃取敏感数据的常见方式。

提高安全性,可以从以下几方面入手:

  • 始终在iframe中使用sandbox属性,即:启用一系列对 <iframe> 中内容的额外限制;
  • 使用https;
  • 配置CSP指令

2、embed和object元素; 目前用的很少已经;

     定义嵌入的内容,如flash插件、pdf、外部应用等等;

下面是一个用object嵌入dpf文档的例子;

<object data="mypdf.pdf" type="application/pdf"width="800" height="1200" typemustmatch>
  <p>You don't have a PDF plugin, but you can <a href="myfile.pdf">download the PDF file. </a></p>
</object>

九、嵌入矢量适量图:svg;

       svg------用XML语言来描述二维图形或者绘图程序的语言;(svg,利于用xml绘制矢量图)

	<svg version="1.1"
     baseProfile="full"
     width="300" height="200"
     xmlns="http://www.w3.org/2000/svg">
	  <rect width="100%" height="100%" fill="black" />
	  <circle cx="150" cy="100" r="90" fill="blue" />
   </svg>
   <!----此代码为一个黑色的方块和一个绿色的圆--->

以下几种方式可以将svg矢量图,嵌入到网页中;

1、用img标签添加svg图片

<img 
    src="equilateral.svg" 
    alt="triangle with all three sides equal"
    height="87px"
    width="100px" />

        可能有的浏览器会不支持svg,这个时候,可以添加两个图片,一个是旧版浏览器支持的png/jpg格式的图片(用src属性);一个是svg图片(用srcset属性);如果浏览器支持svg格式的图片,则会直接加载svg格式的图片;

<img src="equilateral.png" alt="triangle with equal sides" srcset="equilateral.svg">

2、直接将<svg>标签放到html中(svg图片本身就是有xml格式的绘制成的,可以保持成.svg格式图片。也可以用xml代码表示)

<svg width="300" height="200">
    <rect width="100%" height="100%" fill="green" />
</svg>

3、用iframe将svg嵌入到页面中;

<iframe src="triangle.svg" width="500" height="500" sandbox>
    <img src="triangle.png" alt="Triangle with three unequal sides" />
</iframe>

十、响应式图片

主要解决的问题:

  1. 分辨率切换:当用小屏设备浏览网页时候,没有必要在加载pc端的大图了,节省带宽;同样,在pc上加载移动端小屏幕的图像的时候,会出现拉伸,模糊、有颗粒感;()
  2. 艺术方向切换:更改图像以及适应不同的图像显示的尺寸;比如,在pc端我们看到一个大图,横向的、中间有个人;然后在移动端浏览这个网页时候,照片非常小,人物更小;这种情况,在移动端可以设置一个新的图片,使人物大小看起来合适;

分辨率切换(相同的图片内容---这里是内容;不是尺寸、不同的分辨率)

1、不同的尺寸,不同的分辨率;

 <img srcset="elva-fairy-320w.jpg 320w,
                 elva-fairy-480w.jpg 480w,
                 elva-fairy-800w.jpg 800w"
         sizes="(max-width: 320px) 280px,    //这里顺序很重要,因为浏览器查看到设备宽度后,检测到sizes列表的媒体第一个为真后,往下则不在执行 
                (max-width: 480px) 440px,
                800px"      //默认,也就是说设备宽度大于480的时候,选它
		 src="elva-fairy-800w.jpg" alt="Elva dressed as a fairy">   
		 <!--当浏览器不支持上面的时候,加载src-->

根据这些信息,浏览器执行过程如下:

  1. 查看设备宽度;
  2. 根据设备的宽度,检测sizes列表中媒体条件第一个为真的项;
  3. 查看给予该媒体查询的槽大小(媒体条件第一个为真的项中后面的像素大小)
  4. 加载srcset列表中引用的最接近所选的槽大小的图像;

2、相同的尺寸,不同的分辨率;

<img srcset="elva-fairy-320w.jpg,         //默认1x,可忽略;
             elva-fairy-480w.jpg 1.5x,
             elva-fairy-640w.jpg 2x"
     src="elva-fairy-640w.jpg" alt="Elva dressed as a fairy">
	 
	 <!---此时不再需要sizes;因为浏览器直接检测了设备显示器的分辨率;-->
	 <!--因此,如果访问页面的设备具有标准/低分辨率显示,一个设备像素表示一个CSS像素,elva-fairy-320w.jpg会被加载-->
	 <!-- 如果设备有高分辨率,两个或更多的设备像素表示一个CSS像素,elva-fairy-640w.jpg 会被加载。-->
	 
	 img {
      width: 320px;
    }

艺术方向切换:

<picture>
  <source media="(max-width: 799px)" srcset="elva-480w-close-portrait.jpg">
  <source media="(min-width: 800px)" srcset="elva-800w.jpg">
  <img src="elva-800w.jpg" alt="Chris standing up holding his daughter Elva">
</picture>

主要注意以下几点:

  • 这个也是检测的第一个媒体条件为真的时候,加载对应的图片;
  • source当中的也可以使用sizes属性,但是有了media时候,sizes属性中也就不要在提供媒体条件了;
  • 必须提供一个img元素,以备浏览器不支持的时候使用

为什么我们不能使用 CSS 或 JavaScript 来做到这一效果?

因为你不能先加载好 <img> 元素后, 再用 JavaScript 检测视图的宽度,如果觉得大小不合适,就动态地加载小的图片替换已经加载好的图片,这样的话, 原始的图像已经被加载了, 然后你也加载了小的图像, 这样的做法对于响应式图像的理念来说,是很糟糕的。

使用现代图像格式(如:WebP和JPEG-2000)

<picture>
  <source type="image/svg+xml" srcset="pyramid.svg">
  <source type="image/webp" srcset="pyramid.webp"> 
  <img src="pyramid.png" alt="regular pyramid built from four equilateral triangles">
</picture>

需要注意以下几点:

  • 使用type属性的类型,以便浏览器方便的检测到是否支持,如果支持,则直接跳过下面的检测,并加载;
  • media是用来解决艺术方向问题的(不同的设备,取不同图的内容);这个例子是浏览器根据支持的type(类型)加载图片;
  • 如果必要,也可以在srcset和sizes中使用逗号分割的列表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值