【CSS学习记录】布局

1.0 盒模型

盒模型、盒子模型、框模型(box model)

  • Css将页面中的所有元素都设置为了一个矩形的盒子
  • 将元素设置为矩形的盒子后,对页面的布局就变成将不同的盒子摆放到不同的位置
  • 每一个盒子都由以下几个部分组成:
    内容区(content)
    内边距(padding)
    边框( border)
    外边距(margin)
  • 上下左右的设置
    四个值:上 右 下 左
    三个值:上 左右 下
    两个值:上下 左右
    一个值:上下左右

内容区( content),元素中的所有的子元素和文本内容都在内容区中排列

  • 内容区的大小由width和 height两个属性来设置
    width :设置内容区的宽度
    height :设置内容区的高度

边框(border),边框属于盒子边缘,边框里边属于盒子内部,边框外是盒子的外部

  • 要设置边框,需要至少设置三个样式;
    边框的宽度: border-width
    边框的颜色:border-color(color)
    边框的样式:border-style
  • 简写方法:border简写属性,通过该属性可以同时设置边框所有的相关样式,并且没有顺序要求
    • border: 10px red solid;
      border:-right:none; //设置四边公共效果,在设置不同边的效果
    • 除此之外四个方向都可以简写:border-top/bottom/left/right

内边距(padding),内容区和边框之间的距离是内边距一共有四个方向的内边距:padding-top/right/bottom/left

  • 内边距的设置会影响到盒子的大小
  • 背景颜色会延伸到内边距上

外边距(margin),外边距不会影响盒子可见框的大小,但是外边距会影响盒子的位置

  • margin-top:上外边距,设置一个正值,元素会向下移动
  • margin-right:默认情况下设置
  • margin-right不:会产生任何效果
  • margin-bottom:下外边距,设置一个正值,其下边的元素会向下移动
  • margin-left:左外边距,设置一个正值,元素会向右移动

水平方向布局 -水平等式

一个盒子的可见框的大小,由内容区内边距和边框共同决定, 所以在计算盒子大小时,需要将这三个区域加到一起计算

  • 元素在其父元素中水平方向的位置由以下几个属性共同决定:
    margin-left
    border-left
    padding-left
    width
    padding-right
    border-right
    margin-right
    可以设置auto的参数:margin-left、width、margin-right
    在这里插入图片描述

垂直方向布局 -overflow

在这里插入图片描述

1.1 垂直外边距重叠

在这里插入图片描述

父子解法(不完美):
1.修改父元素:pading+,height-
2.父元素添加border隔开父子元素
3.开启BFC模式,overfloat:hidden (完美) --2.1节

<style>
    .box1{
        height:300px;
        width:300px;
        background-color:aquamarine;
        overflow:hidden;
    }
            .box2{
                margin:100px;
                height:100px;
                width:100px;
                background-color: coral;
            }

</style>
<body>
    <div class="box1">
        <div class="box2"></div>
    </div>
</body>

在这里插入图片描述

1.2 行内元素的盒模型 -display -visibility

在这里插入图片描述
在这里插入图片描述

1.3 默认样式去除

http://meyerweb. com/eric/tools/css/reset/

在这里插入图片描述

1.4 还是盒子 -box

box-sizeing

在这里插入图片描述

box-shadow、outline

在这里插入图片描述

border-radius

在这里插入图片描述

1.5 水平排列 -float (脱离文档流)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.5.1导航条小练习

2.0 高度塌陷和外边距重合

2.1 高度塌陷 和 BFC模式 -overfloat:hidden

父元素不设置高度,子元素设置float:left
在这里插入图片描述
在这里插入图片描述

BFC(Block Formatting Context)块级格式化环境

  • BFc是一个css中的一个隐含的属性,可以为一个元素开启BFc 开启BFC该元素会变成一个独立的布局区域
  • 元素开启BFc后的特点:
    1.开启BFc的元素不会被浮动元素所覆盖
    2.开启BFc的元素子元素和父元素外边距不会重叠
    3.开启BFc的元素可以包含浮动的子元素
  • 可以通过一些特殊方式来开启元素的BFC:
    1、设置元素的浮动 (不推荐) :父元素设置float:left
    2、将元素设置为行内块元素(不推荐) :父元素设置display:inline-block
    3、将元素的overflow设置为一个非visible的值
    常用的方式为元素设置overflow:hidden开启其BFC以使其可以包含浮动元素

1.1节示例

2.1.1 清除浮动影响 -clear

在这里插入图片描述

2.1.2 利用clear解决高度塌陷 - 伪元素::after

原理:放置一个含有clear的div,撑起父元素,防止高度塌陷,普通写法如下。

<style>
    .box{
        border:5px solid red;
    }
    .box1{
        height:300px;
        width:300px;
        background-color:aquamarine;
        float:left;
    }
            .box2{
                height:100px;
                width:100px;
                background-color:blue;
            }
            .box-after{
                clear:both;
            }
</style>
<body>
    <div class="box">
        <div class="box1"></div>
        <div class="box-after"></div>
    </div>
</body>

进阶写法

<style>
    .box{
        border:5px solid red;
    }
    .box1{
        height:300px;
        width:300px;
        background-color:aquamarine;
        float:left;
    }
            .box2{
                height:100px;
                width:100px;
                background-color:blue;
            }
            .box::after{
                content: ""; 
                /* after添加的是行内元素,需要转换成块元素,table比block好用 */
                display:table;
                clear: both;
            }
</style>
<body>
    <div class="box">
        <div class="box1"></div>
    </div>
</body>

在这里插入图片描述

2.2 同时解决高度塌陷和外边重叠 -clearfix

<style>
    .box{
        border:3px solid red;
        height:100px;
        width:100px;
        background-color:aqua;
    }
    .box1{
        margin-top: 50px;
        height:50px;
        width:50px;
        background-color:coral;
        float:left;
    }
    .clearfix::after,
    .clearfix::before{
        content: "";
        display:table;
        clear: both;
    }
</style>
<body>
    <div class="box clearfix">
        <div class="box1"></div>
    </div>
</body>

在这里插入图片描述

3.0 定位(position)

定位是一种更加高级的布局手段
通过定位可以将元素摆放到页面的任意位置-
使用position属性来设置定位

  • 可选值:
    static:默认值,元素是静止的没有开启定位
    relative:开启元素的相对定位
    absolute:开启元素的绝对定位
    fixed:开启元素的固定定位
    sticky :开启元素的粘滞定位

3.1 相对定位 -relative

当元素的position属性值设置为relative时则开启了元素的相对定位

  • 相对定位的特点;
    1.元素开启相对定位以后,如果不设置偏移量元素不会发生任何的变化
    2.相对定位是参照于元素在文档流中的位置进行定位的
    3.相对定位会提升元素的层级
    4.相对定位不会使元素脱离文档流

    5.相对定位不会改变元素的性质块还是块行内还是行内

开启相对定位后需要试着偏移量,以产生效果:top、bottom、left、right

3.2 绝对定位(包含块) -absolute

当元素的position属性值设置为absolute时,则开启了元素的绝对定位

  • 绝对定位的特点:
    1.开启绝对定位后,如果不设置偏移量元素的位置不会发生变化
    2.开启绝对定位后,元素会从文档流中脱离
    3.绝对定位会改变元素的性质,行内变成块,块的宽高被内容撑开
    4.绝对定位会使元素提升一个层级
    5.绝对定位元素是相对于其包含块进行定位的

包含块(containing block )

  • 正常情况下: 包含块就是离当前元素最近的祖先块元素
  • 绝对定位的包含块; 包含块就是离它最近的开启了定位的祖先元素, 如果所有的祖先元素都没有开启定位则根元素就是它的包含块
  • html(根元素、初始包含块)

3.3 固定定位 -fixed

将元素的position属性设置为fixed则开启了元素的固定定位 固定定位也是一种绝对定位,所以固定定位的大部分特点都和绝对定位一样

  • 唯一不同的是:
    固定定位永远参照于浏览器的视口进行定位
    固定定位的元素不会随网页的滚动条滚动

3.4 粘滞定位

-当元素的position属性设置为sticky时则开启了元素的粘滞定位

  • 粘滞定位和相对定位的特点基本一致, 不同的是:
    粘滞定位可以在元素到达某个位置时将其固定

3.5 二维布局 -包含块等式

在开启绝对定位后,水平等式将会增加两个参数:left、right 同时,垂直等式也会生效
在这里插入图片描述
这样就可以通过简单方法实现块的二维居中:
在这里插入图片描述

3.6 元素的层级

对于开启了定位元素,可以通过z-index属性来指定元素的层级
——z-index需要一个整数作为参数,值越大元素的层级越高
——元素的层级越高越优先显示
如果元素的层级一样,则优先显示靠下的元素
祖先的元素的层级再高也不会盖住后代元素

文字选中问题

4.0 弹性盒子

开启方式 display:flex
开启前:
在这里插入图片描述
开启后:
在这里插入图片描述

4.1 flex模型

在这里插入图片描述

4.2 值

  • flex-flow:row nowrap 是 flex-direction 和 flex-wrap 的简写。
    flex-direction:row 指定了内部元素是如何在 flex 容器中布局的,定义了主轴的方向(正方向或反方向)。
    flex-warp:nowrap 指定 flex 元素单行显示还是多行显示 。如果允许换行,这个属性允许你控制行的堆叠方向。
  • flex此属性是以下CSS属性的简写
    flex-grow:设置了一个flex项主尺寸的flex增长系数。它指定了flex容器中剩余空间的多少应该分配给项目(flex增长系数)。
    flex-shrink:指定了 flex 元素的收缩规则。flex 元素仅在默认宽度之和大于容器的时候才会发生收缩,其收缩的大小是依据 flex-shrink 的值。
    flex-basis:指定了 flex 元素在主轴方向上的初始大小。如果不使用 box-sizing 改变盒模型的话,那么这个属性就决定了 flex 元素的内容盒(content-box)的尺寸。
  • 水平垂直对齐
    align-items:align-items属性将所有直接子节点上的align-self值设置为一个组。 align-self属性设置项目在其包含块中在交叉轴方向上的对齐方式。
    justify-content属性定义了浏览器之间,如何分配顺着弹性容器主轴(或者网格行轴) 的元素之间及其周围的空间。
  • 嵌套-复杂示例
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值