css3 flex 实现常见页面布局

六眼飞鱼酱① 提交于 2019-12-10 21:34:39

css3 flex 实现常见页面布局

Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。
任何一个容器都可以指定为Flex布局。
.box{display:flex;}
行内元素也可以使用Flex布局。
.box{display:inline-flex;}
Webkit内核的浏览器,必须加上-webkit前缀。
.box{display:-webkit-flex;/* Safari */display:flex;}
注意,设为Flex布局以后,子元素的float、clear和vertical-align属性将失效。

上中下布局

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="utf-8">
	<title>flex 布局</title>
	<style type="text/css">
		*{
			padding:0;
			margin:0;
		}
		header{  		
			height:200px;
  			background:#C4DFEB;
		}
		footer{
  			height:200px;
  			background:pink;
		}
		.container{
  			display:flex;
  			display: -webkit-flex;
  			flex-direction:column;
  			height:100vh;
		}
		main{
			flex-grow:1;
		}
	</style>
</head>
<body>
	<div class="container">
     	<header>header</header>
     	<main>main</main>
     	<footer>footer</footer>
   </div>
</body>
</html>

在这里插入图片描述
(1)flex-direction:column;使整体布局从上到下排列

(2)flex-grow:1;使main元素填充剩余空间。

左中右三列布局

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
    <title>flex 布局</title>
  <style> 
    *{
      padding:0;
      margin:0;
    }
    body,html{
      width: 100%;
      height: 100vh;
      min-width: 800px;
    } 
    .container{
      width: 100%;
      height: 100vh;
      display:flex;
      display: -webkit-flex; /* Safari */
      flex-direction: row;
    }
    .container>.left,.right{
      width: 200px;
      height: 100vh;
      background-color: #ccc;
    }
    .container>.item{
      flex:1; 
      height:100%;
      background: #abcdef;
    }
  </style>
</head>
<body>
  <div class="container">  
    <div class="left">left</div>
    <main class="item">main</main>
    <div class="right">right</div>
  </div>
</body>
</html>

flex-direction:row;使整体布局从左到右排列
在这里插入图片描述

圣杯布局

圣杯布局格式要求:

页面从上到下为头部、中部、脚部;头部、脚部定高,不可伸缩;中部高度自适应。

中部三列式布局:左右两列定宽,不可伸缩;中间内容区自适应。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
    <title>flex 布局</title>
  <style> 
    *{
      padding:0;
      margin:0;
    }
    body,html{
      height: 100vh;
      display:flex;
      /* 改变主轴的排列方式 */
      flex-direction: column;/*布局从上向下*/
      min-width: 800px;
    } 
    header,footer{
      display: flex;
      display: -webkit-flex; /* Safari */
      background: #ccc;
      width: 100%;
      height: 100px;
      justify-content: center;/*水平居中*/
      align-items: center;/*垂直居中*/
    }
    .container{
        /* 
        flex:1指的是:中部区域自由伸缩
        */
      flex:1;
      display: flex;
    }
    .container>.left{
      flex:0 0 150px;/* 左右两列固定宽 */  
    }
    .container .content{
      flex: 10;
      background: pink;
    }
    .container>.right{
      flex:0 0 150px;/* 左右两列固定宽 */
    }
  </style>
</head>
<body>
  <header> <p>Header</p> </header>
  <div class="container">  
    <div class="left"></div>
    <main class="content"></main>
    <div class="right"></div>
  </div>
  <footer> <p>Footer</p> </footer>
</body>
</html>

在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!