标签:line title html try length 元素 属性 clear ade
转载自:http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html
任何一个容器都可以指定为 Flex 布局。
.box{ display: flex; }
行内元素也可以使用 Flex 布局。
.box{ display: inline-flex; }
Webkit 内核的浏览器,必须加上-webkit
前缀。
.box{ display: inline-flex; }
注意,设为 Flex 布局以后,子元素的float
、clear
和vertical-align
属性将失效。
.box { flex-direction: row | row-reverse | column | column-reverse; }
.box{ flex-wrap: nowrap | wrap | wrap-reverse; }
.box { flex-flow: <flex-direction> || <flex-wrap>; }
.box { justify-content: flex-start | flex-end | center | space-between | space-around; }
.box { align-items: flex-start | flex-end | center | baseline | stretch; }
.box { align-content: flex-start | flex-end | center | space-between | space-around | stretch; }
.item { order: <integer>; }
.item { flex-grow: <number>; /* default 0 */ }
.item { flex-shrink: <number>; /* default 1 */ }
.item { flex-basis: <length> | auto; /* default auto */ }
.item { flex: none | [ <‘flex-grow‘> <‘flex-shrink‘>? || <‘flex-basis‘> ] }
该属性有两个快捷值:auto
(1 1 auto
) 和 none (0 0 auto
)
.item { align-self: auto | flex-start | flex-end | center | baseline | stretch; }
<body class="HolyGrail"> <header>...</header> // header <div class="HolyGrail-body"> //body 分为 左,中,右 <main class="HolyGrail-content">...</main> <nav class="HolyGrail-nav">...</nav> <aside class="HolyGrail-ads">...</aside> </div> <footer>...</footer> </body>
.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; //因为默认flex-direction: row }
如果是小屏幕,躯干的三栏自动变为垂直叠加。
@media (max-width: 768px) { .HolyGrail-body { flex-direction: column; flex: 1; } .HolyGrail-nav, .HolyGrail-ads, .HolyGrail-content { flex: auto; } }
我们常常需要在输入框的前方添加提示,后方添加按钮。
<div class="InputAddOn"> <span class="InputAddOn-item">...</span> <input class="InputAddOn-field"> <button class="InputAddOn-item">...</button> </div>
.InputAddOn { display: flex; } .InputAddOn-field { flex: 1; }
有时,主栏的左侧或右侧,需要添加一个图片栏。
<div class="Media">
<img class="Media-figure" src="" >
<p class="Media-body">...</p>
</div>
.Media { display: flex; align-items: flex-start; } .Media-figure { margin-right: 1em; } .Media-body { flex: 1; }
有时,页面内容太少,无法占满一屏的高度,底栏就会抬高到页面的中间。这时可以采用Flex布局,让底栏总是出现在页面的底部。
<body class="Site"> <header>...</header> <main class="Site-content">...</main> <footer>...</footer> </body>
.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; //应用IE盒模型,将border和padding纳入width计算范围。 background-color: white; flex: 0 0 25%; //这样25%包括下面设置的1px边框,一行刚好四个元素 height: 50px; border: 1px solid red; }
标签:line title html try length 元素 属性 clear ade
原文地址:https://www.cnblogs.com/FunkyEric/p/8933201.html