CSS盒子模型介绍和使用(3)

1 . 盒子模型解释

元素在页面中显示成一个方块,类似一个盒子,CSS 盒子模型就是
使用现实中盒 子来做比喻,帮助我们设置元素对应的样式。盒子模
型示意图如下:
在这里插入图片描述
四个知识点: Content(内容) Padding(内边距)Border(边框) Margin(外边距)

把元素叫做盒子,设置对应的样式分别为: 盒子的边框 (border) 、盒子内的内容和边框之间的间距 (padding) 、 盒子与盒子之间的间距(margin)。

2 . 设置边框 border

(可设置一边的边框)

例:
border-top-color:red;
/设置顶部边框颜色为红色/
border-top-width;
/设置顶部边框粗细为 10px/
border-top-style:solid;
/设置顶部边框的线性为实线,常用的有:solid(实线)dashed(虚线) dotted(点线);/

上面三句可以简写成一句:
border-top:10px solid red;

设置其它三个边的方法和上面一样,
把上面的’top’换成’left’就是设置左边,
换成’right’就是设置右边,
换成’bottom’就是设置底边。
四个边如果设置一样,可以将四个边的设置合并成一句:
border:10px solid red;

3 . 设置内间距 padding

设置盒子四边的内间距,可设置如下:
padding-top:20px;/* 设置顶部内间距 20px /
padding-left:30px;/
设置左边内间距 30px /
padding-right:40px;/
设置右边内间距 40px /
padding-bottom:50px; /
设置底部内间距 50px */

上面的设置可以简写如下:
padding:20px 40px 50px 30px;
/四个值按照顺时针方向,分别设置的是 上 右 下 左四个方向的内边距值。/

padding 后面还可以跟 3 个值,2 个值和 1 个值,它们分别设置的项目如下:

padding:20px 40px 50px;
/设置顶部内边距为 20px,左右内边距为 40px,底部内边距为 50px/
padding:20px 40px;
/设置上下内边距为 20px,左右内边距为 40px/
padding: 20px;
/设置四边内边距为 20px/

4 . 设置外间距 margin

外边距的设置方法和 padding 的设置方法相同,将上面设置项中的
'padding’换成’margin’就是外边距设置方法。

盒子模型的尺寸
按照下面代码制作页面:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>盒子的真实尺寸</title>
<style type="text/css">
.box01{width:50px;height:50px;background-color:gold;}
.box02{width:50px;height:50px;background-color:gold;border:50px solid #000}
.box03{width:50px;height:50px;background-color:gold;border:50px solid
#000;padding: 50px;}
</style>
</head>
<body>
<div class="box01">1</div>
<br />
<div class="box02">2</div>
<br />
<div class="box03">3</div>
</body>
</html>

页面显示效果如下:
在这里插入图片描述
通过上面的页面得出结论:盒子的 width 和height 设置的是盒子内容的宽和高,不是盒子本身的宽和高,盒子的真实尺寸计算公式如下:

盒子宽度 = width + padding 左右 + border 左右
盒子高度 = height + padding 上下 + border 上下

5 . margin 相关技巧

1、设置元素水平居中: margin:x auto;
2、margin 负值让元素位移及边框合并;

6 . 外边距合并(重叠)

外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距。
合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者。

在父级容器有上下外边距的情况下,子元素如果添加外边距,父元素和子元素的垂直方向上的外边距会合并,相邻元素也会合并。在用margin给子元素和父元素之间留空白的时候通常会发生这样的问题。

几种解决办法:

<1>:父容器:border:1px solid;(不能是0px)

<2>:父容器:overflow: hidden;(或auto)

<3>:父容器:padding:1px;(不能是0或auto,其他的任意数值都可以)

<4>:父容器或子容器: float:left;(不能是auto)

<5>:父容器或子容器:position:absolute;

<6>:子容器:display:inline-block;(或是inline-table)

<7>:相邻元素:任意一个添加float:left(不能是auto)

7 . margin-top 塌陷

在两个盒子嵌套时候,内部的盒子设置的 margin-top 会加到外边的盒子上,导致内部的盒子 margin-top 设置失败,解决方法如下:
1、外部盒子设置一个边框
2、外部盒子设置 overflow:hidden
3、使用伪元素类:
.clearfix:before{ conten t: ‘’;
display:table;
}

8 . CSS 元素溢出

当子元素的尺寸超过父元素的尺寸时,需要设置父元素显示溢出的子元素的方式。

设置的方法是通过 overflow 属性来设置。

overflow 的设置项:
1、visible 默认值。内容不会被修剪,会呈现在元素框之外。
2、hidden 内容会被修剪,并且其余内容是不可见的,此属性还有清除浮动、清除margin-top 塌陷的功能。
3、scroll 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。
4、auto 如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。
5、inherit 规定应该从父元素继承 overflow 属性的值。

9 . 块元素、内联元素、内联块元素

元素就是标签,布局中常用的有三种标签,块元素、内联元素、内联块元素,了解这三种元素的特性,才能熟练的进行页面布局。

①块元素
块元素,也可以称为行元素,布局中常用的标签如:div、p、ul、li、h1~h6、dl、dt、dd 等等都是块元素,它在布局中的行为:

支持全部的样式

如果没有设置宽度,默认的宽度为父级宽度 100% 盒子占据一行、即便设置宽高也会占据一行显示

②内联元素
内联元素,也可以称为行内元素,布局中常用的标签如:a、span、em、b、strong、i 等等都是内联元素,它们在布局中的行为:

支持部分样式(不支持宽、高、margin 上下、padding 上下)

宽高由内容决定

盒子并在一行

代码换行,盒子之间会产生间距

子元素是内联元素,父元素可以用 text-align 属性设置子元素水平对齐方式,用line-height 属性值设置垂直对齐方式

解决内联元素间隙的方法
、、去掉内联元素之间的换行
、、将内联元素的父级设置 font-size 为 0,内联元素自身再设置font-size

③内联块元素
内联块元素,也叫行内块元素,是新增的元素类型,现有元素没有归于此类别的,img 和input 元素的行为类似这种元素,但是也归类于内联元素,我们可以用 display 属性将块元素或者内联元素转化成这种元素。它们在布局中表现的行为:

支持全部样式

如果没有设置宽高,宽高由内容决定

盒子并在一行

代码换行,盒子会产生间距

子元素是内联块元素,父元素可以用 text-align 属性设置子元素水平对齐方式, 用 line-height 属性值设置子元素垂直对齐方式

这三种元素,可以通过 display 属性来相互转化,不过实际开发中,块元素用得比 较多,所以我们经常把内联元素转化为块元素,少量转化为内联块,而要使用内联 元素 时,直接使用内联元素,而不用块元素转化了。

display 属性
display 属性是用来设置元素的类型及隐藏的,常用的属性有:
1、none 元素隐藏且不占位置
2、block 元素以块元素显示
3、inline 元素以内联元素显示
4、inline-block 元素以内联块元素显示

10 . CSS 实现垂直居中的问题

难点: 一个div在另一个div中的垂直居中的设置?

(1) 利用text-align 实现块元素水平垂直居中
在这里插入图片描述在这里插入图片描述
(2) 利用padding设置,且父元素和子元素的大小一致
在这里插入图片描述
在这里插入图片描述
(3) 利用position和margin进行元素水平垂直居中
在这里插入图片描述

(4) 利用position进行元素的水平垂直居中
在这里插入图片描述
在这里插入图片描述

(5) 适用于文字的居中
在这里插入图片描述
(6) 适用于图片的居中
在这里插入图片描述
在这里插入图片描述

11 . 浮动

文档流

文档流,是指盒子按照 html 标签编写的顺序依次从上到下,从左到右排列,块元 素占一行,行内元素在一行之内从左到右排列,先写的先排列,后写的排在后面, 每个盒子都占据自己的位置。
浮动特性

1、浮动元素有左浮动(float:left)和右浮动(float:right)两种
2、浮动的元素会向左或向右浮动,碰到父元素边界、浮动元素、未浮动的元素 才停下来
3、相邻浮动的块元素可以并在一行,超出父级宽度就换行
4、浮动让行内元素或块元素自动转化为行内块元素
5、浮动元素后面没有浮动的元素会占据浮动元素的位置,没有浮动的元素内的文字会避开浮动的元素,形成文字饶图的效果
6、父元素内整体浮动的元素无法撑开父元素,需要清除浮动
7、浮动元素之间没有垂直 margin 的合并

清除浮动
父级上增加属性 overflow:hidden
在最后一个子元素的后面加一个空的 div,给它样式属性
clear:both(不推荐)
使用成熟的清浮动样式类,clearfix
.clearfix:after,.clearfix:before{ content: “”;display: table;}
.clearfix:after{ clear:both;}
.clearfix{zoom:1;}

清除浮动的使用方法:

.con2{... overflow:hidden} 或者 <div class="con2 clearfix">

11 .定位

关于定位
我们可以使用 css 的 position 属性来设置元素的定位类型,

postion 的设置项如下:

relative 生成相对定位元素,元素所占据的文档流的位置不变,元素本身相对文档流的位置进行偏移absolute 生成绝对定位元素,元素脱离文档流,不占据文档流的位置,可以理解为漂浮在文档流的上方,相对于上一个设置了相对或者绝对或者固定定位的父级元素来进行定位,如果找不到,则相对于 body 元素进行定位。

fixed 生成固定定位元素,元素脱离文档流,不占据文档流的位置,可以理解为漂浮在文档流的上方,相对于浏览器窗口进行定位。

static 默认值,没有定位,元素出现在正常的文档流中,相当于取消定位属性或者不设置定位属性

inherit 从父元素继承 position 属性的值

定位元素特性
绝对定位和固定定位的块元素和行内元素会自动转化为行内块元素

定位元素层级
定位元素是浮动的正常的文档流之上的,可以用 z-index 属性来设置元素的层级

典型定位布局
1、固定在顶部的菜单
2、水平垂直居中的弹框
3、固定的侧边的工具栏
4、固定在底部的按钮

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值