CSS盒子模型

盒子模型

1.CSS长度单位

  1. px:像素
  2. em:相对元素font-size 的倍数
  3. rem:相对根字体大小,html标签就是根
  4. %:相对父元素计算

CSS中设置长度,必须加单位,否则样式无效!

2.元素的显示模式

  1. 块元素(block)

    1. 在页面中独占一行,不会与任何元素共用一行,是从上到下排列的
    2. 默认宽度:撑满父元素
    3. 默认高度:由内容撑开
    4. 可通CSS设置宽高
  2. 行内元素(inline)

    1. 在页面中不独占一行,一行中不能容纳下的行内元素,会在下一行继续从左到右排列
    2. 默认宽度:由内容撑开
    3. 默认高度:由内容撑开
    4. 无法通过CSS设置宽高
  3. 行内块元素(inline-block)

    1. 在页面中不独占一行,一行中不能容纳下的行内元素,会在下一行继续从左到右排列
    2. 默认宽度:由内容撑开
    3. 默认高度:由内容撑开
    4. 可以通过css设置宽高

注意:元素早期只分为:行内元素、块级元素,区分条件也只有一条:“是否独占一行”,如果按照这种分类方式,行内块元素应该算作行内元素。

3. 总结各元素的显示模式

        1. 块元素(block)

                1. 主体结构标签:<html>、<body>

                2. 排版标签:<h1>--<h6>、<hr>、<p>、<pre>、<div>

                3. 列表标签:<ul>、<ol>、<li>、<dl>、<dt>、<dd>

                4. 表格相关标签:<table>、<tbody>、<thead>、<tfoot>、<tr>、<caption>

                5. <form>与<option>

        2. 行内元素

                1. 文本标签:<br>、<em>、<strong>、<sup>、<sub>、<del>、<ins>

                2. <a>(超链接)与<label>

        3. 行内块元素

                1. 图片:<img>

                2. 单元格:<td>、<th>

                3. 表单控件:<input>、<textarea>、<button>

                4. 框架标签:<iframe>

4.修改元素的显示模式

通过css中的display属性可以修改元素的默认的显示模式,常用值如下

描述

none

元素会被隐藏

block

元素将作为块级元素显示

inline

元素将作为内联元素显示

inline-block

元素将作为行内元素显示

5.盒子模型的组成部分

CSS会把所有的 html 元素都看成一个盒子,所有的样式也都是基于这个盒子。

  1. margin(外边距):盒子与外界的距离
  2. border(边框):盒子的边框
  3. padding(内边距):紧贴内容的补白区域
  4. content(内容):元素中的文本或后代元素都是他的内容

图示:

盒子的大小 = content + 左右 padding + 左右 border

注意:外边距margin不会影响盒子的大小,但会影响盒子的位置

6.盒子的内容区_content

CSS属性名

功能

属性值

width

设置内容区域宽度

长度

max-width

设置内容区域的最大宽度

长度

min-width

设置内容区域的最小宽度

长度

height

设置内容区域的高度

长度

max-height

设置内容区域的最大高度

长度

min-height

设置内容区域的最小高度

长度

注意:

max-width和min-width 一般不与 width 一起用

max-height和max-height 一般不与 height 一起用

7.关于默认宽度

所谓默认宽度,就是不设置 width 属性时,元素所呈现出来的宽度

总宽度 = 父的 content - 自身的左右 margin

内容区的宽度 = 父的content - 自身的左右 margin - 自身的左右 border - 自身的左右 padding

8.盒子的内边距_padding

CSS属性名

功能

属性值

padding-top

上内边距

长度

padding-right

右内边距

长度

padding-botom

下内边距

长度

padding-left

左内边距

长度

padding

复合属性

长度,可设置1~4个值

复合属性使用规则

1.padding: 10px; 四个方向内边距都是 10px.

2.padding: 10px 20px; 上下10,左右20.

3.padding: 10px 20px 30px; 上10,左右20,下10

4.padding: 10px 20px 30px 40px; 从上开始顺时针

注意点:

  1. padding 的值不能为负数
  2. 行内元素 的左右内边距是没问题的,上下内边距不能完美的设置
  3. 块级元素, 行内块元素, 四个方向内边距都可以完美设置.

9. 盒子的边框

CSS属性名

功能

属性值

border-style

边框线风格

复合了四个方向的边框风格

none:默认值

solid:实线

dashed:虚线

dotted:点线

double:双实线

......

border-width

边框线宽度

复合了四个方向的边框宽度

长度

默认30px

border-color

边框线颜色

复合了四个方向的边框颜色

颜色

默认黑色

border-left

border-left-style

border-left-width

border-left-color

......

分别设置各个方向上的边框

同上

border

复合属性

值没有顺序和数量的要求

边框相关属性一共是 20 个。

border-style , border-width , border-color 其实也是复合属性。

10.盒子的外边距_margin

CSS属性名

功能

属性值

margin-left

左外边距

css中的长度值

margin-right

右外边距

css中的长度值

margin-top

上外边距

css中的长度值

margin-bottom

下外边距

css中的长度值

margin

复合属性,可以写1~4个值,规律同padding(顺时针)

css中的长度值

10.1 margin的注意事项

  1. 子元素的 margin,是参考父元素的 conten 计算的。(因为是父亲的 content 中承装着子元素)
  2. margin、左margin:影响自己的位置;下margin、右margin:影响后面兄弟元素的位置。
  3. 块级元素、行内块元素,均可以完美的设置四个方向的margin;但行内元素,左右 margin 可以完美的设置,上下 margin 设置无效。
  4. margin 的值也可以是 auto ,如果给一个块级元素设置左右 margin 都为 auto ,该块级元素会在父元素中水平居中。
  5. margin 的值可以为负值。

10.2 margin的塌陷问题

什么是 margin 塌陷?

第一个子元素的上 margin 会作用在父元素上,最后一个子元素的下 margin 会作用在父元素上。

如何解决 margin 塌陷?

  1. 方案一:给父元素设置不为 0 的 padding
  2. 方案二:给父元素设置宽度不为 0 的 border
  3. 方案三:给父元素设置 css 样式 overflow:hidden

10.3 margin 合并问题

什么是 margin 合并?

上面兄弟元素的下外边距和下边兄弟的上外边距会合并,取一个最大的值,而不是相加。

如何解决 margin 合并?

无需解决,布局的时候上下兄弟元素,只给一个设置上下外边距就好了。

11. 处理内容溢出

CSS 属性名

功能

属性值

overflow

溢出内容的处理方式

visible:显示,默认值

hidden:隐藏

scroll:显示滚动条,不论内容是否溢出

auto:自动显示滚动条,内容不溢出不显示

overflow-x

水平方向溢出内容的处理方式

同overflow

overflow-y

垂直方向溢出内容的处理方式

同overflow

注意:

  1. overflow-xoverflow-y 不能一个是 hidden ,一个是 visible ,是实验属性,不建议使用
  2. overflow 常用的值是 hidden 和 auto , 除了能处理溢出的显示方式,还能解决很多疑难杂症。

12.隐藏元素的方式

方式一:visibility 属性

visibility 属性默认值是 show ,如果设置为 hidden ,元素会隐藏。

元素看不见了,还占有原来的位置(元素的大小依然保持)。

方式二:display 属性

设置 display:none ,就可以让元素隐藏。

彻底看不见,不但看不见,也不占用任何位置,没有大小和宽高。

13. 样式的继承

有些样式会继承,元素如果本身设置了某个样式,就使用本身设置的样式;但如果本身没有设置某个样式,会从父元素开始一级一级继承(优先继承离得近的祖先元素)。

会继承的CSS属性

字体属性、文本属性(除了veitical-align)、文字颜色等

不会继承的CSS属性

边框、背景、内边距、外边距、宽高、溢出方式等

一个规律:能继承的属性,都是不影响布局的,简单的说:都是和盒子模型没关系的

14.默认样式

元素一般都有些默认样式

写页面的时候要重置元素

优先级:元素的默认样式 > 继承的样式;所以如果要重置元素的默认样式,选择器一定要直接选择到该元素。

15.布局小技巧

  1. 行内元素、行内块元素,可以被父元素当作文本处理。
  2. 如何让子元素,在父亲中水平居中
    1. 若子元素为块元素,给父元素加上:margin: 0 auto;
    2. 若子元素为行内元素、行内块元素,给父元素加上:text-align:center
  3. 如何让子元素,在父亲中垂直居中
    1. 若子元素为块元素,给子元素加上:margin-top,值为:(父元素content - 子元素盒子总高)/ 2.
    2. 若子元素为行内元素、行内块元素
      1. 让父元素的 height = line-height ,每个子元素都加上:vertical-align:middle;
      2. 补充:若想绝对垂直居中,父元素 font-size 设置为 0

16.行内块的幽灵空白问题

产生原因:

行内块元素与文本的基线对齐,而文本的基线与文本最底端之间是有一定距离的。

解决方案:

  1. 方案一:给行内块设置vertical,值不为 baseline 即可,设置为 middel、bottom、top均可。
  2. 方案二:若父元素中只有一张图片,设置图片为:display:block。
  3. 方案三:给父元素设置 font-size: 0。如果该行内块内部还有文本,则需单独设置 font-size。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

要敢为人先啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值