display:block display:inline display:inline-block

默认情况下label、span 设置width 是无效的,

只有当display:block时,我们所设置的width才有效果,但这样会换行

不换行可以使用display:inline-block;

(另外label设置 position:absolute时,width也是有效果的)

总体概念

  1. block和inline这两个概念是简略的说法,完整确切的说应该是 block-level elements (块级元素) 和 inline elements (内联元素)。block元素通常被现实为独立的一块,会单独换一行;inline元素则前后不会产生换行,一系列inline元素都在一行内显示,直到该行排满。
  2. 大体来说HTML元素各有其自身的布局级别(block元素还是inline元素):
    • 常见的块级元素有 DIV, FORM, TABLE, P, PRE, H1~H6, DL, OL, UL 等。
    • 常见的内联元素有 SPAN, A, STRONG, EM, LABEL, INPUT, SELECT, TEXTAREA, IMG, BR 等。
  3. block元素可以包含block元素和inline元素;但inline元素只能包含inline元素。要注意的是这个是个大概的说法,每个特定的元素能包含的元素也是特定的,所以具体到个别元素上,这条规律是不适用的。比如 P 元素,只能包含inline元素,而不能包含block元素。
  4. 一般来说,可以通过display:inline和display:block的设置,改变元素的布局级别。

block,inline和inlinke-block细节对比

  • display:block
    1. block元素会独占一行,多个block元素会各自新起一行。默认情况下,block元素宽度自动填满其父元素宽度。
    2. block元素可以设置width,height属性。块级元素即使设置了宽度,仍然是独占一行。
    3. block元素可以设置margin和padding属性。
  • display:inline
    1. inline元素不会独占一行,多个相邻的行内元素会排列在同一行里,直到一行排列不下,才会新换一行,其宽度随元素的内容而变化。
    2. inline元素设置width,height属性无效。
    3. inline元素的margin和padding属性,水平方向的padding-left, padding-right, margin-left, margin-right都产生边距效果;但竖直方向的padding-top, padding-bottom, margin-top, margin-bottom不会产生边距效果。
  • display:inline-block
    1. 简单来说就是将对象呈现为inline对象,但是对象的内容作为block对象呈现。之后的内联对象会被排列在同一行内。比如我们可以给一个link(a元素)inline-block属性值,使其既具有block的宽度高度特性又具有inline的同行特性。

补充说明

  • 一般我们会用display:block,display:inline或者display:inline-block来调整元素的布局级别,其实display的参数远远不止这三种,仅仅是比较常用而已。
  • IE(低版本IE)本来是不支持inline-block的,所以在IE中对内联元素使用display:inline-block,理论上IE是不识别的,但使用display:inline-block在IE下会触发layout,从而使内联元素拥有了display:inline-block属性的表象。
时间: 2024-12-28 23:55:56

display:block display:inline display:inline-block的相关文章

display的block、none、inline属性及解释

常会用到display对应值有block.none.inline这三个值 参数: block :块对象的默认值.用该值为对象之后添加新行.之前也添加一行. none :隐藏对象.与visibility属性的hidden值不同,其不为被隐藏的对象保留其物理空间 inline :内联对象的默认值.用该值将从对象中删除行.如果其前后都是inline的则在同一行 display:block: 特点: 1.总是在新行上开始 2.该对象随后的内容自动换行 3.高度,行高以及顶和底边距都可控制 4.如果宽度缺

css中display常用属性详解之Block(一)

用了几年的css了,css中inline | block |inline-block|table|flex从来没有做过系统的整理和分析,网上的分析文章也很多,零散. 今天有空,就在这做一下整理分析 block 解释:指定对象为块元素(占据一定矩形空间,可以通过设置高度.宽度.内外边距等属性,来调整的这个矩形的样) 特点:1.处于常规流中时,如果width没有设置,会自动填充满父容器  2.可以应用margin/padding  3.在没有设置高度的情况下会扩展高度以包含常规流中的子元素  4.处

clearfix为什么用display:table,而不用display:block

我们都知道clearfix一般这么写: .clearfix:before,.clearfix:after{ content:""; display:table; } .clearfix:after{clear:both;} 但是为嘛用 display:table哪? 我用display:block好像也是显示很正常,也能清除浮动. 曾经也搜索过这个问题,感觉都讲得糊里糊涂的还是我水平太低了,反正我是看不懂他们想要表达啥意思,也不给例子,好了,废话不多说, 看结果吧: https://f

display:block、display:inline与displayinline:block的概念和区别

总体概念 block和inline这两个概念是简略的说法,完整确切的说应该是 block-level elements (块级元素) 和 inline elements (内联元素).block元素通常被现实为独立的一块,会单独换一行:inline元素则前后不会产生换行,一系列inline元素都在一行内显示,直到该行排满. 大体来说HTML元素各有其自身的布局级别(block元素还是inline元素): 常见的块级元素有 DIV, FORM, TABLE, P, PRE, H1~H6, DL,

当inline元素包裹block元素时会发生什么

经常有图片链接写法如下: <a href="www.baidu.com"><img src="baidu.jpg" /></a> 点击图片自动跳转,不用增加新的点击事件,光标滑过时变成小手等等,这都是a标签的功劳. 但是inline元素包裹block元素后,inline元素本身是否会变成blcok元素,还有待求证,于是做了如下对比: <div>这里是块元素</div> <span>用于测试(没有

Failed to create Accelerated Display. Please check the display hardware and drivers meet the minimum requirements.

ArcGIS Runtime for WPF开发中Map设置了属性UseAcceleratedDisplay="True",报错: Sample: LocalMap Error: Failed to create Accelerated Display. Please check the display hardware and drivers meet the minimum requirements. Stack Trace: 在 ESRI.ArcGIS.Client.Native

_tkinter.TclError: no display name and no $DISPLAY environment variable

_tkinter.TclError: no display name and no $DISPLAY environment variable 这是在使用cocos2d-x的pluginx时遇到的一个问题,在win32环境下,使用cygwin运行gameDevGuide.sh,出现这个提示. 解决办法比较简单,到cygwin的目录下,删掉bin和lib目录下的python相关(文件名包含python的)的文件即可.

block存储区域——如何验证block在栈上,还是堆上

block存储区域 这就需要引入三个名词: ● _NSConcretStackBlock ● _NSConcretGlobalBlock ● _NSConcretMallocBlock 正如它们名字说的那样,说明了block的三种存储方式:栈.全局.堆. [要点1]定义在函数外面的block是global的:另外如果函数内部的block,但是没有捕获任何自动变量,那么它也是全局的.比如下面这样的代码: typedef int (^blk_t)(int); for(...){ blk_t blk

nand出现大片的Bad block at 0x in erase block from 0x will be skipped

开发板上的nand flash写不了,擦除不了: Bad block at 0xxxxx in erase block from 0xxxxx will be skipped …… 解决方法: nand scrub $(offset) $(size) y enter 删除标记的坏块,这样就把整个flash格式化了.