小码哥的IT人生

CSS flex 属性 详解

css3基础 2022-07-14 16:27:11小码哥的IT人生shichen

CSS flex 属性

定义和用法

flex 是以下属性的简写属性:

  1. flex-grow
  2. flex-shrink
  3. flex-basis

flex 设置的是弹性项目的弹性长度。

注释:如果元素不是弹性项目,则 flex 属性无效。

另请参阅:

CSS 教程: CSS 弹性框

CSS 参考手册:flex-basis 属性

CSS 参考手册:flex-direction 属性

CSS 参考手册:flex-flow 属性

CSS 参考手册:flex-grow 属性

CSS 参考手册:flex-shrink 属性

CSS 参考手册:flex-wrap 属性

HTML DOM 参考手册:flex 属性

实例

不管其内容如何,使所有弹性项目的长度均相同:

#main div {
  -ms-flex: 1; /* IE 10 */
  flex: 1;
}

 

完整实例【亲自试一试】:

<!DOCTYPE html>
<html>
<head>
<style>
div {
  width: 300px;
  height: 100px;
  background-color: yellow;
  border: 1px solid black;
  -ms-transform: translate(50px,100px); /* IE 9 */
  transform: translate(50px,100px); /* 标准语法 */
}
</style>
</head>
<body>
<h1>translate() 方法</h1>
<p>translate() 方法从元素当前位置对其进行移动:</p>
<div>
该 div 元素从其当前位置向右移动 50 个像素,并向下移动 100 个像素。
</div>
</body>
</html>

可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html

CSS 语法

flex: flex-grow flex-shrink flex-basis|auto|initial|inherit;

属性值

描述
flex-grow 数字,规定项目相对于其余弹性项目的增长量。
flex-shrink 数字,规定项目相对于其余弹性项目的收缩量。
flex-basis

项目的长度。

合法值:"auto"、"inherit",或单位为 "%", "px", "em" 的值,或任何其他长度单位。

auto 等同于 1 1 auto。
initial 等同于 0 1 auto。参阅 initial
none 等同于 0 0 auto。
inherit 从其父元素继承该属性。参阅 inherit

技术细节

默认值: 0 1 auto
继承:
动画制作: 支持。请查看单独的属性。请参阅:动画相关属性
版本: CSS3
JavaScript 语法: object.style.flex="1"

更多实例

结合使用 flex 和媒体查询为不同的屏幕尺寸/设备创建不同的布局:

.flex-container {
  display: flex;
  flex-wrap: wrap;
}
.flex-item-left {
  flex: 50%;
}
.flex-item-right {
  flex: 50%;
}
/* 响应式布局 - 制作单列布局(100%)而不是两列布局(50%) */
@media (max-width: 800px) {
  .flex-item-right, .flex-item-left {
    flex: 100%;
  }
}

 

完整实例【亲自试一试】:

<!DOCTYPE html>
<html>
<head>
<style>
* {
  box-sizing: border-box;
}
.flex-container {
  display: flex;
  flex-wrap: wrap;
  font-size: 30px;
  text-align: center;
}
.flex-item-left {
  background-color: #f1f1f1;
  padding: 10px;
  flex: 50%;
}
.flex-item-right {
  background-color: dodgerblue;
  padding: 10px;
  flex: 50%;
}
/* 响应式布局 - 制作一列布局而不是两列布局 */
@media (max-width: 800px) {
  .flex-item-right, .flex-item-left {
    flex: 100%;
  }
}
</style>
</head>
<body>
<h1>响应式弹性框</h1>
<p>在此例中,我们修改了 flex 的百分比,以针对不同的屏幕尺寸创建不同的布局。</p>
<p><b>请调整浏览器窗口的大小,来查看小于或等于 800 像素时的方向改变。</b></p>
<div class="flex-container">
  <div class="flex-item-left">1</div>
  <div class="flex-item-right">2</div>
</div>
</body>
</html>

可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html

浏览器支持

表格中的数字注明了完全支持该属性的首个浏览器版本。

带 -webkit-、-ms- 或 -moz- 的数字表示使用前缀的首个版本。

Chrome IE / Edge Firefox Safari Opera
29.0
21.0 -webkit-
11.0
10.0 -ms-
28.0
18.0 -moz-
9.0
6.1 -webkit-
17.0

版权所有 © 小码哥的IT人生
Copyright © phpcodeweb All Rights Reserved
ICP备案号:苏ICP备17019232号-2  

苏公网安备 32030202000762号

© 2021-2024