HTML 元素标签语义化及使用场景

更新日期: 2020-03-04阅读: 2.1k标签: 场景

灵魂三问:

标签语义化是什么?
为什么要标签语义化?
标签语义化使用场景有哪些?

下面让我们跟着这三个问题来展开一下本文的内容。


一、标签语义化是什么?

标签语义化就是让元素标签做适当的事情。例如 p 标签就是代表文本,button 标签代表按钮,nav 标签代表导航等等。


二、为什么要标签语义化?

其实标签语义化是给浏览器和搜索引擎看的。没有人关心你写的 html 代码有没有正确的使用语义化,只有它们关心这件事情,是不是很暖心?

为什么浏览器关心?

dom 的大部分内容具有隐式语义含义。 也就是说,DOM 采用的原生 HTML 元素能够被浏览器识别,并且可以预测其在各类平台上的工作方式。

例如用 div 实现的按钮和用原生 button 实现的按钮就有一些区别,在表单内 button 可以不用绑定 onclick 事件就可以提交表单内容,用 div 实现的按钮则不行。另外在浏览器中按 tab 键盘可以在 button 之间来回切换,而 div 则不可以。

还有 input 标签 type 属性,由于值的不同在手机上的表现也不同。例如 type="tel" 和 type="number" 弹出来的数字键盘是不一样的。

为什么搜索引擎关心?

搜索引擎的爬虫根据标签来确定上下文、关键字的权重,有利于 seo

如果你觉得以上两点理由都不能打动你,从而正确的使用语义化,没有关系,使用 div 一把梭也是可以的。


三、标签语义化使用场景有哪些?


上面是一个比较常见的整体布局方式,其他布局类型其实都是万变不离其宗,逃不出这个使用框架(文末附上 HTML 源码)。

除了整体布局外,我们还要更细节一点,关注其他标签的使用方式。例如:

a 标签用于跳转。
h1 - h5 用于标题
b strong 用于强调
ul li 用于列表
...

这只是其中的一部分标签使用方式,更多的还得参考文档。

方便自己,方便他人,请正确使用语义化。


文中 DEMO 源码

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>demo1</title>
    <style>
        html, body {
            height: 100%;
        }
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        main {
            height: calc(100% - 120px);
            border: 1px solid blue;
        }
        header, footer {
            height: 60px;;
            display: flex;
            align-items: center;
            justify-content: center;
            border: 1px solid red;
        }
        header {
            justify-content: flex-end;
        }
        ul {
            display: flex;
            align-items: center;
            justify-content: space-around;
        }
        li {
            list-style: none;
            border: 1px solid orange;
            height: 60px;
            line-height: 60px;
            width: 100px;
            text-align: center;
        }
        main {
            display: flex;
            align-items: center;
            justify-content: center;
        }
        aside {
            width: 20%;
            border: 1px solid #000;
            height: 100%;
        }
        .right {
            width: 80%;
            height: 100%;
        }
        section {
            height: 200px;
            border: 1px solid green;
        }
    </style>
</head>
<body>
    <header>
        <nav>
            <ul>
                <li>1</li>
                <li>2</li>
                <li>3</li>
                <li>4</li>
            </ul>
        </nav>
    </header>
    <main>
        <aside>
            <p>这是一个侧边栏 aside</p>
        </aside>
        <div class="right">
            <section>
                <p>p1</p>
                <p>p2</p>
            </section>
            <section>
                <p>p3</p>
                <p>p4</p>
            </section>
        </div>
    </main>
    <footer>

    </footer>
</body>
</html>

更多文章,敬请关注


链接: https://fly63.com/article/detial/8485

async/await 异步应用的常用场景

async/await 语法用看起来像写同步代码的方式来优雅地处理异步操作,但是我们也要明白一点,异步操作本来带有复杂性,像写同步代码的方式并不能降低本质上的复杂性,所以在处理上我们要更加谨慎, 稍有不慎就可能写出不是预期执行的代码,从而影响执行效率

vue中$refs, $emit, $on, $once, $off的使用

$refs的使用场景:父组件调用子组件的方法,可以传递数据。$emit的使用:子组件调用父组件的方法并传递数据。$on的使用场景:兄弟组件之间相互传递数据

php中-> 、=>、::、$this->使用方法与场景

->用来引用一个类的属性(变量)、方法(函数);=>是用来定义数组用的;::用来直接调用类中的属性或方法,没有实例化;$this->表示实例化后调用具体对象

react之Fragments使用方法及使用场景

React 中的一个常见模式是一个组件返回多个元素。Fragments 允许你将子列表分组,而无需向 DOM 添加额外节点。还有一种新的短语法可用于声明它们。

html5不常用标签应用场景

作为一个前端开发,在浏览别人家的页面时总是会习惯性的查看他们页面的源码,发现大多数网站的页面,包括我自己写的页面中用到的最多的布局元素无外乎就是div、p、span、ul、dl、ol、li、dt、dd、strong、b

Js中的this原理及6种常见使用场景

this是JavaScript的一个关键字,函数调用时才会出现;因为函数是在一定的环境中运行的,调用函数时肯定需要知道是[谁调用的]?就用到了this进行指向;this 既不指向函数自身,也不指函数的词法作用域,而是调用函数时的对象!

JS中try-catch代码块的应用场景

try-catch属于同步代码块,因此无法捕获异步(重新开辟的线程,例如定时器,异步请求)代码中的异常,即能被try-catch捕获的异常,必须是在报错时候,线程的执行进入了try-catch代码块时,才能被捕获异常

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!