CSS布局(弹性盒模型)

一、弹性盒模型介绍

1、弹性盒模型介绍 — 基础知识

  弹性盒模型( Flexible Box 或 Flexbox)是一个CSS3新增布局模块,官方称为CSS Flexible Box Layout Module,用于实现容器里项目的对齐、方向、排序(即使在项目大小位置、动态生成的情况)。弹性盒模型最大的特性在于,能够动态修改子元素的宽度和高度,以满足在不同尺寸屏幕下的恰当布局。

  *弹性容器(flex container)

  *弹性子元素(flex item)

  *轴分为主轴(main axis) 侧轴(cross axis),弹性子元素沿着主轴依次排列,侧轴垂直于主轴。

  *弹性容器的主轴开始(main start)、主轴结束(main end)和侧轴开始(cross start)、侧轴结束(cross end) 代表了弹性子元素排列的起始和结束位置。

    

2、弹性盒模型介绍 — 属性分类

  (1)弹性容器属性

    

  (2)弹性子元素属性

    

3、属性详解

  (1)语法:flex-direction:row | row-reverse | column | column-reverse
  含义:设置主轴方向,确定弹性子元素排列方式

  

  

  (2)语法: flex-wrap:nowrap | wrap | wrap-reverse
    含义:设置弹性子元素超出弹性容器范围时是否换行

    

    

  (3)语法:flex-flow:[ flex-direction ] || [ flex-wrap ]
    含义:复合属性(flex-direction和flex-wrap),设置弹性子元素排列方式

  (4)语法:justify-content:flex-start | flex-end | center | space-between | space-around
    含义:设置弹性子元素主轴上的对齐方式

  

  

  (5)语法:align-items:flex-start | flex-end | center | baseline | stretch
    含义:设置弹性子元素侧轴上的对齐方式

  

  

  (6)语法:align-content:flex-start | flex-end | center | space-between | space-around | stretch
    含义:侧轴有空白且有多行时,设置弹性子元素侧轴上的对齐方式

  

  (7)语法:order:<integer>
    含义:设置弹性子元素的顺序,数值小的排在前面,可以为负值。

  (8)语法: flex-grow:<number>
    含义:设置弹性子元素的扩展比率,不允许为负值,默认值为0。 根据弹性盒子元素所设置的扩展因子作为比率来分配剩余空间

  (9)语法: flex-shrink:<number>
    含义:设置弹性子元素的收缩比率,不允许为负值,默认值为1
      根据弹性盒子元素所设置的扩展因子作为比率来收缩空间

  (10)语法 : flex-basis:<length> | <percentage> | auto

  含义 : 设置弹性子元素的伸缩基准值,不允许为负值。       默认值为auto,无特定宽度(高度)。

  (11)语法:flex:none | [ flex-grow ] || [ flex-shrink ] || [ flex-basis ]
    含义:复合属性,设置弹性子元素的如何分配空间。

  (12)语法:align-self:auto | flex-start | flex-end | center | baseline | stretch
    含义:设置弹性子元素的在侧轴上的对齐方式,与align-item的相同。设置某个弹性子元素的独立对齐方式。

  


二、Flexbox菜单项目实战

1、要求:

    大屏幕下:

  

    中屏幕下:

  

    小屏幕下:

  

2、body部分:

1 <ul class="menu">
2     <li><a href="#">HTML</a></li>
3     <li><a href="#">CSS</a></li>
4     <li><a href="#">Javascript</a></li>
5     <li><a href="#">Sass</a></li>
6     <li><a href="#">Ruby</a></li>
7     <li><a href="#">Mongo</a></li>
8 </ul>

3、css样式部分:

 1 <style>
 2         *{
 3             padding: 0;
 4             margin: 0;
 5             border: none;
 6         }
 7         html{
 8             font-size: 12px;
 9         }
10         .menu{
11             width: 100%;
12             border: 1px solid rgba(0,0,0,.1);
13             display: flex; /*激活弹性布局*/
14             flex-flow: row wrap;  /*设置主轴方向以及是否换行*/
15         }
16         .menu li{
17             list-style-type: none;
18             text-align: center;
19             height: 40px;
20             line-height: 40px;
21             flex: 1 1 100%;
22         }
23         .menu li:nth-child(1){
24             background-color: #39ADD1;
25         }
26         .menu li:nth-child(2){
27             background-color: #3079AB;
28         }
29         .menu li:nth-child(3){
30             background-color: #982551;
31         }
32         .menu li:nth-child(4){
33             background-color: #E15258;
34         }
35         .menu li:nth-child(5){
36             background-color: #CC6699;
37         }
38         .menu li:nth-child(6){
39             background-color:  #52AC43;
40         }
41         .menu a{
42             text-decoration: none;
43             color: #fff;
44             font-size: 2rem;
45         }
46          @media (max-width: 768px) {
47             .menu{
48                 flex-wrap: wrap;
49             }
50             .menu li{
51                 flex: 1 1 50%;
52             }
53          }
54           @media (max-width: 480px) {
55             .menu{
56                 flex-direction: column;
57             }
58             .menu li{
59                 flex: 1 1 100%;
60             }
61          }
62     </style>


三、媒体查询解析

1、基础知识

  响应式布局(Responsive Web design)指的是在网页开发过程中针对不同设备开发一套网站,然后根据用户行为以及设备环境(系统平台、屏幕尺寸、屏幕定向等)自适应地显示不同布 局。 响应式布局的核心是媒体查询。媒体查询( Media Query )是获取用户行为和设备环境、然后提供相应的CSS规则的过程的简称。 媒体查询让CSS可以更精确作用于不同的媒体类型和同一媒体的不同条件。

2、基础语法

  

  语法  <media_query_list>:[<media_query>[‘,‘ <media_query>]*]?  <media_query>:[only | not]? <media_type> [and <expression>]* | <expression> [and <expression>]*  <expression>:‘(‘<media_feature>[:<value>]?)’

  <表达式>: ‘(‘<媒体特征>[: <值>]?’)’  <媒体查询>: [only | not]?  <媒体类型> [and <表达式>*] | <表达式>[and <表达式>]*  <媒体查询列表>:  [<媒体查询>[,<媒体查询>]*]?

3、媒体特征

  

4、媒体类型

5、媒体查询规则

6、媒体查询解析— 屏幕尺寸

  常用的屏幕尺寸从小到大如下所示:
    *老智能机:    320px-480px
    *智能手机: ≥ 480px
    *平板电脑: ≥ 768px
    *中等屏幕(桌面显示器): ≥ 992px
    *大屏幕(大桌面显示器): ≥1200px
  实现过程中,遵循移动优先原则

时间: 2024-09-30 18:36:56

CSS布局(弹性盒模型)的相关文章

87.CSS Flex 弹性盒模型布局教程(共用的css在48篇文章gird)

CSS Flex 弹性盒模型布局教程 Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性. flex布局就是给任何一个容器添加 display:flex 注:设为 Flex 布局以后,子元素的float.clear和vertical-align属性将失效. 注:Safari 6.1+(前缀-webkit-) iOS 7.1+(前缀-webkit-)最新flex 兼容性查看请点此处 最新Flex兼容性 Flex 容器 flex contain

CSS弹性盒模型flex在布局中的应用

× 目录 [1]元素居中 [2]两端对齐 [3]底端对齐[4]输入框按钮[5]等分布局[6]自适应布局[7]悬挂布局[8]全屏布局 前面的话 前面已经详细介绍过flex弹性盒模型的基本语法和兼容写法,本文将介绍flex在布局中的应用 元素居中 [1]伸缩容器上使用主轴对齐justify-content和侧轴对齐align-items <style> .parent{ display: flex; justify-content: center; align-items: center; } &

CSS3弹性盒模型与布局

一.弹性盒模型 1.注意:在使用弹性盒模型的时候,父元素必须要加display:box 或 display:inline-box,同时要加浏览器内核前缀 Box-orient 定义盒模型的布局方向 Horizontal 水平显示 vertical 垂直方向 box-direction 元素排列顺序 Normal 正序 Reverse 反序 box-ordinal-group 设置元素的具体位置 Box-flex 定义盒子的弹性空间 子元素的尺寸=盒子的尺寸*子元素的box-flex属性值 / 所

CSS3弹性盒模型flexbox布局基础版

原文链接:http://caibaojian.com/using-flexbox.html 最近看了社区上的一些关于flexbox的很多文章,感觉都没有我这篇文章实在,最重要的兼容性问题好多人都没有提出解决方案.另外本人2014年5月还废寝忘食的翻译了国外的<CSS3弹性盒模型flexbox完整教程>和<CSS3弹性盒模型flexbox布局实例>,这么好的文章没有人来发现,实在是遗憾. 文章写作背景 查询Can I use上的使用情况,发现最新的浏览器基本支持这个属性,IE10开始

深入理解CSS弹性盒模型flex

× 目录 [1]版本更迭 [2]display [3]基本概念[4]伸缩容器[5]伸缩项目 前面的话 CSS3引入了一种新的布局模型——flex布局.flex是flexible box的缩写,一般称之为弹性盒模型.和CSS3其他属性不一样,flexbox并不是一个属性,而是一个模块,包括多个CSS3属性.flex布局提供一种更加有效的方式来进行容器内的项目布局,以适应各种类型的显示设备和各种尺寸的屏幕 版本更迭 flexbox布局的语法规范经过几年发生了很大的变化.从2007年07月,flex第

CSS弹性盒模型(flex box)

本文介绍的是 CSS3 规范中引入的新布局模型:弹性盒模型(flex box).随着响应式用户界面的流行,Web 应用一般都要求适配不同的设备尺寸和浏览器分辨率. 浏览器支持: 弹性盒布局的容器(flex container)指的是采用了弹性盒布局的 DOM 元素,而弹性盒布局的条目(flex item)指的是容器中包含的子 DOM 元素.图中的最外围的边框表示的是容器,而编号 1 和 2 的边框表示的是容器中的条目. 主轴并不固定为水平方向的 X 轴,交叉轴也不固定为垂直方向的 Y 轴.在使用

CSS3弹性盒模型,Flex布局教程

布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现. CSS3中引入flex的弹性盒模型,这是一个可以让你告别浮动.完美实现垂直水平居中的新特性. 尽管目前css3在PC端上的兼容性还不是那么完美,但是在移动端已基本实现兼容. 网络上有很多关于flex布局很好的教程.总结的也很完美,我就直接收藏了,以备查询 详解css3弹性盒模型(Flexbox) 移动端开发小记 – Flexbox

弹性盒模型(伸缩布局)

一.弹性盒模型(伸缩布局) flxible box 前言: 弹性布局,用来为盒子提供灵活性.就像是当把浏览器缩小的的时候,不会像float属性会依然往下掉,灵活性不好.而且当布局盒装模型的时候依赖于float+position+display,例如实现垂直居中就很不方便了. 一)语法 {display: flex;} /*作为块级伸缩盒子显示*/ {display: inline-flex;} /*作为内联块级伸缩盒子显示:行内的元素也能使用*/ 是不是感觉很熟悉呢?这就类似于 block 和 

页面布局1-css弹性盒模型

css3引入了新的盒模型——弹性盒模型,该模型决定一个盒子在其他盒子中的分布方式以及如何处理可用的空间.使用该模型,可以很轻松的创建自适应浏览器窗口的流动布局或自适应字体大小的弹性布局.目前box属性还没有得到firefox.chrome浏览器的完全支持,但可以使用它们的私有属性定义firefox(-moz-).chrome/safari(-webkit-).个人认为可以在手机端的webview页面中采取这样的布局.