CSS display属性

非常重要。必须完全掌握。


1 问题

1)为什么我们会选择div作为布局容器?

2)为什么div、h1、p等标签:默认会自动换行?

3)为什么span等标签:默认不会换行,且设置width、height无效?

4)为什么input type="text"等标签默认:不会换行,设置width、height有效?


都是因为display属性。


2 关键属性值

display属性设置元素的显示方式。

常用属性值:

display属性值 说明
block 块级元素。带有换行效果。
inline-block 内联-块级元素。不换行,可设置width、height。
inline 内联元素。靠内容自动撑开盒子,设置width、height无效。

3 查看元素默认display属性值

代码

<body>
    <!-- 各元素的默认display值 -->
    <div>div1</div>
    <span>span1</span>
    <input type="text">
</body>

F12打开开发者工具,查看样式默认值。

div的display值:block。

img

span的display值:inline。

img

<input type="text">的display值:inline-block。

img


3 修改display值测试效果

1)修改div的display为inline

<div style="display: inline;width: 100px;height: 60px;border: 1px solid #f00;">div1</div>
后续内容

img

div现在跟span默认的显示方式相同了:没有换行,设置width、height无效。


2)设置span的display为inline-block;

<span style="display: inline-block;width: 100px;height: 60px;border: 1px solid #f00;">
span1
</span>
后续内容

img


3)设置span的display为block;

<span style="display: block;border: 1px solid #f00;">span2</span>
后续内容

img


4 display实际运用

语法上,我们都可以修改任意标签的display属性;但尽量不要修改,以符合它们本身的逻辑。

实际项目的修改场景:

1)span标签display默认inline,需要设置width、height时,我们会修改display值为inline-block;

2)a链接标签display默认inline,根据场景会设置为inline-block或block。

3)div等标签display默认block,基本不会把它们改成inline、或inline-block。div我们是通过浮动设置让它不换行。


5 为什么选择div作为布局的容器标签

div本身display是block,也就是 行布局

后续会继续学习div+浮动实现 列布局

div的margin、padding默认为0;

div本身没有任何显示;

所以,div是最适合做布局的容器。


6 display其它常用属性值

display属性 说明
none 隐藏元素,而且不再占有位置。
<div style="display: none;">div1</div>
后续内容

img

经常用于javascript与响应式布局,需要动态控制元素的显示与隐藏。


7 标签的display默认值

1)默认为block的常用标签

div、p、h1…h6、ol、ul、dl、table、form、等。


2)默认为inline-block的标签

img、input、button、select、textarea、等


3)默认为inline的标签

span、a、lable、i 、等。

img表面是inline,实质是inline-block。