[css]flex布局和盒状布局的记录比较

flex

flex 中文意思为弹性布局。 display:flex

flex是w3s推出的,除盒状布局之外的一种新布局逻辑。

flex将页面视为主轴(main axis)和交叉轴(cross axis),默认水平为主轴,左为主轴起点(main start),上为交叉轴起点(cross start)

设置为flex布局后,子元素的float、clear、vertical-align属性将会失效。

我们将采用flex布局的元素称为flex容器(flex container)。而它的所有子元素将成为容器成员,称为项目(flex item)

项目默认按主轴排列。单个项目占据的主轴空间叫做main size ,交叉轴空间成为 cross size

flex布局

> 容器的属性

flex-direction 主轴方向                                                 默认:row 水平为主轴

flex-wrap      如果交叉轴一条轴上排不下时,如何换行 默认:nowwrap 不换行

flex-flow        为dircetion 和wrap的简写模式                  默认:row nowrap

justify-content 定义主轴上的对齐方式                            默认:flex-start 左对齐

align-items     交叉轴上的对齐方式                                 默认:stretch 占满容器高度

align-content 多根轴线的对齐方式                                   默认:stretch 占满交叉轴

> 项目的属性

order             项目的排列顺序

flex-grow       项目的放大比例

flex-shrink     缩小比例

flex-basis       项目占用的主轴空间

flex-grow         shrink basis的简写         默认: 0 1 auto

align self         单个项目的对齐方式        默认:继承容器的align-item属性

参考文档:http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html


盒状布局

盒状布局以元素+定位的搭配,实现页面的布局。

盒状布局将元素视为框。

框分为两种类型、定位分为四种。

定位定义着框的所属流。

所属流分为三种:普通流、浮动流、绝对定位流。

不同流中的框互不影响。

盒状布局的不同流

> 框的属性

框的两种类型为块框和行内框。

display:block |inline

注:不同的元素有不同的默认display属性,sapn和input 的display属性为inline

> 定位属性

position       定位的类型     默认:static

top              上

right            右

bottom        下

left               左

overflow       溢出处理方式     默认:visible

clip                元素的形状        默认:auto

vertical- align 垂直对齐方式    默认:baseline

z-index            堆叠顺序

> 框对应定位的所属流

position有四种属性 static |relative|absolute|fixed

absolute 和fixed 的元素将会生成在绝对定位流中

剩余两种会生成在普通流中

> 浮动

float:left  每个框向左浮动。

此时元素将生成在浮动流中

为了兼容浮动流和普通流,通过添加一个空元素,并赋以clear属性使得浮动元素在普通流的容器中占据位置。

参考文档:https://www.w3school.com.cn/css/css_positioning.asp


> 常用场景

* 令弹窗居中(flex应用)

.box{

  display: flex; //弹性布局

  display: -webkit-flex;

  border: 1px solid #0000FF;

  height: 200px;

  width: 400px;

  align-items:center; //项目排列 居中

  justify-content:center;  //对齐方式 居中对齐

}

.item{

  width: 50px;

  height: 40px;

  border: 1px solid #00C1B3;

}

* 令弹窗居中(position:fixed应用)

.box{

background:whitesmoke;

position:fixed;

top:50%;

left:50%;

transform:translateX(-50%)translateY(-50%);

min-width:700px;

border-radius:8px;

padding:0px

}

* 骰子布局

3的布局

.box {display:flex;}

.item:nth-child(2) {align-self:center;}.

item:nth-child(3) {align-self:flex-end;}

* 网格布局

根据页面大小自动缩放网格

.Grid {display:flex;}.Grid-cell {flex:1;}

* 圣杯布局(flex应用)


页面从上到下,从左到右分为三个区域

html部分:

    <body class="HolyGrail">

      <header>...</header>

      <div class="HolyGrail-body">

        <main class="HolyGrail-content">...</main>

        <nav class="HolyGrail-nav">...</nav>

        <aside class="HolyGrail-ads">...</aside>

      </div>

      <footer>...</footer>

    </body>

CSS部分:

    .HolyGrail {

      display: flex;

      min-height: 100vh;

      flex-direction: column;

    }

    header,footer {

      flex: 1;

    }

    .HolyGrail-body {

      display: flex;

      flex: 1;

    }

    .HolyGrail-content {

      flex: 1;

    }

    .HolyGrail-nav, .HolyGrail-ads {

      /* 两个边栏的宽度设为12em */

      flex: 0 0 12em;

    }

    .HolyGrail-nav {

      /* 导航放到最左边 */

      order: -1;

    }

* 圣杯布局(position应用)

html部分:

<body>

  <div id="header">#header</div>

  <div id="container">

    <div id="center" class="column">#center</div>

    <div id="left" class="column">#left</div>

    <div id="right" class="column">#right</div>

  </div>

  <div id="footer">#footer</div>

</body>

css部分:

body {

    min-width: 550px;  /* 2x leftContent width + rightContent width */

    font-weight: bold;

    font-size: 20px;

  }

  #header, #footer {

    background: rgba(29, 27, 27, 0.726);

    text-align: center;

    height: 60px;

    line-height: 60px;

  }

  #footer {

    clear: both;

  }

  #container {

    padding-left: 200px;  /* leftContent width */

    padding-right: 150px;  /* rightContent width */

    overflow: hidden;

  }

  #container .column {

    position: relative;

    float: left;

    text-align: center;

    height: 300px;

    line-height: 300px;

  }

  #center {

    width: 100%;

    background: rgb(206, 201, 201);

  }

  #left {

    width: 200px;          /* leftContent width */

    right: 200px;          /* leftContent width */

    margin-left: -100%;

    background: rgba(95, 179, 235, 0.972);

  }

  #right {

    width: 150px;          /* rightContent width */

    margin-left: -150px;  /* rightContent width */

    right: -150px;

    background: rgb(231, 105, 2);

  }


* 输入框布局

.InputAddOn {display:flex;}.InputAddOn-field {flex:1;}

* 固定底栏

.Site {display:flex;min-height:100vh;flex-direction:column;}.Site-content {flex:1;}

* 流式布局

.parent {width:200px;height:150px;background-color:black;display:flex;flex-flow:row wrap;align-content:flex-start;}

.child {box-sizing:border-box;background-color:white;flex:0 0 25%;height:50px;border:1px solid red;}

参考文档:

1.flex布局教程:实例篇.html

2.css经典布局-圣杯布局.html

小记:flex和盒状是两种不同的布局思路,flex设定了更多种对齐类型,减少了对长宽等属性的关注,只需对部分固定宽度的项目进行设定,剩下就可以交由浏览器自行处理。盒装更像是作画的思路,设定好页面上的每一像素,最后就会得到一副画。相对来说flex布局减少了对每个框的关注,对个人来说,减少了工作量。

(但盒状布局也很惊艳,如果有理解错误的地方欢迎指出,谢谢

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容