浏览器对某些元素设置有默认样式,如 h1, ul, li 等。
/* user agent stylesheet 即浏览器默认样式 */ h1 { display: block; font-size: 2em; -webkit-margin-before: 0.67em; -webkit-margin-after: 0.67em; -webkit-margin-start: 0px; -webkit-margin-end: 0px; font-weight: bold; }
常见处理方式
* { margin: 0; padding: 0; }
对于固定宽度的块级元素,设置 margin-left: auto
, margin-right: auto
即可实现水平居中
<div class="container"> ... </div>
.container { width: 960px; /* max-width: 960px; */ margin: auto; }
在正常流(Normal Flow)下,外边距会进行合并。
<h1>好好学习</h1> <h2>天天向上</h2>
h1 { margin: 20px 0; } h2 { margin: 30px 0; }
<header></header> <main> <h1>饥人谷</h1> </main> <footer></footer> <style> header, footer { height: 30px; background: blue; } main { background: red; } </style>
浮动元素和绝对定位元素的外边距不会合并。
设置 margin-left
margin-right
为负数可以增加块状元素宽度。
<div class="T"></div>
.T { width: 30px; height: 210px; margin: 50px auto; background: orange; } .T::after { content: ''; height: 30px; margin: 0 -70px; display: block; background: limegreen; }
运行结果 https://codepen.io/twhy/pen/zzrQMR
display 用于设置元素渲染框的类型。
none
不显示元素。block
显示为块状元素。inline
显示为行内元素。inline-block
显示为行内块,创建一个 BFC。flex
flex 布局grid
grid 布局
问题 block
,inline
,inline-block
元素的区别是什么?
解答
<
p>
只能包含 inline 元素。box-sizing 用于更改用于计算元素宽度和高度的默认的 CSS 盒模型。
box-sizing: content-box
默认值
.box { width: 300px; border: 10px; }
渲染出来的盒子宽度为 320px
box-sizing: border-box
.box { width: 300px; border: 10px; padding: 10px; box-sizing: border-box; }
渲染出来的盒子宽度为 300px
如果你看到被选中的 <a>
<input>
<button>
周围有一圈黄或蓝色的外框,就是 outline 了,可以通过设置 outline: 0
或 outline: none
去除。
overflow 用于控制内容溢出包含它的块状元素时的显示方式。
overflow-x 和 overflow-y 分别用于控制水平溢出和垂直溢出。
visible
默认值
显示溢出的内容hidden
内容被裁剪且不会出现滚动条scroll
内容被裁剪但出现滚动条auto
由浏览器决定
🤔 inline-block 之间有空格、Tab、换行符。
💡 给父元素设置 font-size: 0
,在 inline-block 元素上重新设置 font-size
。
💡 给 inline-block 元素设置 vertical-align: top
.item { vertical-align: top; display: inline-block; ... }
通用解决办法 不要设置 inline-block
,使用 float
或 flex
。