搜索
首页web前端html教程对行内元素与块级元素之间转换的详细教程

2015.1.5日,我去了北京一家互联网创业公司面试,我感受到了那里年轻人在一起拼搏的氛围,招聘栏上,说是希望要有几年web前端工作经验的,我凭着自己的这点小本事,不自量力的去啦。结果,面试官问了,我许多我接触过的问题,但是,不幸的是,我对那些知识点完全是只知道大概,对于这些知识点在实际中的应用,我却知之甚少。面试时,我都不好意思啦,总觉得耽误人家时间啦。

这个问题是当面试官问我盒子模型时,由于需要说上下左右边距,为了更能说明,我举例了行内元素与块级元素,但是,却又被人“行内元素与块级元素之可以通过哪些方式方法转换”问住啦,丢人啊!我只回答出来<a href="http://www.php.cn/wiki/927.html" target="_blank">display</a>,于是,我找了有关书籍,看了几个网站的源代码,再来总结一番。


  • 块级元素与行内元素

    • 块级元素会扩展到与元素同宽。

    • 行内元素会“收缩包裹” 其内容,并且会尽可能包紧。
      (以上这两个总结,来自于《css设计指南》这本书)

  • 其默认css样式

    • 块级元素其高度为其内容高度,宽度会扩展到与父元素同宽。所以导致块级元素会独占一行,无法在其后容纳其他块级元素与行内元素。

    • 行内元素其高度为其内容高度,宽度会收缩包裹其内容。奇怪的一点:行内元素之间有一定的距离,使用控制台看的时候,并没有把这段距离算作盒子模型。我使用<a href="http://www.php.cn/wiki/931.html" target="_blank">margin</a>:0;padding:0并不会清除这段距离,??求告知!

  • css修饰

    • 替换元素:替换元素就是浏览器根据元素的标签和属性,来决定元素的具体显示内容。如浏览器会根据<img>src属性的值来读取图片信息并显示出来,而如果查看(X)HTML代码,则看不到图片的实际内容;又如由<input>的type属性来决定是显示输入框,还是单选按钮等。引自这里

    • 非替换元素:如p a span p这些,即其内容直接表现给用户端(例如浏览器)。
      所以行内元素也就分为行内替换元素img input,与行内非替换元素span a…对于二者css修饰起来是有差别的。

    • 行内非替换元素:其宽高设置无效, 对于内外边距,边框,可以设置,但是垂直方向的设置并不会影响文档流布局,所以设置垂直内外边距是没有效果的,垂直边框,我们是看得见,但是垂直边框并不占据文档流 。所以上面的行内元素设置了宽度为10px的边框,并不会导致下面元素的向下移动。

    • 行内替换元素,除了具备行内元素同行并列的特点,他可以设置影响文档流布局的内外边距以及宽高。 且设置高度等同于设置行高,会垂直居中

    • line-height 行内非替换元素虽然不具备宽高,但是可以利用line-height来设置高度,但是奇葩的是,虽然行高可以影响行内元素的文档流布局,但是,其边框依旧会包裹其内容,忽略行高带来的上下留白。

    • margin 行内元素的边距,不会合并(替换非替换)。不同于块级元素,会合并上下,左右边距。

    • 块级元素可以对其高度宽度进行设置,同时也可以对边框,内外边距,进行设置,其设置结果影响文档流布局效果。
      注意修改width后,并不会使得其下面的行内元素向上移动。

    • 行内元素,行内元素可以对其高度进行设置么?当然不能!这个回答当然太过绝对。
      元素分为替换元素与非替换元素。几乎所有替换元素都是行内元素。

  • 行内元素与块级元素的转换

    • display:none;不显示该元素,也不会保留该元素原先占有的文档流位置。

    • display:block;转换为块级元素。

    • display:inline;转换为行内元素。

    • display:inline-block;转换为行内块级元素。
      以上四个是我常用的,事实上,还有很多

      通过display:block;与display:inline;可以很容易的实现两类元素变现形式之间的转换。
      但是,有很多时候,我们需要使用display:inline-block;来转换行内元素,或者是块级元素。但是这个元素时css2新增的属性,对于IE7以下的版本不支持这个属性,所以需要一些兼容的办法。这里会即将写一篇

    • display
      块级元素默认display:block;行内非替换元素(a,span)默认为display:inline;;行内替换元素(input)默认为display:inline-block;

    • <a href="http://www.php.cn/wiki/919.html" target="_blank">float</a>
      当把行内元素设置完float:left/right后,该行内元素的display属性会被赋予block值,且拥有浮动特性。行内元素去除了之间的莫名空白,

    • <a href="http://www.php.cn/wiki/902.html" target="_blank">position</a>
      当为行内元素进行定位时,position:absolute,与position:fixed。都会使原先的行内元素变为块级元素。

  • 【注意】通过以上的设置,可以实现为行内非替换元素设置宽高及内外边距。但是替换时,还需要注意转换为块级元素只是,float与position的副作用,他们本身的作用还会干扰布局效果。
    之前介绍块级元素时,会说,块级元素的宽度会继承其父元素。但是,只有为行内元素设置display:block;才会有这样的效果,其他转换之后并不会默认带来这个效果。

    建议小伙伴们还是自己在编辑器里敲敲,对比一下,印象才深刻。

【相关推荐】

1. 免费html在线视频教程

2. html开发手册

3. php.cn原创html5视频教程

以上是对行内元素与块级元素之间转换的详细教程的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
在JavaFX中,有哪些不同的路径元素?在JavaFX中,有哪些不同的路径元素?Aug 28, 2023 pm 12:53 PM

javafx.scene.shape包提供了一些类,您可以使用它们绘制各种2D形状,但这些只是原始形状,如直线、圆形、多边形和椭圆形等等...因此,如果您想绘制复杂的自定义形状,您需要使用Path类。Path类Path类使用此表示形状的几何轮廓您可以绘制自定义路径。为了绘制自定义路径,JavaFX提供了各种路径元素,所有这些都可以作为javafx.scene.shape包中的类使用。LineTo-该类表示路径元素line。它可以帮助您从当前坐标到指定(新)坐标绘制一条直线。HlineTo-这是表

C++程序:向数组中添加一个元素C++程序:向数组中添加一个元素Aug 25, 2023 pm 10:29 PM

数组是一种线性顺序数据结构,用于在连续的内存位置中保存同质数据。与其他数据结构一样,数组也必须具备以某种有效方式插入、删除、遍历和更新元素的功能。在C++中,我们的数组是静态的。C++中还提供了一些动态数组结构。对于静态数组,该数组内可能存储Z个元素。到目前为止,我们已经有n个元素了。在本文中,我们将了解如何在C++中在数组末尾插入元素(也称为追加元素)。通过示例理解概念‘this’关键字的使用方式如下GivenarrayA=[10,14,65,85,96,12,35,74,69]Afterin

html5不支持哪些元素html5不支持哪些元素Aug 11, 2023 pm 01:25 PM

html5不支持的元素有纯表现性元素、基于框架的元素、应用程序元素、可替换元素和旧的表单元素。详细介绍:1、纯表现性的元素,如font、center、s、u等,这些元素通常被用于控制文本样式和布局;2、基于框架的元素,如frame、frameset和noframes,这些元素在过去用于创建网页布局和分割窗口;3、应用程序相关的元素,如applet和isinde等等。

jquery怎么移除 元素jquery怎么移除 元素Feb 17, 2023 am 09:49 AM

jquery移除元素的方法:1、通过jQuery remove()方法删除被选元素及其子元素,语法是“$("#div1").remove();”;2、通过jQuery empty()方法删除被选元素的子元素,语法是“$("#div1").empty();”。

如何使用HTML和CSS实现一个具有固定导航菜单的布局如何使用HTML和CSS实现一个具有固定导航菜单的布局Oct 26, 2023 am 11:02 AM

如何使用HTML和CSS实现一个具有固定导航菜单的布局在现代网页设计中,固定导航菜单是常见的布局之一。它可以使导航菜单始终保持在页面顶部或侧边,使用户可以方便地浏览网页内容。本文将介绍如何使用HTML和CSS实现一个具有固定导航菜单的布局,并提供具体的代码示例。首先,需要创建一个HTML结构来呈现网页的内容和导航菜单。以下是一个简单的示例

如何在Java中删除ArrayList的所有元素?如何在Java中删除ArrayList的所有元素?Sep 20, 2023 pm 02:21 PM

List接口扩展了Collection接口并存储元素序列。List接口提供了两种方法来有效地在列表中的任意点插入和删除多个元素。与集合不同,列表允许重复元素,如果列表中允许空值,则允许多个空值。List提供了add、remove方法来添加/删除元素。为了清除列表或从列表中删除所有元素,我们可以使用List的clear()方法。我们也可以使用removeAll()方法来达到与clear()方法相同的效果。在本文中,我们将通过相应的示例介绍clear()和removeAll()方法。语法-clear

Python程序:替换列表中的元素Python程序:替换列表中的元素Aug 25, 2023 pm 06:48 PM

在Python中,可以使用列表将多个项目保存在单个变量中。Python中用于存储数据集合的四种内置数据类型之一是列表,其他三种是元组、集合和字典,每种类型都有独特的用途。什么是列表?方括号用于构建列表。Python中最有效的工具是列表,因为它们不一定是同类的。像整数、字符串和对象这样的数据类型都可以在一个列表中找到。由于列表是可变的,因此即使在创建列表之后也可以对其进行更改。Python列表包含重复值的能力是其主要功能之一。这允许我们循环遍历列表的项目并确定每个项目的值。如果该值必须被替换,我们

Java程序:在循环链表中搜索元素Java程序:在循环链表中搜索元素Sep 11, 2023 am 11:45 AM

什么是喜欢列表和循环链表?链表是一种数据结构,其中每个节点都包含两部分,数据和地址路径。这些部分指向下一个节点,该节点始终与先前的节点创建互连。基于此,循环链表是最后一个节点与第一个节点有内部链接,这就是这种类型的链表称为循环链表。在Java环境中,当我们查找元素循环链表时,需要在链表中创建一个临时节点来指向。这样我们还需要声明两个变量。它们是曲目索引和曲目搜索。如果Temp节点在起始点为空,那么遍历列表就很重要,因为此时它不包含任何项目。循环链表的工作原理及其应用?循环链表的工作方法对于循环链

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版