-
Notifications
You must be signed in to change notification settings - Fork 39
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
深入理解inline元素,block-level元素和display属性 #75
Comments
深入理解inline 元素在HTML中,行内元素是那些仅仅占据定义元素边界的标签空间的元素,而不是去破坏内容流。在这篇文章中,我们将检查HTML行内元素并且与block做对比。
inline vs block-level 元素:示范用一个简单例子来示范就好。
Inline
在这个例子中, (段落)块级元素包含一些文本。在text文本内部有一个行内元素。因为标签是行内的,所以段落正确地绘制出一个单个的,没有断开的文本流,就系那个下面这样。
block-level
绘制完之后是这样的:
看到差异了吗? 改变元素的level你可以使用CSS的display属性改变元素的level。 概念上的区别简而言之,在概念上inline和block-level元素有以下区别:
块级元素列表下面的元素默认是inline的。
https://developer.mozilla.org/en-US/docs/Web/HTML/Inline_elements |
深入理解block-level元素HTML元素通常要么是"block-level"元素,要么是"inline elements"。
浏览器一般会在block-level元素前后展示一个新行。我们可以把它想象成一个box stack(盒子栈)。
下面的例子示范了block-level元素的影响: HTML CSS 用法
Block-level vs inline这里有一对行内元素和块级元素之间的区别。
block-level 与inline 元素之间的区别用于HTML4.01以下的规范。 在HTML5中,这个两者之间的区别,由于content categories所以变得更为复杂了。
块级元素下面的列表是一个复杂的HTML块级元素列表(尽管"block-level"在HTML5中没有明确定义给任何元素。)
https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements |
深入理解display属性display CSS属性指明了元素渲染盒子的类型。在HTML中,默认display属性值取自HTML规范或浏览器/用户默认样式表中描述的行为。XML默认值是inline,包括SVG元素也是。 除了各种各样的display盒类型之外,none 值使得你关闭元素的展示。当你使用none,所有的后裔元素也都关闭了展示。尽管element不能在document tree中展示,但是它依然会被渲染。 关于display值,有以下几种分类:
最好只为display设置一个值,因为组合的方式还不被一些浏览器支持。 关于这部分,我将挑选常见的inline,block,table,inline-block,flex以及grid进行举例。
由于display-legacy类型较为有趣,因此将其全部进行翻译。
由于display-inside部分的flow-root于inline-block有关,因此也添加进来。 无障碍考虑https://developer.mozilla.org/en-US/docs/Web/CSS/display |
Summary
因此文章开头的问题就迎刃而解了。
|
Q&A上文提到了model,display值为flexbox时为flexbox model,display值为grid时为grid model。由此引申出2个问题:
|
可能你觉得这是一个老掉牙的问题,但其实并没有那么简单。
对于初学者来说,当遇到面试官问到这个问题的时候,脑海里的第一印象是css的display属性,值为inline时为行内元素,值为block时为块级元素,那值为inline-block时呢,元素是块级行内元素吗?
其实我们看问题的角度从一开始就错了,错误地站在了css的角度,而真正正确的是站在html的角度。因为这里的元素,本质上是指html的DOM元素。
下面我们就3个原理展开深入:
并且提出两个问题:
The text was updated successfully, but these errors were encountered: