前端开发学习——CSS盒子模型

 一、优先级

1、基本测试

特性:不同选择器具有不同的优先级,优先级高的选择器样式会覆盖优先级低的选择器样式

优先级公式(越精准优先级越高):

  • 继承<通配符选择器<标签选择器<类选择器<id选择器<行内样式<!important

注意点:

  1. !important写在属性值后面,分号的前面
  2. !important不能提升继承的优先级,继承优先级最低
  3. 实际开发中不建议使用!important

 2、叠加计算

场景:如果是复合选择器,此时需要通过权重叠加计算方法,判断最终哪个选择器会生效

权重叠加计算公式:(每一级之间不存在进位)

7cef0adc6f1d4a83ad29d5cc0d41b258.png

比较规则:

  1. 从第一级开始比较,如果分出大小,之后的统统不看
  2. 如果最终多有数字都相同,表示优先级相同,则比较层叠性(谁写在下面,谁说了算)

注意点:!important如果不是继承,则权重最高。

<head>
    <style>
        /* 行内样式 id 类 标签 */
        /* (0,1,0,1) */
        div #one{
            color: orange;
        }
        /* (0,0,2,0) */
        .father .son{
            color: skyblue;
        }
        /* (0,0,1,1) */
        .father p{
            color: purple;
        }
        /* (0,0,0,2) */
        div p{
            color: pink;
        }
    </style>
</head>
<body>
   <div class="father">
        <p class="son" id="one">我是一个标签</p>
   </div>
</body>

 浏览器显示效果:

ff82207504b04cde8683344898fcdbc5.png

<head>
    <style>
        /* 行内样式 id 类 标签 */
        /* !important最高 */
        /* 继承:最低 */
        /* (0,2,0,0) 生效*/
       #father #son{
        color: blue;
       }
       /* (0,1,1,1) */
       #father p.c2{
        color: black;
       }
       /* (0,0,2,2) */
       div.c1 p.c2{
        color: red;
       }
       /* 继承:最低 */
       #father{
        color: green !important;
       }
       /* 继承:最低 */
       div#father.c1{
        color: yellow;
       }
    </style>
</head>
<body>
   <div class="c1" id="father">
        <p class="c2" id="son">这行文本是什么颜色</p>
   </div>
</body>

浏览器显示效果:
 4574567cb94b46adad4dc9d1df812ff7.png

 二、盒子模型

1、盒子模型的介绍

盒子的概念:

  • 页面中的每一个标签,都可以看做是一个“盒子”,通过盒子的视角更方便地进行布局
  • 浏览器在渲染网页时,会将网页中的元素看作是一个个的矩形区域,我们也形象地称之为“盒子”

8a3a80a47afb4f5b9959be2fe54ab43c.png

组成部分说明:

  • Margin(外边距) - 清除边框外的区域,外边距是透明的。
  • Border(边框) - 围绕在内边距和内容外的边框。
  • Padding(内边距) - 清除内容周围的区域,内边距是透明的。
  • Content(内容) - 盒子的内容,显示文本和图像。

 2、元素的高度和宽度

内容区域的大小由width和height属性默认设置是盒子内容区域的大小

b6580097cbf5453880d9901a0b262b00.png重要: 当您指定一个 CSS 元素的宽度和高度属性时,你只是设置内容区域的宽度和高度。要知道,完整大小的元素,你还必须添加内边距,边框和外边距。

 下面的例子中的元素的总宽度为 450px:

div {
    width: 300px;
    border: 25px solid green;
    padding: 25px;
    margin: 25px;
}

300px (宽)+ 50px (左 + 右填充)+ 50px (左 + 右边框)+ 50px (左 + 右边距) = 450px

最终元素的总宽度计算公式是这样的:

  • 总元素的宽度=宽度+左填充+右填充+左边框+右边框+左边距+右边距

元素的总高度最终计算公式是这样的:

  • 总元素的高度=高度+顶部填充+底部填充+上边框+下边框+上边距+下边距

注意: 

在CSS3中,可以自动将border、padding的尺寸从盒子中减去,只需添加下面一行代码:

box-sizing:border-box;

 

3、边框(border)

属性名:border

属性值:单个取值的连写,取值之间以空格隔开

  • 如:border: 10px solid red; 
  • border: 像素(数字+px)  线条样式(solid-实线 dashed-虚线 dotted-点线)  线条颜色;

如果只给盒子的某个方向单独设置边框

属性名:border-方位名词

4、内边距(padding) 

padding(填充)是一个简写属性,定义元素边框与元素内容之间的空间,即上下左右的内边距。

当元素的 padding(填充)内边距被清除时,所释放的区域将会受到元素背景颜色的填充。

单独使用 padding 属性可以改变上下左右的填充。

09d4d1d3ddf94781ac1fb21a18312108.png 

填充- 单边内边距属性

padding-top:25px;
padding-bottom:25px;
padding-right:50px;
padding-left:50px;
  • 上内边距是 25px
  • 右内边距是 50px
  • 下内边距是 25px
  • 左内边距是 50px 

 填充 - 简写属性

padding:25px 50px 75px 100px;
  • 上填充为25px
  • 右填充为50px
  • 下填充为75px
  • 左填充为100px
padding:25px 50px 75px;
  • 上填充为25px
  • 左右填充为50px
  • 下填充为75px
padding:25px 50px;
  • 上下填充为25px
  • 左右填充为50px
padding:25px;
  •  所有的填充都是25px

5、外边距(margin) 

 margin(外边距)属性定义元素周围的空间。

margin 清除周围的(外边框)元素区域。margin 没有背景颜色,是完全透明的。

margin 可以单独改变元素的上,下,左,右边距,也可以一次改变所有的属性。

Margin - 单边外边距属性同padding

margin-top:100px;
margin-bottom:100px;
margin-right:50px;
margin-left:50px;

Margin - 简写属性同padding

清除内外边距:

*{
  margin: 0;
  padding: 0;
}

6、margin问题 

1.合并现象

场景:垂直布局的块级元素,上下的margin会合并

结果:最终两者距离为margin的最大值

解决方法:只给其中一个盒子设置margin即可

2.塌陷现象

 场景:互相嵌套的块级元素,子元素的margin-top会作用在父元素上

结果:导致父元素一起往下移动

解决方法:

  1. 给父元素设置border-top或者padding-top(分隔父子元素的margin-top)
  2. 给父元素设置overflow:hidden
  3. 转换成行内块元素
  4. 设置浮动

 7、行内元素的内外边距问题

如果想要通过margin和padding改变行内元素的垂直位置,无法生效

解决方法:设置行高 

 

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值