这是上课老师给的,不知道怎么上传文件夹,所以直接贴代码,感谢老师,感谢写这个东西的人,
如有侵权,请告知。知识就是用来分享的。。。。。
不是原创,老师给的,没有链接,所以只能按原创发出了,抱歉
页面生成效果图
记得css放在css文件中,js放在js文件中,index.html放在同级文件下
Html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Flex布局属性演示</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div class="principal">
<h2>flex父容器属性</h2>
<div class="control">
<h4><a href="http://w3.unpocodetodo.info/css3/flex-direction.php">flex-direction</a> <small>主轴方向</small></h4>
<!--flex-direction: row | row-reverse | column | column-reverse;-->
<div class="radio">
<input name="flex-direction" type="radio" class="flex-direction" id="R11" value="row" checked><label
for="R11">row:从左到右</label>
<input name="flex-direction" type="radio" class="flex-direction" id="R12" value="row-reverse"><label
for="R12">row-reverse:从右到左</label>
<input name="flex-direction" type="radio" class="flex-direction" id="R13" value="column"><label
for="R13">column:从上到下</label>
<input name="flex-direction" type="radio" class="flex-direction" id="R14" value="column-reverse"><label
for="R14">column-reverse:从下到上</label>
</div>
</div>
<div class="flex-container" id="direction">
<div class="item" data-color="2a80b9">
<p>1</p>
</div>
<div class="item" data-color="8f44ad">
<p>2</p>
</div>
<div class="item" data-color="16a086">
<p>3</p>
</div>
<div class="item" data-color="f1c40f">
<p>4</p>
</div>
<div class="item" data-color="e77e23">
<p>5</p>
</div>
</div>
<div class="control">
<h4><a href="http://w3.unpocodetodo.info/css3/flex-wrap.php">flex-wrap</a> <small>子元素是否换行</small></h4>
<!--nowrap | wrap | wrap-reverse;-->
<div class="radio">
<input name="flex-wrap" type="radio" class="flex-wrap" id="R21" value="nowrap" checked><label
for="R21">nowrap:不换行</label>
<input name="flex-wrap" type="radio" class="flex-wrap" id="R22" value="wrap"><label for="R22">wrap:换行</label>
<!-- <input name="flex-wrap" type="radio" class="flex-wrap" id="R23" value="wrap-reverse"><label
for="R23">wrap-reverse:</label> -->
</div>
</div>
<div class="flex-container" id="wrap">
<div class="item" data-color="2a80b9">
<p>1</p>
</div>
<div class="item" data-color="8f44ad">
<p>2</p>
</div>
<div class="item" data-color="16a086">
<p>3</p>
</div>
<div class="item" data-color="f1c40f">
<p>4</p>
</div>
<div class="item" data-color="e77e23">
<p>5</p>
</div>
</div>
<div class="control">
<h4><a href="http://w3.unpocodetodo.info/css3/flex-align-items.php">align-items</a> <small>单行子盒子在侧轴上的对齐方式</small>
</h4><!-- flex-start | flex-end | center | baseline | stretch;-->
<div class="radio">
<input name="flex-align-items" type="radio" class="flex-align-items" id="R31" value="align-items-start"><label
for="R31">flex-start:侧轴开始</label>
<input name="flex-align-items" type="radio" class="flex-align-items" id="R32" value="align-items-end"><label
for="R32">flex-end:侧轴结束</label>
<input name="flex-align-items" type="radio" class="flex-align-items" id="R33" value="align-items-center"><label
for="R33">center:居中</label>
<!-- <input name="flex-align-items" type="radio" class="flex-align-items" id="R34"
value="align-items-baseline"><label for="R34">baseline:</label> -->
<input name="flex-align-items" type="radio" class="flex-align-items" id="R35" value="align-items-stretch"
checked><label for="R35">stretch:拉伸(默认值)</label>
</div>
</div>
<div class="flex-container" id="align">
<div class="item" data-color="2a80b9">
<p>1</p>
</div>
<div class="item" data-color="8f44ad">
<p>2</p>
</div>
<div class="item" data-color="16a086">
<p>3</p>
</div>
<div class="item" data-color="f1c40f">
<p>4</p>
</div>
<div class="item" data-color="e77e23">
<p>5</p>
</div>
</div>
<div class="control">
<h4><a href="http://w3.unpocodetodo.info/css3/flex-justify-content.php">justify-content</a>
<small>子盒子主轴方向上的对齐方式</small></h4>
<!--justify-content: flex-start | flex-end | center | space-between | space-around; -->
<div class="radio">
<input name="justify-content" type="radio" class="justify-content" id="R41" value="justify-start" checked><label
for="R41">flex-start:主轴开始</label>
<input name="justify-content" type="radio" class="justify-content" id="R42" value="justify-end"><label
for="R42">flex-end:主轴结束</label>
<input name="justify-content" type="radio" class="justify-content" id="R43" value="justify-space-between"><label
for="R43">space-between:两端对齐,子盒子之间的间隔都相等。</label>
<br>
<input name="justify-content" type="radio" class="justify-content" id="R44" value="justify-center"><label
for="R44">center:居中</label>
<input name="justify-content" type="radio" class="justify-content" id="R45" value="justify-space-around"><label
for="R45">space-around:每个项目两侧的间隔相等。</label>
<input name="justify-content" type="radio" class="justify-content" id="R46" value="justify-space-evenly"><label
for="R46">space-evenly: 子元素间隙完全相同</label>
</div>
</div>
<div class="flex-container" id="justify">
<div class="item" data-color="2a80b9">
<p>1</p>
</div>
<div class="item" data-color="8f44ad">
<p>2</p>
</div>
<div class="item" data-color="16a086">
<p>3</p>
</div>
<div class="item" data-color="f1c40f">
<p>4</p>
</div>
<div class="item" data-color="e77e23">
<p>5</p>
</div>
</div>
<!--<p>En <strong>Google Chrome</strong> y <strong>Opera</strong>: problemas al cambiar dinamicamente entre <code>justify-content:space-between</code> y <code>justify-content:space-around</code> </p>-->
<div class="control">
<h4><a href="http://w3.unpocodetodo.info/css3/flex-align-content.php">align-content</a>
<small>多行子盒子在侧轴上的对齐方式</small></h4>
<!--justify-content: flex-start | flex-end | center | space-between | space-around; -->
<div class="radio">
<input name="align-content" type="radio" class="align-content" id="R51" value="align-content-start"><label
for="R51">flex-start:侧轴开始</label>
<input name="align-content" type="radio" class="align-content" id="R52" value="align-content-end"><label
for="R52">flex-end:侧轴结束</label>
<input name="align-content" type="radio" class="align-content" id="R53" value="align-content-center"><label
for="R53">center:居中</label>
<input name="align-content" type="radio" class="align-content" id="R54"
value="align-content-space-between"><label for="R54">space-between:两端对齐,侧轴之间的间隔平均分布。</label>
<input name="align-content" type="radio" class="align-content" id="R55"
value="align-content-space-around"><label for="R55">space-around:侧轴之间的间隔平均分布。</label>
<input name="align-content" type="radio" class="align-content" id="R56" value="align-content-stretch"
checked><label for="R56">stretch:拉伸(默认值)</label>
</div>
</div>
<div class="flex-container" id="alignContent">
<div class="item" data-color="1bbc9d">
<p>1</p>
</div>
<div class="item" data-color="2fcc71">
<p>2</p>
</div>
<div class="item" data-color="3598dc">
<p>3</p>
</div>
<div class="item" data-color="9c59b8">
<p>4</p>
</div>
<div class="item" data-color="34495e">
<p>5</p>
</div>
<div class="item" data-color="16a086">
<p>6</p>
</div>
<div class="item" data-color="27ae61">
<p>7</p>
</div>
<div class="item" data-color="2a80b9">
<p>8</p>
</div>
<div class="item" data-color="8f44ad">
<p>9</p>
</div>
<div class="item" data-color="2d3e50">
<p>10</p>
</div>
<div class="item" data-color="f1c40f">
<p>11</p>
</div>
<div class="item" data-color="e77e23">
<p>12</p>
</div>
<div class="item" data-color="e84c3d">
<p>13</p>
</div>
<div class="item" data-color="ecf0f1">
<p>14</p>
</div>
<div class="item" data-color="96a6a6">
<p>15</p>
</div>
<div class="item" data-color="f49c14">
<p>16</p>
</div>
<div class="item" data-color="d55401">
<p>17</p>
</div>
<div class="item" data-color="c1392b">
<p>18</p>
</div>
<div class="item" data-color="bec3c7">
<p>19</p>
</div>
<div class="item" data-color="808b8d">
<p>20</p>
</div>
</div>
</div>
<!-- propiedades de los items -->
<div class="principal">
<h2>flex布局子元素属性 </h2>
<div class="control">
<h4><a href="http://w3.unpocodetodo.info/css3/flex-abreviado.php">flex</a> <small>子元素占用份数</small></h4>
<!--auto | flex-start | flex-end | center | baseline | stretch -->
<p>.item { flex: number } </p>
<table id="flexBasis">
<tr>
<td>item1</td>
<td>item2</td>
</tr>
<tr>
<td><input type="number" class="flex-basis" id="B1" min="0" value="1"><label for="B1">flex: 份数</label>
</td>
<td><input type="number" class="flex-basis" id="B2" min="0" value="1"><label for="B2">flex: 份数</label>
</td>
</tr>
</table>
</div>
<div class="flex-container align-items-center" id="FCI4">
<div class="item" id="item1" data-color="f49c14">
<p>1</p>
</div>
<div class="item" id="item2" data-color="d55401">
<p>2</p>
</div>
</div>
<div class="control">
<h4><a href="http://w3.unpocodetodo.info/css3/flex-order.php">order</a> <small>定义项目的排列顺序。数值越小,排列越靠前,默认为0。</small>
</h4>
<!--auto | flex-start | flex-end | center | baseline | stretch -->
<div class="radio">
<span class="nbsp"><label for="R91">item 1: </label><input type="number" class="flex-order" value="0"
id="R91"></span>
<span class="nbsp"><label for="R92">item 2: </label><input type="number" class="flex-order" value="0"
id="R92"></span>
<span class="nbsp"><label for="R93">item 3: </label><input type="number" class="flex-order" value="0"
id="R93"></span>
<span class="nbsp"><label for="R94">item 4: </label><input type="number" class="flex-order" value="0"
id="R94"></span>
<span class="nbsp"><label for="R95">item 5: </label><input type="number" class="flex-order" value="0"
id="R95"></span>
</div>
</div>
<div class="flex-container align-items-center" id="FCI5">
<div class="item" id="orderR91" data-color="f49c14">
<p>1</p>
</div>
<div class="item" id="orderR92" data-color="d55401">
<p>2</p>
</div>
<div class="item" id="orderR93" data-color="c1392b">
<p>3</p>
</div>
<div class="item" id="orderR94" data-color="bec3c7">
<p>4</p>
</div>
<div class="item" id="orderR95" data-color="808b8d">
<p>5</p>
</div>
</div>
</div>
<script src="js/index.js"></script>
</body>
</html>
css
/*flex-direction: row | row-reverse | column | column-reverse;*/
.flex-container.row {
-webkit-flex-direction: row;
-ms-flex-direction: row;
flex-direction: row;
}
.flex-container.row-reverse {
-webkit-flex-direction: row-reverse;
-ms-flex-direction: row-reverse;
flex-direction: row-reverse;
}
.flex-container.column {
-webkit-flex-direction: column;
-ms-flex-direction: column;
flex-direction: column;
}
.flex-container.column-reverse {
-webkit-flex-direction: column;
-ms-flex-direction: column;
flex-direction: column-reverse;
}
/*flex-wrap: nowrap | wrap | wrap-reverse;*/
.flex-container.nowrap {
-webkit-flex-wrap: nowrap;
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
}
.flex-container.wrap {
-webkit-flex-wrap: wrap;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
}
.flex-container.wrap-reverse {
-webkit-flex-wrap: wrap-reverse;
-ms-flex-wrap: wrap-reverse;
flex-wrap: wrap-reverse;
}
/*align-items: flex-start | flex-end | center | baseline | stretch;*/
.flex-container.align-items-start {
-webkit-align-items: flex-start;
-ms-flex-align: start;
align-items: flex-start;
}
.flex-container.align-items-end {
-webkit-align-items: flex-end;
-ms-flex-align: end;
align-items: flex-end;
}
.flex-container.align-items-center {
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
}
.flex-container.align-items-baseline {
webkit-align-items: baseline;
-ms-flex-align: baseline;
align-items: baseline;
}
.flex-container.align-items-stretch {
webkit-align-items: stretch;
-ms-flex-align: stretch;
align-items: stretch;
}
/*justify-content: flex-start | flex-end | center | space-between | space-around;*/
.flex-container.justify-start {
-webkit-justify-content: flex-start;
-ms-flex-pack: start;
justify-content: flex-start;
}
.flex-container.justify-end {
-webkit-justify-content: flex-end;
-ms-flex-pack: end;
justify-content: flex-end;
}
.flex-container.justify-center {
-webkit-justify-content: center;
-ms-flex-pack: center;
justify-content: center;
}
.flex-container.justify-space-between {
-webkit-justify-content: space-between;
-ms-flex-pack: justify;
justify-content: space-between;
}
.flex-container.justify-space-around {
-webkit-justify-content: space-around;
-ms-flex-pack: justify;
justify-content: space-around;
}
.flex-container.justify-space-evenly {
-webkit-justify-content: space-evenly;
-ms-flex-pack: justify;
justify-content: space-evenly;
}
/*align-content: flex-start | flex-end | center | space-between | space-around | stretch;*/
.flex-container.align-content-start {
-webkit-align-content: flex-start;
-ms-flex-line-pack: start;
align-content: flex-start;
}
.flex-container.align-content-end {
-webkit-align-content: flex-end;
-ms-flex-line-pack: end;
align-content: flex-end;
}
.flex-container.align-content-center {
-webkit-align-content: center;
-ms-flex-line-pack: center;
align-content: center;
}
.flex-container.align-content-space-between {
-webkit-align-content: space-between;
-ms-flex-line-pack: justify;
align-content: space-between;
}
.flex-container.align-content-space-around {
-webkit-align-content: space-around;
-ms-flex-line-pack: justify;
/*distribute;*/
align-content: space-around;
}
.flex-container.align-content-stretch {
-webkit-align-content: stretch;
-ms-flex-line-pack: stretch;
align-content: stretch;
}
/*align-self: auto | flex-start | flex-end | center | baseline | stretch;*/
.item.align-self-auto {
-webkit-align-self: auto;
-ms-flex-item-align: auto;
align-self: auto;
}
.item.align-self-start {
-webkit-align-self: flex-start;
-ms-flex-item-align: start;
align-self: flex-start;
}
.item.align-self-end {
-webkit-align-self: flex-end;
-ms-flex-item-align: end;
align-self: flex-end;
}
.item.align-self-center {
-webkit-align-self: center;
-ms-flex-item-align: center;
align-self: center;
}
.item.align-self-baseline {
-webkit-align-self: baseline;
-ms-flex-item-align: baseline;
align-self: baseline;
}
.item.align-self-stretch {
-webkit-align-self: stretch;
-ms-flex-item-align: stretch;
align-self: stretch;
}
.item.flex-grow1 {
flex-grow: 1;
}
.item.flex-grow2 {
flex-grow: 2;
}
.item.flex-grow3 {
flex-grow: 3;
}
.item.flex-grow4 {
flex-grow: 4;
}
html, body {
width: 100%;
min-height: 100%;
margin: 0;
padding: 0;
color: #ddd;
font-size: 14px;
font-family: Verdana, Geneva, sans-serif;
background-color: #333;
}
* {
box-sizing: border-box;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.principal {
width: calc(50% - 40px);
min-width: 525px;
margin: 0 20px 20px 20px;
float: left;
}
.radio {
margin-bottom: 20px;
}
label {
line-height: 200%;
}
input[type=radio] {
color: white;
}
input[type=radio]:checked+label {
color: orange;
}
input[type=number] {
width: 40px;
margin-right: .5em;
}
h1 {
font-size: 200%;
margin: 20px;
}
h2 {
font-size: 180%;
margin: 0px;
}
h4 a {
font-size: 120%;
color: #ddd;
text-decoration: none;
}
h4 small {
font-variant: normal;
font-size: 80%;
font-weight: normal;
color: #57bcdb;
}
table {
width: 100%;
margin-bottom: 1em;
}
table td {
width: 50%;
padding: 3px;
}
.principal:last-of-type h4 small {
color: #ff8080;
}
.flex-container {
border: 1px solid #555;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
padding: 20px;
width: 100%;
}
.item {
margin: 0;
display: inherit;
padding: 10px;
width: 100px;
height: 100px;
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
}
#item1, #item2 {
flex: 1;
}
.item p {
width: 100%;
text-align: center;
color: #fff;
}
#direction .item {
flex-wrap: wrap;
}
/*#wrap .item{ height:auto;}*/
#wrap {
width: 400px;
}
#align .item {
height: auto;
height: auto;
flex-wrap: wrap;
}
#align {
height: 300px;
}
#justify {
margin: 20px 0;
padding: 20px 0;
}
#alignContent {
flex-wrap: wrap;
height: 600px;
}
#alignContent .item {
height: auto;
}
#FCI1 {
height: 300px;
}
#FCI1 .item {
height: auto;
}
#FCI3 .item {
width: 25%;
}
#FCI4 .item {
width: 50%;
}
#FCI5 .item {
width: 20%;
}
.nbsp {
white-space: nowrap;
}
@media only screen and (max-width:1100px) {
.principal {
width: calc(100% - 40px);
}
}
@media only screen and (max-width:580px) {
.item {
width: 50px;
height: 50px;
}
.principal {
width: calc(100% - 40px);
min-width: initial;
}
.flex-container {
width: 100%;
min-width: initial;
}
#wrap {
width: 200px;
}
}
js
function changeFlex(e, t) {
for (var n = document.querySelectorAll("." + e), l = document.querySelector("#" + t), r = 0; r < n.length; r++) n[r].addEventListener("change", function () {
var e = this.value;
l.setAttribute("class", "flex-container " + e)
}, !1)
}
function changeItemFlex(e, t) {
for (var n = document.querySelectorAll("." + e), l = document.querySelector("#" + t), r = 0; r < n.length; r++) n[r].addEventListener("change", function () {
var e = this.value;
l.setAttribute("class", "item " + e)
}, !1)
}
function changeFlexBasis(e, t) {
var n = isNaN(e.value) ? 0 : e.value;
console.log("B: " + n), document.querySelector("#" + t).style.WebkitFlexBasis = n + "%", document.querySelector("#" + t).style.flexBasis = n + "%"
}
function changeFlexGrow(e, t) {
var n = isNaN(e.value) ? 0 : e.value;
console.log("G: " + n), document.querySelector("#" + t).style.WebkitFlexGrow = n, document.querySelector("#" + t).style.flexGrow = n
}
function changeFlexShrink(e, t) {
var n = isNaN(e.value) ? 0 : e.value;
console.log("S: " + n), document.querySelector("#" + t).style.WebkitFlexShrink = n, document.querySelector("#" + t).style.flexShrink = n
}
function changeFlexOrder(e, t) {
var n = isNaN(e.value) ? 0 : e.value;
console.log("O: " + n), document.querySelector("#" + t).style.WebkitOrder = n, document.querySelector("#" + t).style.order = n
}
function changeAll(e, t, n, l) {
var n = isNaN(e.value) ? 0 : e.value;
console.log(t)
console.log("B: " + n), document.querySelector("#" + t).style.flex = n
// changeFlexBasis(e, l), changeFlexGrow(t, l), changeFlexShrink(n, l)
}
for (var items = document.querySelectorAll(".item"), i = 0; i < items.length; i++)
if (items[i].hasAttribute("data-color")) {
var color = items[i].getAttribute("data-color");
items[i].style.backgroundColor = "#" + color
}
for (var flexO = document.querySelectorAll(".flex-order"), o = 0; o < flexO.length; o++) flexO[o].addEventListener("change", function () {
changeFlexOrder(this, "order" + this.id)
}, !1);
changeFlex("flex-direction", "direction"), changeFlex("flex-wrap", "wrap"), changeFlex("flex-align-items", "align"), changeFlex("justify-content", "justify"), changeFlex("align-content", "alignContent"), changeItemFlex("align-self", "alignSelf");
for (var flexGrow = document.querySelectorAll(".flex-grow"), i = 0; i < flexGrow.length; i++) flexGrow[i].addEventListener("change", function () {
var e = "item" + this.id;
changeFlexGrow(this, e)
});
for (var flexShrink = document.querySelectorAll(".flex-shrink"), j = 0; j < flexShrink.length; j++) flexShrink[j].addEventListener("change", function () {
var e = "item" + this.id;
changeFlexShrink(this, e)
});
var B1 = document.querySelector("#B1"),
G1 = document.querySelector("#G1"),
S1 = document.querySelector("#S1"),
B2 = document.querySelector("#B2"),
G2 = document.querySelector("#G2"),
S2 = document.querySelector("#S2");
B1.addEventListener("change", function () {
changeAll(B1, "item1")
}), B2.addEventListener("change", function () {
changeAll(B2, "item2")
});