方便快速认识flex布局,生成的页面可以点击(非原创)

这是上课老师给的,不知道怎么上传文件夹,所以直接贴代码,感谢老师,感谢写这个东西的人,

如有侵权,请告知。知识就是用来分享的。。。。。

不是原创,老师给的,没有链接,所以只能按原创发出了,抱歉

页面生成效果图

 

记得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")
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值