CSS三大模块——盒模型、浮动、定位 (重点)

一、盒模型

1.基本概念:

所谓盒模型就是把HTML页面中的元素看作是一个矩形的盒子,也就是一个装内容的容器。

每个矩形都由元素的内容 (content) 、内边距 (padding) 、边框 (border) 和外边距 (margin) 组成

2.盒子模型:

                           

3.内边距(padding)

padding属性用于设置内边距 指边框与内容之间的距离

padding-top: 上内边距

padding-right: 右内边距

padding-bottom: 下内边距

padding-left: 左内边距

padding: 上右下左内边距

注意:属性后面的数值可变,表示不同的含义。

值的个数表达意思
1个值四周 内边距
2个值上下、左右 内边距
3个值上、左右、下 内边距
4个值

上、右、下、左 内边距

 

 

 

 

4.边框(border)

边框就是元素最外层的包装 CSS边框属性允许指定一个元素边框的样式和颜色

语法:

border: border-width border-style border-color
  • border-width:用于指定边框的粗细

  • border-style:用于定义边框的样式

  • border-color:用于设置边框的颜色

    设置内容样式属性常用属性值
    上边框

    border-top-style:样式

    border-top-width:宽度

    border-top-color:颜色

    border-top:样式 宽度 颜色

    右边框

    border-right-style:样式

    border-right-width:宽度

    border-right-color:颜色

    border-right:样式 宽度 颜色

    下边框

    border-bottom-style:样式

    border-bottom-width:宽度

    border-bottom-color:颜色

    border-bottom:样式 宽度 颜色

    左边框

    border-left-style:样式

    border-left-width:宽度

    border-left-color:颜色

    border-left:样式 宽度 颜色

    样式综合样式border-style:上 右 下 左

    none无(默认)、solid(单实线)、

    dashed(虚线)、dotted(点线)、

    double(双实线)

    宽度综合样式border-width:上 右 下 左

    像素值:px

    使用关键字:thick medium thin

    颜色综合样式border-color:上 右 下 左

    关键字:white red ...

    十六进制:#333333

    RGB:rgb(r,g,b)、rgb(r%,g%,b%)

    transparent

    边框综合样式border:四边样式 四边宽度 四边颜色

    注意: border-color单独使用是不起作用的,必须得先使用border-style来设置边框样式

   表格的细线边框

border-collapse: collapse;    /*表示边框合并在一起 合并单元格的线*/

  圆角边框 border-radius 

border-top-left-radius: 左上角  
border-top-right-radius: 右上角
border-bottom-right-radius:  右下角
border-bottom-left-radius:  右下角

border-radius: 左上角  右上角  右下角  左下角;	  /*4个值*/
border-radius: 左上角  右上/左下  右下角;	   		/*3个值*/
border-radius: 左上/右下  右上/左下;			 /*2个值*/
border-radius: 四个圆角值相同;					  /*1个值*/

5.外边距(margin)

margin属性用于设置外边距。设置外边距会在元素之间创建“空白”,这段空白通常不能放置其他内容。

margin-top: 上外边距

margin-right: 右外边距

margin-bottom: 下外边距

margin-left: 左外边距

margin: 上 右 下 左 四周边距

注意:行内元素可以设置水平方向的内外边距,但不能设置垂直方向的内外边距。

(1)外边距实现盒子水平居中 margin:0 auto

必需条件:是块级元素且指定了宽度

margin:0 auto 盒子在父盒子水平居中 上下外边距为0 auto水平方向居中 平分剩余的宽度

如果只设置margin-left:auto; 会让子元素靠着父元素的右侧,因为父元素剩余空间都分给了左侧,而右侧的父元素剩余空间,分配为0 所以靠右

垂直方向不可以margin: auto 0; 因为在垂直方向上,块级元素不会自动扩充,它的外部尺寸没有自动充满父元素,也没有剩余空间可说。

(2)文字水平居中和盒子水平居中

  1. 盒子居中使用margin,给定左右边距为auto即可。

  2. 文字居中使用:text-align: center;

  3. 文字垂直居中:单行文本 line-height, 多行文本padding

(3)外边距合并

同级:

上下相邻的两个块元素 上面的元素有margin-bottom 下面的元素有margin-top

则他们之间的垂直距离不是margin-bottom与margin-top之和,而是取两者中的较大者

嵌套:

两个块级元素嵌套 如果内部的块设置有margin-top属性且父元素没有下边解决方法所述的特征 那么内部块的margin-top属性会绑架父元素(即将margin-top传递凌驾给了父元素)

只有子盒子的margin-top才会传递给父元素 其他方向不会

解决方案

  1. 设置父元素或者自身的display:inline-block; (BFC规范)

  2. 设置父元素的border:1px solid #fff;(>0) ;或者border-top(一定要包含border-top方向) 此方法如果不想影响元素高度 加上box-sizing:border-box;

  3. 设置父元素的padding:1px;(>0); 或者padding-top(一定要包含padding-top方向) 此方法如果不想影响元素高度 加上box-sizeing:border-box;

  4. 给父元素设置overflow:hidden; (BFC规范)

  5. 给父元素或者自身设置position:absolute;(BFC规范)

  6. 设置父元素非空,填充一定的内容。(在父元素与当前子元素之间 加点具有高度的元素或内容分开父元素与当前子元素)

6.盒子阴影(border-shadow)

语法:

box-shadow: 水平位置  垂直位置  模糊距离  阴影尺寸扩大/缩小阴影  阴影颜色  内/外阴影;
描述
h-shadow必需 水平阴影的位置 允许负值
v-shadow必需 垂直阴影的位置 允许负值
blur可选 模糊距离
spread可选 阴影的尺寸
color可选 阴影的颜色
inset可选 将外部阴影(outset)改为内部阴影

1、阴影效果:            

 h-shadow:正值时,阴影往右,负值阴影往左
 v-shadow:正值时,阴影往下,负值阴影往上

2、模糊距离:值越大,阴影越模糊

3、 阴影尺寸:阴影外延出去的长度,类似于border 不同于border,box-shadow并不占据空间

4、内部阴影:inset  外部阴影是默认的 不能写

二、浮动(float)

1.文档流

文档流处在网页的最底层,它表示的是一个页面中的位置,我们所创建的元素默认都处在文档流中

元素在文档流中的特点:

  • 块元素:

        块元素在文档流中会独占一行   

        块级子元素在父元素中从上到下排列

  • 行内元素:

       行内元素在文档流中只占自身的大小   

       行内子元素在父级元素中从左到右排列

2.基本概念

元素的浮动 指设置了浮动属性的元素会脱离标准普通流的控制

语法:

选择器 {
    float: 属性值;
}
属性值描述
left元素向左浮动
right元素向右浮动
none默认  不浮动

3.特性

特性:

1.会脱离标准文档流

2.会影响其他元素的显示方式

     其他元素会当做浮动元素不存在

     行内元素设置了浮动之后 会被当做inline-block元素解析 可设置宽高

3.块级元素设置了浮动后宽度没有默认宽度不会再是父元素100% 必须手动设置

4.如果所在父元素还有空间的话 同层级浮动的元素会彼此相邻

5.所有元素都只能在父盒子内浮动 不能超出

4.清除浮动

同层级:清除其他浮动元素带给自己的影响

  • clear:left   清除前面的左浮动元素带来的影响
  • clear:right   清除前面的右浮动元素带来的影响
  • clear:both  清除前面左右所有浮动元素带来的影响

嵌套:

给父元素加height ——不推荐 会导致布局不是很灵活

BFC布局:

(1) overflow:hidden   当子盒子高度需要超出父元素高度时,会受到影响

(2)display:inline-block  会影响到后面的布局

(3)在父元素的浮动子元素后面加个空div标签 设置清除浮动

.empty{ clear:both;}

(4)给父元素设置伪元素 空的div加强版 ——最佳

.afterfix:after{
    display: block;
    content: "";
    clear: both;
}

三、 定位(position)

1.基本概念

元素的定位属性主要包括边偏移定位模式两部分

  • 边偏移
边偏移属性描述
top顶部偏移量,定义元素相对于其父元素上边线的距离
bottom底部偏移量,定义元素相对于其父元素下边线的距离
left左侧偏移量,定义元素相对于其父元素左边线的距离
right右侧偏移量,定义元素相对于其父元素右边线的距离
  • 定位模式

语法:

选择器 {
    position:  属性值;
}
属性值描述
static默认值,自动定位
fixed固定定位,相对于浏览器窗口是固定位置
relative相对位置,相对于其原文档流的位置进行定
absolute绝对定位,相对于其上一个已经定位的父元素进行定位

2.静态定位static

  • 和标准文档流表现的形式一样
  • 静态定位是所有元素的默认定位方式,当position属性的取值为static时,可以将元素定位于静态位置。
  • 所谓静态位置就是各个元素在HTML文档流中默认的位置。
  • 在静态定位状态下,无法通过偏移属性(top、bottom、left、right)来改变元素的位置。
  • 一般用来清除定位,比如一个原来有定位的盒子,不写定位了,就可以加static

3.固定定位fixed

  • 默认宽度不再是父元素100% 需指定宽度
  • 特性:
  1. 相对于body进行定位(不写上偏移量 默认)
  2. 相对于浏览器窗口进行定位(写偏移量)

4.相对定位relative

  • 默认宽度依旧是父元素100%
  • 特性:
  1. 相对于元素本身的位置进行定位
  2. 不完全脱离标准文档流 覆盖在其他盒子之上 其他盒子依旧认为它在 保留它的空间

5.绝对定位absolute

  • 不设置宽度就没有宽度
  • 特性:
  1. 完全脱离文档流 不占据位置 其他元素会占据此空间
  2. 绝对定位的元素的位置相对于最近的已定位祖先元素,如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块

             父级没有定位 子元素以浏览器为基准点对齐

             父级有定位  子元素以父元素为基准点对齐

             子绝父相  子级是绝对定位的话,父级要用相对定位

6.叠放次序z-index

  • 当多个元素同时设置定位时,定位元素之间有可能发生重叠
  • 要想调整重叠定位元素的堆叠顺序,可以对定位元素使用z-index层叠等级属性,其取值可为正整数、负整数、0.
  • 注意:定位元素才有z-index

同级:

  1. 不加z-index 后来者居上
  2. 加z-index 值越大越在上面 如果值相等 还是后来者居上

嵌套:

  1. 不加z-index 默认子元素在上
  2. 只给子元素加z-index值<0 可实现父元素为上
  3. 如果给父元素也添加z-index 父元素无论怎样 子元素都将在父元素上

嵌套+同层级

  1. 如果父元素有其他兄弟元素 如果两者都没加z-index 后来者居上
  2. 两者父元素都没加z-index 若某一子元素z-index值大 那么该子元素将显示在上方 如果值相同 则后来者居上
  3. 如果父级都加了z-index 那么在进行比较时 只比较父元素z-index值 值越大则父元素连同里面的子元素越靠上 如果值相等 后来者居上

注意:

数字后面不能加单位。

只有相对定位、绝对定位、固定定位有此属性,其余标准流、浮动、静态定位都无此属性。

flex盒子的子元素也可以设置z-index属性(后面了解)

7.绝对定位的盒子水平/垂直居中

1、通过绝对定位 和 margin:auto来实现

2、首先left 50% 父盒子一半的大小 然后走自己外边距负的一半值就可以了 margin-left=-半值

3、定位 和 transform

8. 粘性定位(了解)

粘性定位可以被认为是相对定位和固定定位的混合

元素在跨越特定阈值前为相对定位 之后为固定定位

例如:

#one { position: sticky; top: 10px; }

/* 在 viewport视口滚动到元素top距离小于10px之前元素为相对定位
   之后元素将固定在与顶部距离10px的位置 直到viewport视口回滚到阈值以下*/

粘性定位常用于定位字母列表的头部元素:

标示 B 部分开始的头部元素在滚动 A 部分时 始终处于 A 的下方

开始滚动 B 部分时,B 的头部会固定在屏幕顶部

直到所有 B 的项均完成滚动后 才被 C 的头部替代

*注:须指定 top, right, bottomleft 四个阈值其中之一,才可使粘性定位生效。否则其行为与相对定位相同。

特性(坑):

  • sticky不会触发BFC
  • z-index无效,
  • 当父元素的height:100%时,页面滑动到一定高度之后sticky属性会失效。
  • 父元素不能有overflow:hidden或者overflow:auto属性。
  • 父元素高度不能低于sticky高度
  • 必须指定top、bottom、left、right4个值之一,否则只会处于相对定位
  • sticky元素仅在其父元素内生效

四、布局中的对齐方式

1.vatical-align

描述
baseline默认。同行元素基线对齐。
sub元素的基线向下移。移动的距离未明确规定,具体由不同浏览器自行决定
super元素的基线向上移。移动的距离未明确规定,具体由不同浏览器自行决定
top元素的顶部(包含该元素的外边距margin-top padding-top)与父元素顶部对齐 (元素顶部与父元素中最高元素的顶部对齐) 元素顶部与父元素内容区域顶部对齐
text-top把元素的顶端包含该元素的外边距margin-top)与父元素字体的顶端对齐
middle行内元素的中线与行框的中线对齐
bottom元素的底部与父元素底部对齐 (元素底部与父元素中最低元素的底部对齐)
text-bottom把元素的底端(margin-bottom, padding-bottom)与父元素字体的底端对齐。
length是正值基线就向上移动,如果是负值基线向下移动。
%使用 "line-height" 属性的百分比值来排列此元素。允许使用负值。
inherit规定应该从父元素继承 vertical-align 属性的值。

2.middle

middle居中对齐,是行内元素的中线与行框的中线对齐,可以理解为元素上下边的中心点和行基线向上1/2x的高度位置对齐(当前元素基线向下移1/2x)

拓展:

(1)行内框

每个行内元素会生成一个行内框,行内框是一个浏览器渲染模型中的一个概念,无法显示出来。

在没有其他因素影响的时候(padding等),行内框等于内容区域,而设定行高时行内框高度不变

(2)行框

行框是指本行的一个虚拟的矩形框,是浏览器渲染模式中的一个概念,并没有实际显示。

行框高度等于本行内所有元素中行内框最大的值(以行高值最大的行内框为基准,其他行内框采用自己的对齐方式向基准对齐,最终计算行框的高度),当有多行内容时,每行都会有自己的行框。

3.基线相关

基线的位置并不是固定的:

1、在文本之类的内联元素中,基线是字符x的下边缘位置

2、在inline-block元素中

  • 如果该元素中有内联元素(文本),基线就是最后一行内联元素的基线。
  • 如果没有内联元素比如文本,基线就是元素的底边缘
  • 如果该元素内没有内联元素或者overflow不是visible,且有底部margin,基线就是margin的底边缘。如果没有margin 基线是元素底边缘
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
CSS(层叠样式表)是一种用于描述网页上元素样式的语言。在CSS中,盒模型是一个重要的概念,它定义了HTML元素在页面中的布局和样式。 盒模型由四个主要部分组成:内容区域、内边距、边框和外边距。下面对每个部分进行详细说明: 1. 内容区域(content):内容区域是盒模型中实际显示内容的部分,例如文本、图像等。它的大小由内容的宽度和高度决定。 2. 内边距(padding):内边距是位于内容区域和边框之间的空白区域。可以使用padding属性来设置内边距的大小。内边距可以为正值或负值,它会影响元素的尺寸和位置。 3. 边框(border):边框是包围内容区域和内边距的线条或样式。可以使用border属性来设置边框的样式、宽度和颜色。 4. 外边距(margin):外边距是位于元素边框外部的空白区域。可以使用margin属性来设置外边距的大小。外边距也可以为正值或负值,它会影响元素与其他元素之间的间距。 在CSS中,可以使用box-sizing属性来控制盒模型的计算方式。默认情况下,box-sizing属性的值为content-box,即宽度和高度只包括内容区域。如果将box-sizing属性的值设置为border-box,那么宽度和高度将包括内容区域、内边距和边框。 了解盒模型的概念对于理解和掌握CSS布局和样式非常重要。可以通过设置元素的宽度、高度、内边距、边框和外边距来实现不同的布局效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

哈哈ha~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值