盒模型

盒模型

盒模型

盒模型基础属性

  • width
    • min-width
    • max-width
  • height
    • min-height
    • max-height
  • padding
    • padding-top
    • padding-right
    • padding-bottom
    • padding-left
  • border
    • border-top
    • border-right
    • border-bottom
    • border-left
  • margin
    • margin-top
    • margin-right
    • margin-bottom
    • margin-left

浏览器默认样式

浏览器对某些元素设置有默认样式,如 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;
}

常见处理方式

  • Normalize.css
  • CSS Reset
  • 简单去除
* {
  margin: 0;
  padding: 0;
}

margin

水平居中

对于固定宽度的块级元素,设置 margin-left: auto, margin-right: auto即可实现水平居中

...
.container {
  width: 960px; /* max-width: 960px; */
  margin: auto;
}

外边距合并

正常流(Normal Flow)下,外边距会进行合并。

  1. 相邻元素边距合并

好好学习

天天向上

h1 { margin: 20px 0; }
h2 { margin: 30px 0; }

  1. 父子元素合并范例
  

饥人谷

  1. 自我合并

浮动元素和绝对定位元素的外边距不会合并。

外边距为负

设置 margin-left margin-right 为负数可以增加块状元素宽度。

.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

display 用于设置元素渲染框的类型。

  • none 不显示元素。
  • block 显示为块状元素。
  • inline 显示为行内元素。
  • inline-block 显示为行内块,创建一个 BFC。
  • table-cell 显示行为与 一样。 垂直居中 https://codepen.io/twhy/pen/rwejpZ
  • flex flex 布局
  • grid grid 布局
  • ...

问题 blockinlineinline-block 元素的区别是什么?

参考答案

box-sizing

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

其他相关属性

outline

如果你看到被选中的

你可能感兴趣的:(盒模型)