CSS3 flexbox弹性布局实例

常用例子

1.居中对齐

<!DOCTYPE html>

<head>
    <meta charset="utf-8">

    <style type="text/css">
        .flex-container{
            padding:0;
            margin:0;
            list-style:none;
            display:-webkit-box;
            display:-moz-box;
            display:-ms-flexbox;
            display:-webkit-flex;
            display:flex;
            -webkit-flex-flow:row nowrap;
            justify-content:space-around;
        }
        .flex-item{
            background:tomato;
            padding:5px;
            width:200px;
            height:150px;
            margin-top:10px;
            line-height:150px;
            color:white;
            font-weight:bold;
            font-size:3em;
            text-align:center
        }

    </style>
</head>
<body>
<ul class="flex-container">
   <li class="flex-item">1</li>
    <li class="flex-item">2</li>
    <li class="flex-item">3</li>
    <li class="flex-item">4</li>
    <li class="flex-item">5</li>
    <li class="flex-item">6</li>

</ul>
</body>
</html>

效果:

2.自适应导航

<!DOCTYPE html>

<head>
    <meta charset="utf-8">

    <style type="text/css">
        .navigation{
            list-style:none;
            margin:0;
            background:deepskyblue;
            display:-webkit-box;
            display:-moz-box;
            display:-ms-flexbox;
            display:-webkit-flex;
            display:flex;
            -webkit-flex-flow:row wrap;
            justify-content:flex-end
        }
        .navigation a{
            text-decoration:none;
            display:block;
            padding:1em;
            color:white
        }
        .navigation a:hover{
            background:#00AEE8
        }
        @media all and (max-width:800px){
            .navigation{justify-content:space-around}
        }
        @media all and (max-width:600px){
            .navigation{
                -webkit-flex-flow:column wrap;
                padding:0
            }
            .navigation a{
                text-align:center;
                padding:10px;
                border-top:1px solid rgba(255,255,255,0.3);
                border-bottom:1px solid rgba(0,0,0,0.1)}
            .navigation li:last-of-type a{border-bottom:none}
        }

    </style>
</head>
<body>
<ul class="navigation">
    <li><a href="#">Home</a></li>
    <li><a href="#">About</a></li>
    <li><a href="#">Products</a></li>
    <li><a href="#">Contact</a></li>
</ul>
</body>
</html>

  效果:

/* Large */
.navigation {
  display: flex;
  flex-flow: row wrap;
  /* This aligns items to the end line on main-axis */
  justify-content: flex-end;
}

/* Medium screens */
@media all and (max-width: 800px) {
  .navigation {
    /* When on medium sized screens, we center it by evenly distributing empty space around items */
    justify-content: space-around;
  }
}

/* Small screens */
@media all and (max-width: 500px) {
  .navigation {
    /* On small screens, we are no longer using row direction but column */
    flex-direction: column;
  }
}

3.常见3栏移动优先布局

  • 设置子元素从左到右,超出换行(flex-flow:row wrap;)。
  • 默认情况下所有子元素拓展比例为1(flex-grow:1),伸缩比例为100%(flex-basis:100%)。
  • 大于800px时,.main的拓展比例为2.伸缩值为0(flex-basis:0px),并且侧栏aside-1排列在第一位,main在第二位,aside-2在第三位。
  • 大于600时。.aside元素的拓展比例为1(flex-grow:1),伸缩比例为auto(flex-basis:auto)。
<!DOCTYPE html>

<head>
    <meta charset="utf-8">

    <style type="text/css">
        .wrapper{
            display:-webkit-box;
            display:-moz-box;
            display:-ms-flexbox;
            display:-webkit-flex;
            display:flex;
            -webkit-flex-flow:row wrap;
            font-weight:bold;
            text-align:center
        }
        .wrapper > *{padding:10px;flex:1 100%}
        .header{background:tomato}
        .footer{background:lightgreen}
        .main{text-align:left;background:deepskyblue}
        .aside-1{background:gold}
        .aside-2{background:hotpink}
        @media all and (min-width:600px){.aside{flex:1 auto}
        }         @media all and (min-width:800px){.main{flex:2 0px}
            .aside-1{order:1}
            .main{order:2}
            .aside-2{order:3}
            .footer{order:4}
        }

    </style>
</head>
<body>
<div class="wrapper">
    <header class="header">Header</header>
    <article class="main">
        <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>
    </article>
    <aside class="aside aside-1">Aside 1</aside>
    <aside class="aside aside-2">Aside 2</aside>
    <footer class="footer">Footer</footer>
</div>
</body>
</html>

  效果:

垂直居中对齐

<!DOCTYPE html>

<head>
    <meta charset="utf-8">

    <style type="text/css">
        著作权归作者所有。
        商业转载请联系作者获得授权,非商业转载请注明出处。
        链接:http://caibaojian.com/flexbox-example.html
                                 来源:http://caibaojian.com

                                           body {
                                               display: -webkit-flex;
                                               display: flex;
                                               flex-flow: column;

                                               -webkit-align-items: center;
                                               align-items: center;
                                               -webkit-justify-content: center;
                                               justify-content: center;

                                               width: 100%;
                                               height: 100%;
                                               background: lightgrey;
                                           }

        .content {
            /* also making content into a flex box so we can also vertically center its content */
            display: -webkit-flex;
            display: flex;
            -webkit-flex-flow: column;
            flex-flow: column;

            -webkit-justify-content: center;
            justify-content: center;
            text-align: center;

            width: 250px;
            height: 250px;
            padding: 7px;

            background: yellow;
        }

    </style>
</head>
<body>
<form>
    <body>
    <div class="content">
        <p>It is extremely difficult to vertically align content using traditional CSS without knowing exactly where you want the item to appear.
            </p>
    </div>
    </body>
</form>
</body>
</html>

博客帖子的典型页面布局

<!DOCTYPE html>

<head>
    <meta charset="utf-8">

    <style type="text/css">
        .post {
            display: flex;
            flex-flow: column wrap;
        }
        .post-meta {
            display: flex;
            flex-flow: row wrap;
            order: 1;
        }
        .post-body {
            order: 3;
        }
        .post-comments {
            order: 4;
        }
        .comments-count {
            margin-left: auto;
        }
        .post-image {
            order: 2;
            align-self: center;
        }

    </style>
</head>
<body>
<div class="post">
    <h1>This is my first blog post</h1>
    <div class="post-meta">
        <div class="author">Alex Cheng</div>
        <div class="datetime">2014-07-02 10:10 am</div>
        <div class="comments-count">2 comments</div>
    </div>
    <div class="post-body">
        My first blog post.

    </div>
    <div class="post-image">
        <img src="http://placehold.it/500x200&text=1">
    </div>
    <div class="post-comments">
        <h3>Comments</h3>
        <ul>

            <li><div class="author">Bob</div><div>This is a good post.</div></li>
            <li><div class="autho">David</div><div>Good post.</div></li>

        </ul>
    </div>
</div>
</body>
</html>

2017-08-23     23:25:48

时间: 2024-10-28 20:17:39

CSS3 flexbox弹性布局实例的相关文章

CSS3 Flexbox 弹性布局

Flex是Flexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性.任何一个容器都可以指定为Flex布局.2009年,W3C提出了一种新的方案----Flex布局,可以简便.完整.响应式地实现各种页面布局.目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能. 1.先看一下这些属性对应的值 display: flex |  inline-flex; flex-direction: row | row-reverse | column | c

css3 flexBox 弹性布局 记录

在传统的css布局,都是依赖于position,float,dosplay进行.在一些特定的布局的实现上往往很不方便,比如一个元素的垂直居中.鉴于这种关系,2009年,W3C 提出了一种新的方案----Flex 布局,可以简便.完整.响应式地实现各种页面布局.目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能. 首先让我们明白在flex中什么是容器,什么是元素 <div>//容器 <div></div>//元素 <span></

CSS3中的Flexbox弹性布局(二)

flexbox详解 flexbox的出现是为了解决复杂的web布局,因为这种布局方式很灵活.容器的子元素可以任意方向进行排列.此属性目前处于非正式标准. flex布局模型不同于块和内联模型布局,块和内联模型的布局计算依赖于块和内联的流方向,而flex布局依赖于flex directions.简单的说:Flexbox是布局模块,而不是一个简单的属性,它包含父元素(flex container)和子元素(flex items)的属性. 属性解析 链接:https://cruxf.github.io/

CSS3之弹性布局

flexbox是CSS3提出的页面布局模块.flexbox可以把列表横向或者纵向排列,并且填满可以延伸到的空间.稍微复杂的布局可以通过嵌套flex container来实现. 利用flexbox可以方便的创建弹性布局,这使得在移动设备上,可以让元素在容器内扩展和收缩,更容易的实现常见布局,如三列布局. 弹性容器和弹性块 一个flex container中包含了left content right三个弹性块. 可以设置display为flex让块变为弹性块. 可以设置flex-flow来确定弹性块

flexbox弹性布局

flexbox的核心是自适应动态变化的弹性布局 伸缩布局盒模型和术语 主轴main axis:Flex容器的主轴主要用来配置Flex项目.注意,它不一定是水平,这主要取决于flex-direction属性.main-start | main-end:Flex项目的配置从容器的主轴起点边开始,往主轴终点边结束.main size:Flex项目的在主轴方向的宽度或高度就是项目的主轴长度,Flex项目的主轴长度属性是width或height属性,由哪一个对着主轴方向决定. 侧轴cross axis:与

CSS3 -- FlexBox(弹性盒子)

盒子模型 CSS中有一种基础设计模式叫盒模型,盒模型定义了Web页面中的元素如何来解析. 在盒模型中主要包括width.height.border.background.padding和margin这些属性,而且他们之间的层次关系可以相互影响. w3c的标准盒子模型 和 IE的传统盒子模型的区别 标准 w3c 盒子模型的范围包括 margin.border.padding.content,并且 content 部分不包含其他部分. 和标准 w3c 盒子模型不同的是:ie 盒子模型的 conten

【repost】CSS3弹性布局

本文导读:在CSS 3中,CSS Flexible Box模块为一个非常重要的模块,该模块用于以非常灵活的方式实现页面布局处理.使用CSS Flexible Box模块中定义的弹性盒布局技术,可以根据屏幕尺寸或浏览器窗口尺寸自动调整页面中各局部区域的显示方式,即实现非常灵活的布局处理. 弹性布局(flexible box)模块旨在提供一个更加有效的方式来布置,对齐和分布在容器之间的各项内容,即使它们的大小是未知或者动态变化的. 弹性布局的主要思想是让容器有能力来改变项目的宽度和高度,以填满可用空

React Native 弹性布局FlexBox

React Native采用一中全新的布局方式:FlexBox(弹性布局).可以很方便的实现各种复杂布局,是全新的针对web和移动开发布局的一种实现方式. 何为FlexBox? 完整名称为:the flexible box Module,旨在通过弹性的方式来对齐和分布容器中的组件.Flexbuju的主要思想是:让容器有能力让其子项目能够改变其宽度|高度|顺序,以最佳方式填充可用空间. 在布局中,首先得确定主轴方向(flexDirection),主轴组件的对齐方式(justifyContent),

web app 自适应方案总结 关键字 弹性布局之rem

web app 自适应方案总结 关键字 弹性布局之rem 关于rem,主要参考文档 1.腾讯ISUX (http://isux.tencent.com/web-app-rem.html) 2.http://www.w3cplus.com/css3/define-font-size-with-css3-rem 现在移动端 web app 的自适应布局的方案有 5种. 零. Flexbox 使用css3 flexbox 进行布局,对于富媒体和复杂排版的支持非常强大,未普及兼容性非常差,几乎没有在任何