flex 布局

目前越来越多的浏览器都已经支持使用flex来,进行布局了。当然使用flex布局可以解决很多传统布局方式带来的问题,比如居中问题。

这里有阮一峰老师的中文教程:

http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html?utm_source=tuicool  语法篇

http://www.ruanyifeng.com/blog/2015/07/flex-examples.html?bsh_bid=683103006  实战篇

以及一篇英文文档

http://tympanus.net/codrops/css_reference/flexbox/

几个注意点:

1当我们使用了flex布局以后,那么在传统的div盒子布局中的一些属性就会失去作用,比如浮动,columns,clearvertical-align。

2 使用order时,网页中呈现的布局顺序和代码顺序不同,所以当使用屏幕阅读器等等时,读到的还是源代码中的顺序。可能翻译不太正确。原文在此

Note that the order in which the flex item appears inside its container changes only on screen, not in the source document. This means that screen readers will read the flex items in the order they appear in the document source, not the order specified using the order property.

常见用法:

1 水平垂直居中

.container {
    display: flex;
    align-items: center;
    justify-content: center;
}

2 圣杯布局

    <div class="container">
            <header></header>
            <article>
                <nav></nav>
                <article></article>
                <aside></aside>
            </article>
            <footer></footer>
        </div>
.container {
  height: 100vh;
  border: 1px solid #e5e5e5;
  display: flex;
  flex-direction: column; }
  .container header {
    flex-basis: 20%;
    background: yellow; }
  .container article {
    flex-basis: 60%;
    background: green;
    display: flex; }
    .container article nav {
      flex-basis: 20%;
      background: red;
      order: 3; }
    .container article article {
      flex-basis: 60%;
      background: purple;
      order: 2; }
    .container article aside {
      flex-basis: 20%;
      background: blue;
      order: 1; }
  .container footer {
    flex-basis: 20%;
    background: gray; }

尤其是配上使用vh视窗高度,自适应不仅是宽度,高度也会自适应。

当然也可以做成响应式,利用flex-direction:column改变主轴方向

@media screen and (max-width: 430px) {
    .navigation {
        flex-direction: column;

    }
}

3  使footer始终在底部,有时我们的内容主体部分较短时,位于底部的内容就会上浮,这不是我们想看到的,类似下图。当然我们可以通过js的方法来实现,但是我们更希望能不借助js,就不借助js。

<body>
    <header><!-- header stuff --></header>
    <section class="content"><!-- main content --></section>
    <footer><!-- footer stuff --></footer>
</body>
body {
    display: flex;
    /* 视窗高度 */
    min-height: 100vh;
    /* 改变主轴方向 */
    flex-direction: column;
}
section.content {
    flex-grow: 1;
}
时间: 2024-08-05 19:33:59

flex 布局的相关文章

flex布局

一.Flex布局是什么? Flex是Flexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性. 任何一个容器都可以指定为Flex布局. .box{ display: flex; } 行内元素也可以使用Flex布局. .box{ display: inline-flex; } Webkit内核的浏览器,必须加上-webkit前缀. .box{ display: -webkit-flex; /* Safari */ display: flex; } 注意,设为Fle

FLEX布局的一些问题和解决方法

前言 露珠最近研究了一下flex的布局方式,发现项w3c推出的这套布局解决方案对于日益复杂的前端开发布局来说是确实是一利器,并且在不同的屏幕上实现了真正的响应式布局:不再单纯地依赖百分比和float的强拼硬凑来达到设计需求,在各个屏幕上显示效果友好,弹性的伸缩元素,简洁易维护的代码.只可惜,这位老兄有一位致命的缺点----除了chrome外几乎所有手机上浏览器都没有兼容它!!,或者支持程度大不一样!这样开发人员头疼的问题就来了,刚刚在手机上忽略掉IE这个强盗的兼容问题,又来一个?!.flex的优

CSS3布局之flex布局效果

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> *{ margin: 0; padding: 0; } .container{ width: 1000px; margin:0 auto; } he

flex布局帮助你快速实现布局

flex布局可以帮我们快速布局一些区块,实现你想要的效果,不用再去float,position之类的.我们在布局网页的时候很多时候都是一些特殊布局,flex就能帮我快速去布局,不需要去定位. 任何一个盒子都可以指定为flex布局,但是要注意,设为 Flex 布局以后,子元素的float.clear和vertical-align属性将失效. 下面我们看看我们网站经常遇到实例:我们要让图片,文字居中并且都贴底部布局,以往的经验会,父容器设置text-align:center,但是垂直方向就很繁琐了,

flex 布局教程

网页布局(layout)是 CSS 的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现. 2009年,W3C 提出了一种新的方案----Flex 布局,可以简便.完整.响应式地实现各种页面布局.目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能. Flex 布局将成为未来布局的首选方案.本文介绍它的语法,下一篇文章给出常见布局的 Flex 写

Flex布局新写法兼容写法详解

很久之前用过flex,但是没有考虑过兼容性问题,为了兼容ios一定要加上-webkit前缀: ul{ display: flex; /* 新版本语法: Opera 12.1, Firefox 22+ */ display: -webkit-flex; } li{ flex:1 0 auto; -webkit-flex:1 0 auto; 合并写法,不缩放宽度 flex-shink = 0 } 注意:用过flex布局后,子元素的float,position都没有效了 flex布局教程参考网址,非常

浅谈flex布局

Flex布局,俗称弹性布局,有了这个布局,咱们做的事情很多,以前那些很难实现比如说垂直居中之类都不存在了. 盒模型布局依赖于float,display,定位之类的方式来布局,这种的布局对一些特殊布局来说很不方便,就如上面的垂直居中就不太好实现. 现在就让我来介绍一个Flex布局方式 他中的一些属性: flex-direction flex-wrap flex-flow justify-content align-items align-content 在这里,声明一点,使用了display:fl

flex布局学习(二)

flex布局解决了几个问题 1 margin重叠问题 例如 .item{border: 1px solid green;margin: 30px;} <div style="border: 1px solid red;"> <div class="item"> margin重叠为 </div> <div class="item"> 2 </div> <div class="

flex布局中flex-basis|flex-grow|flex-shrink

flex布局中flex-basis|flex-grow|flex-shrink flex-grow.flex-shrink.flex-basis这三个属性的作用是:在flex布局中,父元素在不同宽度下,子元素是如何分配父元素的空间的. 其中,这三个属性都是在子元素上设置的.注:下面讲的父元素,指以flex布局的元素(display:flex). flex-basis 该属性来设置该元素的宽度.当然,width也可以用来设置元素宽度.如果元素上同时设置了width和flex-basis,那么fle

css3的flex布局

今天看到百度前端学院有关于flex布局方面的内容,就看了下flex布局,顺便做下总结,方便自己以后看.内容大概分几个方面,一.flex布局的好处以及应用场景:二.原理:三.基本内容:四.demo: 一.flex布局的好处以及应用场景: flex好处就是灵活方便,大多应用在移动端,pc端由于兼容问题应用不太广泛. 二.原理: 说到原理说神马呢?先说下常见的布局吧:一.固定布局:就是宽高都固定的那种,width:500px;height:100px;二.流体式布局:width:100%;height