CSS布局

CSS布局

    • 两栏布局
    • 三栏布局
    • 五栏布局
    • 多列布局
    • 弹性盒
    • 网格布局
        • 行列划分方式:
    • rem布局
    • vw和vh
    • 响应式布局

两栏布局

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>两栏布局title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
		
		/*窗口自适应*/
        html,body {
            width: 100%;
            height: 100%;
        }

		/*左栏*/
        .box1 {
            width: 200px;
            height: 100%;
            background-color: pink;
            float: left;
        }

		/*右栏*/
        .box2 {
            height: 100%;
            background-color: yellow;
            width: calc(100% - 200px);
            float: left;
        }
    style>
head>
<body>
    <div class="box1">div>
    <div class="box2">div>
body>

效果:
CSS布局_第1张图片

三栏布局

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>三栏布局title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        html,body {
            width: 100%;
            height: 100%;
        }

        .left {
            width: 200px;
            height: 100%;
            background-color: pink;
            float: left;
        }

        .right {
            width: 200px;
            height: 100%;
            background-color: yellow;
            float: left;
        }

        .center {
            width: calc(100% - 400px);
            height: 100%;
            background-color: green;
            float: left;
        }
    style>
head>
<body>
    <div class="left">div>
    <div class="center">div>
    <div class="right">div>
body>

效果:
CSS布局_第2张图片

五栏布局

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>三栏布局title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        html,body {
            width: 100%;
            height: 100%;
        }

        .header {
            height: 100px;
            background-color: pink;
        }

        .footer {
            height: 100px;
            background-color: green;
        }

        .body {
            height: calc(100% - 200px);
        }

        .left {
            width: 200px;
            height: 100%;
            float: left;
            background-color: yellow;
        }

        .right {
            width: 200px;
            height: 100%;
            float: left;
            background-color: blue;
        }

        .center {
            width: calc(100% - 400px);
            height: 100%;
            float: left;
            background-color: red;
        }
    style>
head>
<body>
    <div class="header">div>
    <div class="body">
        <div class="left">div>
        <div class="center">div>
        <div class="right">div>
    div>
    <div class="footer">div>
body>

效果:
CSS布局_第3张图片

多列布局

适用于海报,文档,新闻等布局

属性名称 中文释义 备注
column-count 列数(默认列宽等分)
column-gap 设置列间距
column-rule 设置列边框
column-fill 设置列高度 balance:默认值,每个列均分
auto:由左往右先把第一个列占满,依次往后
column-width 调整列宽,可能会导致column-count失效
column-span 作用在子元素身上,横跨列 none:不横跨列
all:横跨所有列
break-inside 设置折行 avoid:禁止折行

弹性盒

  • ⭐作用:一种布局方式,用于排列子元素(只会影响子元素,不会影响所有的后代元素)
  • ⭐影响:
    1. 默认使得子元素横向排列,如果子元素过多,则子元素默认不会折行显示,而是会压缩子元素盒子的宽高
    2. 子元素中行内元素会转换为块级元素
    3. 单个子元素时,使用margin:auto;可以实现盒子水平和垂直居中
    4. 在不设置侧轴对齐方式和折行的对齐方式以及自定义侧轴对齐方式的情况下,子元素测轴所在的大小默认是父盒子的100%
  • ⭐属性:
    • display:flex;开启弹性盒布局
    • flex-direction设置主轴排列方式(重点,后面的属性都是围绕主轴去设置的)
      • row主轴水平排列
      • column主轴垂直排列
      • row-reverse主轴水平反向排列
      • column-reverse主轴垂直反向排列
    • justify-content设置(主轴)的对齐方式
      • flex-start按照默认对齐方式对齐(默认值)
      • flex-end按照默认对齐方式反方向对齐
      • center居中对齐(注意:这里是居主轴中间对齐)
      • space-between两端对齐,各子元素之间外边距平分
      • space-around各子元素之间平分间距,两端留各子元素间距的一半
      • space-evenly两端和各子元素之间平分间距
    • align-items设置(侧轴)的对齐方式
      • flex-start按照默认对齐方式对齐(默认值)
      • flex-end按照默认对齐方式反方向对齐
      • center居中对齐(注意:这里是居测轴中间对齐)
    • flex-wrap: wrap;设置折行显示,弹性盒子默认不会折行显示,当子元素宽高总和超过弹性盒子的大小时,会压缩子元素盒子的大小
    • align-content设置折行的对齐方式(折行对齐方式参照的是副轴)
      • flex-start紧贴对齐
      • flex-endflex-start对齐反向
      • center紧贴居中对齐(注意:这里是居测轴中间对齐)
      • space-between两端对齐,各子元素之间外边距平分
      • space-around各子元素之间平分间距,两端留各子元素间距的一半
      • space-evenly两端和各子元素之间平分间距
    • align-self单独设置子元素的侧轴对齐方式(注意:使用此对齐方式后,父元素设置的侧轴对齐方式都会失效,子元素盒子也不能做到默认在侧轴上沾满100%
      • flex-start
      • flex-end
      • center
    • flex分配容器剩余空间的大小,按份数分配
    • order设置子元素的排列顺序,默认都是0,值越大越往后,值越小越往前
    • flex-shrink:0;作用在子盒子生上, 弹性盒子默认情况下当子盒子的宽度和大于父盒子的时候,会挤压子盒子的宽度,在子盒子身上加以下属性可以设置子盒子不挤压

网格布局

网格布局必要条件:必须设置父盒子的宽高或者知道布局的行数与列数以及子盒子的宽高

属性名称 中文释义 备注
display 开启网格布局,当容器设置了网格布局,行内元素会转换为块级元素 grid
inline-grid
grid-template-rows 设置行布局 固定值方式
百分比方式
repeat函数
repeat函数 auto-fill
fr片段
minmax函数
auto
grid-template-columns 设置列布局
grid-column-start 起始列网格线 用于合并单元格,从上往下第一条线为1开始数
grid-column-end 结束列网格线 用于合并单元格,从上往下第一条线为1开始数
grid-column 合并单元格 相当于grid-column-start/grid-column-end
grid-row-start 合并单元格 起始列网格线,从左往右第一条线为1开始数
grid-row-end 合并单元格 结束列网格线,从左往右第一条线为1开始数
grid-row 合并单元格 相当于grid-row-start/grid-row-end
row-gap 单元格间距 设置横间距
column-gap 单元格间距 设置列间距
gap 单元格间距 相当于row-gap column-gap
grid-template-areas 合并单元格 设置单元格名称,当两个单元格名字一致的时候,表示合并这两个单元格,作用在父元素上,一般配合属性grid-area使用(注意:单元格合并不能合并成不规则的图形,只能合并成矩形或者正方形)
grid-area 合并单元格 设置子元素所占据的单元格的名称,作用在子元素上,一般配合属性grid-template-areas使用
grid-auto-flow 单元格的对齐方式 设置主轴
row 水平主轴
column垂直主轴
justify-content 单元格的对齐方式 主轴对齐方式
flex-start:按照默认对齐方式对齐(默认值)
flex-end:按照默认对齐方式反方向对齐
center:居中对齐(注意:这里是居主轴中间对齐)
space-between:两端对齐,各子元素之间外边距平分
space-around:各子元素之间平分间距,两端留各子元素间距的一半
space-evenly:两端和各子元素之间平分间距
stretch:在子元素不设置宽高的情况下,使得子元素平均分配铺满整个容器
align-content 单元格的对齐方式 侧轴对齐方式
place-content 单元格的对齐方式 相当于justify-content align-content
justify-items 单元格内部内容的对齐方式 水平对齐方式
align-items 单元格内部内容的对齐方式 垂直对齐方式
place-items 单元格内部内容的对齐方式 相当于justify-items align-items
行列划分方式:
  1. ⭐固定值(超过容器的宽度或高度,则会溢出容器,不会被容器挤压,与flex布局不同)
  2. ⭐百分比
  3. repeat函数
    • 参数1:参数2重复次数平铺开来,可以使用auto-fill(根据容器的大小和参数2的大小去自动计算重复次数,不会溢出盒子之外,只有可能不能铺满容器)
    • 参数2:固定值或百分比
  4. fr片段,相当于flex:1,但是fr是设置在容器上的,而flex:1是设置在项目上的
  5. minmax函数,根据【剩余空间大小】和【最大最小值】确定大小
    • 参数1:最小值
    • 参数2:最大值
  6. auto
    自动填充剩余空间

rem布局

  • em相对于父盒子的字体大小
  • rem相对于根元素的盒子的字体大小,即root-em,简称rem

vw和vh

  • vwview-width:可视窗口的宽度单位,100vw就是整个可视窗口的宽度
  • vhview-height:可视窗口的高度单位,100vh就是整个可视窗口的高度
    可以使用vwvh单位替换rem布局中的js代码,设置基础的font-size的值
  • vw100%的区别
    • vw:是包含滚动条的,因为滚动条也属于可视区域
    • 100%不包含滚动条,剩余空间沾满

响应式布局

你可能感兴趣的:(CSS,css,前端)