你不得不了解的HTML知识

块级元素和行内元素

默认情况下块级元素会始终占居一行,而行内元素并不会。除了 table 元素的 display 属性比较特殊以外,基本上所有的 html 元素的 display 的属性值要么是 block,要么是 inline。无论你想了解哪个 html 元素,第一个要问的问题就是:它是块级元素还是行内元素,然后在编写标记的时候预想到这个元素在初始状态下是如何定位的,这样才能进一步想好将来怎么用 css 重新定位它,因为块级元素和行内元素在定位上有很大的区别,后面会详细说明。

块级元素盒子(一个很重要的概念————盒模型)会扩展到与父元素同宽,这也是为什么块级元素会占居一行的原因了,因为所有块级元素的父元素都是 body,而它的默认宽度就是浏览器的视口大小,所以默认情况下块级元素的宽度也和浏览器的视口一样宽,这样以来,一个块级元素旁边也就没有空间来容纳另一个块级元素了。

相比于块级元素会扩展到与父元素同宽,然而行内元素的行为却是恰恰相反,它会尽量的收缩包裹其内容,这也就是为什么几个行内元素会并排显示在一行直到它们排满一行才会另起一行,而每个块级元素会直接另起一行的原因了。

下表列出了一些常见的块级元素和行内元素:

你不得不了解的HTML知识

立即学习“前端免费学习笔记(深入)”;

之前提到过无论你想了解哪个 HTML 元素,第一个要问的问题就是:它是块级元素还是行内元素,因为它们在盒模型上的表现有很大的不同,不过在了解它们的不同之前我们还得先知道另外一个概念————替换元素和非替换元素,其中替换元素就是指浏览器是根据元素的属性来判断具体要显示的内容的元素,比如 img 标签,浏览器是根据其 src 的属性值来读取这个元素所包含的内容的,常见的替换元素还有 input 、textarea、 select、 object、 iframe 和 video 等等,这些元素都有一个共同的特点,就是浏览器并不直接显示其内容,而是通过其某个属性的值来显示具体的内容,比如浏览器会根据 input 中的 type 的属性值来判断到底应该显示单选按钮还是多选按钮亦或是文本输入框。而对于非替换元素,比如 p、label 元素等等,浏览器这是直接显示元素所包含的内容。看到这里你应该大概的知道了什么是替换元素和非替换元素了。

对着两个概念有了大概的了解后就可以对 block 和 inline 在盒模型上的表现差异进行了解了,首先是 margin ,W3C 对其所支持了元素对象是这么定义的:

Applies to: all elements except elements with table display types other than table-caption, table and inline-table

我的理解就是所有元素都支持 margin 除了 display 属性值为 table-caption 和 table-inline以外的所有表格显示类型比如table-row-group、 table-cell、 table-row 和 table-header-group等等,但是为了验证我的理解,我发现 display 属性值为 table 的元素也支持,可能是我对原文标准的理解有误。但还有一个要特别注意的是 margin-top 和 margin-bottom 两个属性比较特殊,它们对非替换行内元素没有效果,下面是 W3C 上对于 margin-top 和margin-bottom支持对象的介绍:

Applies to: all elements except elements with table display types other than table-caption, table and inline-table
These properties have no effect on non-replaced inline elements.

前面一句和之前对 margin 的描述是一样的,这毫无疑问,下面这句话的意思是这些( margin-top 和 margin-bottom )属性对非替换行内元素没有效果比如 a 和span,注意这里是非替换行内元素而不单单是非替换元素或者是行内元素。比如 img 就是一个行内元素, margin-top 和 margin-bottom 对它是有效果的,因为它是一个替换元素而不是非替换元素,所以对于「 margin-top 和 margin-bottom 对行内元素没有效果」这种说法是不对的。

而对于 padding 的支持对象,W3C 是这么描述的:

all elements except table-row-group, table-header-group, table-footer-group, table-row, table-column-group and table-column

上面这句话的意思是除了表格显示类型为 table-row-group、 table-header-group、 table-footer-group、 table-row,table-column-group 和 table-column 的元素不支持,其他所有的元素都支持。

但这里有些特殊情况需要注意的是,对行内元素比如 span 和 img 设置左右内边距的效果是可见可,但是对行内元素设置上下内边距在有些情况下是不可见的,这些情况又要分为是否为替换元素和是否设置了背景色,为了能更直观的了解这些概念,我在这里做了个表格:

你不得不了解的HTML知识

所以对于「 padding-top 和 padding-bottom 对行内元素没有效果」这种说法也是不对的,因为它们只是对于没有设置背景色的行内非替换元素效果不可见而已,而对于行内替换元素来说,不管是否设置了背景色都是有效果了,并且会把父元素撑开。

说了这么多 block 和 inline 的区别,其实除了这两个常见的 display 属性以外还有一个属性也是非常常见的,那就是 inline-block ,没错,这就是前面两种情况的结合体,它既有 block 的特性又有 inline 的特性,比如把一个 display 属性值为 block 或者 inline 的元素属性值设置成 inline-block 后,既可以用只对行内元素有效的 text-align: center; 声明对其进行居中以外,还可以用 padding-top 和 padding-bottom 对元素设置上下内边距而无需对其设置背景色,并且能把父元素撑开。

更多你不得不了解的HTML知识相关文章请关注PHP中文网!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2836850.html

(0)
上一篇 2025年3月9日 06:20:36
下一篇 2025年3月5日 23:00:25

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 【HTML基础】<acronym>和<abbr>的区别

     缩写标签 的区别 大家都知道html定义缩写有 两种标签,但是经常分不清楚他们。这两个标签虽然都是定义缩写,但是这个两个的缩写含义是有区别的。可这并不妨碍我们使用,因为这两个标签的效果是差不多的,而且也没多少人管。不信,你看: arcon…

    2025年3月9日
    200
  • HTML页面中复选框的操作方法

    复选框在网页中很是常见,无论是电商网站,还是平台,只有有需要选择的地方就会见到复选的身影。接下来,是我之前写过的两个小demo,都是关于复选框的,希望会给大家带来帮助。 第一个是关于复选框全选反选的操作,当然我在里面还加了一个小功能,就是当…

    编程技术 2025年3月9日
    200
  • HTML table 直列化格式详解

    下面小编就为大家带来一篇html table 直列化格式详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 直列化格式 … 属性名称                                …

    编程技术 2025年3月9日
    200
  • HTML 文本格式化的简单实例

    下面小编就为大家带来一篇html 文本格式化的简单实例(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 一,文本格式化:此例演示如何在一个 HTML 文件中对文本进行格式化。 XML/HTML Code…

    2025年3月9日 编程技术
    200
  • 浅谈HTML中的标记

    下面小编就为大家带来一篇浅谈html中的标记。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 0.什么是标记 XML/HTML Code复制内容到剪贴板 提示 登录后复制 这里的checked、id、href、…

    编程技术 2025年3月9日
    200
  • HTML条件注释

    前面的话   ie条件注释是微软从ie5开始就提供的一种非标准逻辑语句,作用是可以灵活的为不同ie版本浏览器导入不同html元素。很显然这种方法的最大好处就在于属于微软官方给出的兼容解决办法而且还能通过w3c的效验   识别IE   因为从…

    编程技术 2025年3月9日
    200
  • HTML的空格写法

    多个空格nbsp;html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>OA系统用户数据数据检索 数据录…

    编程技术 2025年3月9日
    200
  • HTML学习笔记

    html 指的是超文本标记语言 (hyper text markup language) xhtml 是更严谨更纯净的 html 版本。xhtml 指可扩展超文本标签语言(extensible hypertext markup langua…

    编程技术 2025年3月9日
    200
  • 前端编码习惯 —— html篇

    前言 作为一个前端工程师,我们可能每天都要写html、css、javascript,每个人写出来的代码都饱含着自己的个人的style也有自己的编码习惯和准则,下面和大家分享一下我的习惯和准则。 html 首先我们要对文档进行规范,就要添加来…

    编程技术 2025年3月9日
    200
  • HTML的meta标签常见用法集锦

    写在web的head头部中的mata标签看似不起眼,实则可以设置非常多种的功能,包括页面编码等重要设定,这里我们便来总结html的meta标签常见用法集锦: 什么是mata标签 元素可提供有关页面的元信息(meta-information)…

    编程技术 2025年3月9日
    200

发表回复

登录后才能评论