css 弹性布局

Posted 知其黑、受其白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了css 弹性布局相关的知识,希望对你有一定的参考价值。

阅读目录

CSS flex 属性

flex 属性用于设置或检索弹性盒模型对象的子元素如何分配空间。

flex 属性是 flex-grow、flex-shrink 和 flex-basis 属性的简写属性。

注意:如果元素不是弹性盒模型对象的子元素,则 flex 属性不起作用。

让所有弹性盒模型对象的子元素都有相同的长度,且忽略它们内部的内容:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"> 
<title>菜鸟教程(runoob.com)</title>
<style> 
#main

	width:220px;
	height:300px;
	border:1px solid black;
	display:flex;


#main div

	flex:1;

</style>
</head>
<body>

<div id="main">
  <div style="background-color:coral;">红色</div>
  <div style="background-color:lightblue;">蓝色</div>  
  <div style="background-color:lightgreen;">带有更多内容的绿色 div</div>
</div>

<p><b>注意:</b> Internet Explorer 9 及更早版本不支持 flex 属性。</p>
<p><b>注意:</b> Internet Explorer 10 通过 -ms-flex 属性来支持。 IE11 及更新版本完全支持 flex 属性 (不需要 -ms- 前缀)。</p>
<p><b>注意:</b> Safari 6.1 (及更新浏览器) 通过 -webkit-flex 属性支持。</p>

</body>
</html>

一、声明定义

容器盒子里面包含着容器元素,使用 display:flexdisplay:inline-flex 声明为弹性盒子。

1 声明块级弹性盒子 display:flex

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title></title>
	<style>
        * 
            padding: 0;
            margin: 0;
        
 
        article 
            height: 150px;
            margin-left: 100px;
            margin-top: 100px;
            outline: solid 5px silver;
            display: flex;
            padding: 20px;
        
 
        article div 
            outline: solid 5px orange;
            text-align: center;
            font-size: 28px;
            line-height: 5em;
            width: 300px;
        
    </style>
</head>
<body>

	<article>
        <div>1</div>
        <div>2</div>
        <div>3</div>
    </article>
	
</body>
</html>

2 声明内联级弹性盒子 display:inline-flex

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title></title>
	<style>
        * 
            padding: 0;
            margin: 0;
        
 
        article 
            height: 150px;
            margin-left: 100px;
            margin-top: 100px;
            outline: solid 5px silver;
            display: inline-flex;
            padding: 20px;
        
 
        article div 
            outline: solid 5px orange;
            text-align: center;
            font-size: 28px;
            line-height: 5em;
            width: 300px;
        
    </style>
</head>
<body>

	<article>
        <div>1</div>
        <div>2</div>
        <div>3</div>
    </article>
	
</body>
</html>

二、flex-direction:用于控制盒子元素排列的方向

使用在 display:flex 的父容器里,改变横轴的方向:

描述
row从左到右水平排列元素(默认值)
row-reverse从右向左排列元素
column从上到下垂直排列元素
column-reverse从下到上垂直排列元素

row-reverse 从右向左排列元素

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title></title>
	<style>
	   * 
		  padding: 0;
		  margin: 0;
		
		body 
		  margin: 100px;
		  font-size: 14px;
		  color: #555;
		
		article 
		  width: 500px;
		  border: solid 5px silver;
		  display: flex;
		  box-sizing: border-box;
		  padding: 10px;
		 /* row-reverse   从右向左排列元素 */
		  flex-direction: row-reverse;
		
		article * 
		  border: solid 5px orange;
		  padding: 10px;
		  margin: 10px;
		
    </style>
</head>
<body>

	<article>
        <div>1</div>
        <div>2</div>
        <div>3</div>
    </article>
	
</body>
</html>

column-reverse 从下到上垂直排列元素

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title></title>
	<style>
		* 
          padding: 0;
          margin: 0;
        
        body 
          margin: 100px;
          font-size: 14px;
          color: #555;
        
        article 
          width: 500px;
          border: solid 5px silver;
          display: flex;
          box-sizing: border-box;
          padding: 10px;
         /* column-reverse  从下到上垂直排列元素 */
          flex-direction: column-reverse;
        
        article * 
          border: solid 5px orange;
          padding: 10px;
          margin: 10px;
        
    </style>
</head>
<body>

	<article>
        <div>1</div>
        <div>2</div>
        <div>3</div>
    </article>
	
</body>
</html>

三、flex-wrap

规定 flex 容器是单行或者多行,同时横轴的方向决定了新行堆叠的方向。

选项说明
nowrap元素不拆行或不拆列(默认值)
wrap容器元素在必要的时候拆行或拆列。
wrap-reverse容器元素在必要的时候拆行或拆列,但是以相反的顺序

行元素换行 row 、wrap

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title></title>
	<style>
		* 
            padding: 0;
            margin: 0;
            outline: solid 1px silver;
            padding: 10px;
            margin: 10px;
        
        head 
            display: block;
			background:#eee;
        
        body 
            font-size: 14px;
            color: #555;
        
        article 
            width: 500px;
            height: 250px;
            border: solid 5px silver;
            box-sizing: border-box;
            padding: 10px;
            display: flex;
            flex-direction: row;
            flex-wrap: wrap;
        
        article div 
            border: solid 5px orange;
            padding: 30px 80px;
            margin: 10px;
            text-align: center;
            font-size: 28px;
        
    </style>
</head>
<body>

	<article>
        <div>1</div>
        <div>2</div>
        <div>3</div>
    </article>
	
</body>
</html>

水平排列反向换行 row 、wrap-reverse

flex-direction: row;
flex-wrap: wrap-reverse;

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title></title>
	<style>
		* 
            padding: 0;
            margin: 0;
            outline: solid 1px silver;
            padding: 10px;
            margin: 10px;
        
        head 
            display: block;
			background:#eee;
        
        body 
            font-size: 14px;
            color: #555;
        
        article 
            width: 500px;
            height: 250px;
            border: solid 5px silver;
            box-sizing: border-box;
            padding: 10px;
            display: flex;
            flex-direction: row;
			flex-wrap: wrap-reverse;
        
        article div 
            border: solid 5px orange;
            padding: 30px 80px;
            margin: 10px;
            text-align: center;
            font-size: 28px;
        
    </style>
</head>
<body>

	<article>
        <div>1</div>
        <div>2</div>
        <div>3</div>
    </article>
	
</body>
</html>

垂直元素换行 column 、wrap

flex-direction: column;
flex-wrap: wrap;

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title></title>
	<style>
		* 
            padding: 0;
            margin: 0;
            outline: solid 1px silver;
            padding: 10px;
            margin: 10px;
        
        head 
            display: block;
			background:#eee;
        
        body 
            font-size: 14px;
            color: #555;
        
        article 
            width: 500px;
            height: 350px;
            border: solid 5px silver;
            box-sizing: border-box;
            padding: 10px;
            display: flex;
            flex-direction: column;
			flex-wrap: wrap;
        
        article div 
            border: solid 5px orange;
            padding: 30px 80px;
            margin: 10px;
            text-align: center;
            font-size: 28px;
        
    </style>
</head>
<body>

	<article>
        <div>1</div>
        <div>2</div>
        <div>3</div>
    </article>
	
</body>
</html>

垂直元素反向换行 column wrap-reverse

flex-direction: column;
flex-wrap: wrap-reverse;

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title></title>
	<style>
		* 
            padding: 0;
            margin: 0;
            outline: solid 1px silver;
            padding: 10px;
            margin: 10px;
        
        head 
            display: block;
			background:#eee;
        
        body 
            font-size: 14px;
            color: #555;
        
        article 
            width: 500px;
            height: 350px;
            border: solid 5px silver;
            box-sizing: border-box;
            padding: 10px;
            display: flex;
            flex-direction: column;
			flex-wrap: wrap-reve

以上是关于css 弹性布局的主要内容,如果未能解决你的问题,请参考以下文章

div+css3弹性盒子(flex box)布局

前端CSS3——Flex弹性布局详解

web前端入门到实战:html/css弹性布局的几大常用属性详解

web前端入门到实战:html/css弹性布局的几大常用属性详解

CSS3弹性盒子布局(display:flex)

CSS3/ 弹性布局flex