1、HTML语义化⑴、什么是语义化?首先标签语义化是指HTML,不是CSS, HTML是标签,CSS是属性标签语义化是让大家直观的通过标签(markup)和属性(attribute)来知道其用途和作用实例:看到img知道是图片,虽然通过div也能...
1、HTML语义化
⑴、什么是语义化?
- 首先标签语义化是指HTML,不是CSS, HTML是标签,CSS是属性
- 标签语义化是让大家直观的通过标签(markup)和属性(attribute)来知道其用途和作用
- 实例:看到img知道是图片,虽然通过div也能实现其功能, 但是缺乏可读性
⑵、语义化的好处
- 即使在没有CSS样式的条件下,也能很好地呈现出内容结构、代码结构
- 语义化HTML会使HTML结构变的清晰,有利于维护代码和添加样式
- 方便其他设备解析(如屏幕阅读器、盲人阅读器、移动设备)以意译的方式来渲染网页
- 提升搜索引擎优化(SEO)的效果。和搜索引擎建立良好沟通,有助于爬虫抓取更多的有效信息:爬虫依赖于标签来确定上下文和各个关键字的权重
- 便于团队开发和维护,语义化更具可读性
- 通常语义化HTML会使代码变的更少,使页面加载更快
⑶、主要语义化标签
①、a标签
// 基本格式
<a href=" ">xxx</a>
// 属性:title(提示信息)
// target(打开方式)(同<base target="_blank" />)
// download(链接代表的是下载地址)
// media(链接是为某个媒体设备设置优化的)
// 邮箱和电话
<a href="mailto:sunliu001@16.com ">yyy</a>
<a href="tel:40012345656 ">ttt</a>
// 到页面中的某个位置
<a href="#name">顶部/尾部</a>
// 四大伪类
// a:link(初始,未被点击时)
// a:visited(链接被点击后)
// a:hover(鼠标移动到链接时候;此伪类也使用于其他标签,比如img的伪类,变亮;tiansition--transform scale等等)
// a:active(正在点击时候);
②、列表
- ul无序列表
- ol有序列表
- dl(dt/dd)描述(定义)列表
- 一组项目及其相关描述;如术语和定义、问题和答案
③、引用
// 行内引用;比如一个段落(<p>)中的一句话
<q>xxx</q>
<blockquote><p>llll</p></blockquote>
// 块状引用,引用的内容是一个(或几个)段落,一个列表等
// 块状元素,自成一段
// 当只引用一段内容的时候,中间可以不带<p>标签
// cite:有两个用法
//(1)作为引用标签中(q/blockquote)的属性,指明指明来源的url(此时浏览器窗口不会显示)
//(2)自己作为一个独立的标签,说明引用来源的名称(书名、人名);
④、计算机代码展示
- code: 标记计算机代码;一行的时候可直接使用;如果是多行代码,由于存在大量空白和缩进,需要和pre配合
- pre:由于浏览器不能识别大量的空白换行等,此时则粗腰pre原样显示
<pre><code>大量代码</code></pre>
- kbd:标记(用户通过)键盘(或其他设备)输入元素;将产生一个行内元素
<p>按 <kbd>Ctrl</kbd>/<kbd>Cmd</kbd> + <kbd>A</kbd> 选择全部内容。</p>
- amp:标记计算机程序的输出
- var:标记表示变量的名称
⑤、地址和时间
- address:标记文档或者文章作者的联系信息。浏览器默认呈现的字体倾斜,如果不想使用此默认字体,可在css中需改。一般此标签里可以直接写本文,不用再用< p >标签包围,可以用< br />换行;
注意两点:
当一个地址和此(作者)无关的时候,应该用< p >,而不是< address >
此元素中,不能包含和联系信息无关的任何信息;比如出版时间。应该用< time >标记
- time:标记时间;该元素标签不会在浏览器呈现任何效果; 属性:datetime表示此元素的日期和时间;
<p>我在 <time datetime="2008-02-14">情人节</time>有个约会。</p>
⑥、图像
- img:此标签不仅是一个空标签(不需要包含文本内容,不需要闭合标签);还是和一样是个替换标签(因为元素的内容和尺寸均有外部标签提供 ,而不是元素本身—src提供);
在img标签属性中,最好设置width和height属性(有利于加载流畅);但是这里应根据img设置的宽和高,再选择并剪切成一样大小的图片(这样不会使图片过于拉伸或者加载过大的图片,浪费流量);
- figure:此元素的内容可以是一张图片、视频、代码等;主要作用是用来进一步丰富、修饰主题内容的(比如文章中插入一张图片);其内容和主题相关,但如果删除,则不会影响主体内容。(将图片独立于P之外,为图片提供语义) 此元素一般与figcaption元素一起配合使用
- figcaption:用于描述figute元素中的数据(图片、视频、代码等)的说明/标题;所以说,figcaption一般都是放在figure元素中的第一个或者最后一个元素中;(与img中的alt属性不同的是,alt属性是在图片未能加载显示的时候出现展示,而figcaption则不管数据内容是否加载展示,都会显示)
⑦、视频和音频
-
视频video
<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呈现的图片效果了) ---->
-
音频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属性设置了; -->
-
track显示音频轨迹文本;作用是使播放的视频带上字幕,方便听不懂视频中的语言或者想静音(周边环境比较糟乱)的人士体验
⑧、外部资源、文件嵌入到网站中
比如我们没有实力构造一个地图,可以把现成的诸如百度地图嵌入到页面中;我们也可以自己的视频资源,可以把优酷视频嵌入到自己的网站页面中
<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>
⑨、嵌入矢量适量图
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>
<!----此代码为一个黑色的方块和一个绿色的圆--->
-
用img标签添加svg图片
<img src="equilateral.svg" alt="triangle with all three sides equal" height="87px" width="100px" />
-
直接将< svg >标签放到html中(svg图片本身就是有xml格式的绘制成的,可以保持成.svg格式图片。也可以用xml代码表示)
<svg width="300" height="200"> <rect width="100%" height="100%" fill="green" /> </svg>
-
用iframe将svg嵌入到页面中
<iframe src="triangle.svg" width="500" height="500" sandbox> <img src="triangle.png" alt="Triangle with three unequal sides" /> </iframe>
⑩、布局
⑷、所以需要我们注意些什么?
- 尽可能少的使用无语义的标签div和span
- 在语义不明时,避免使用div,尽可能用p, p在默认情况下有上下间距,对兼容特殊终端有利
- 不要使用纯样式标签,如:b、font、u等,改用css设置
- 需要强调的文本,可以包含在strong或者em标签中(浏览器预设样式,能用CSS指定就不用他们),strong默认样式是加粗(不要用b),em是斜体(不用i)
2、HTML语义化
本文标题为:HTML面试题
基础教程推荐
- layer.open父页面传参到子页面 2022-10-05
- 上传头像后导航栏中头像同步(Vue中监听sessionStorage) 2023-10-08
- vue3.0实现移动端自适应 2023-10-08
- 深入了解最常用的JavaScript 事件 2023-08-08
- JavaScript实现可拖拽的进度条 2023-08-08
- 如何手写Ajax实现异步刷新 2023-02-14
- 在Ajax中使用get和post所遇到的问题及解决办法 2023-01-20
- ajax从JSP传递对象数组到后台的方法 2023-02-15
- 4个值得收藏的Javascript技巧 2022-08-31
- Vue中修改Mint UI的Toast默认样式之字体大小调整方式 2023-07-10