网格/ Flexbox布局,适合动态宽度和高度元素

时间:2018-01-25 11:02:18

标签: javascript css css3 flexbox css-grid

我尝试使用flexbox创建一个包含一个中心元素的网格,就像在图像处一样。 f square有类active,其中我加宽了宽度和高度。这可能使其他方块适合其余的吗?我用的是Sholud  flexbox或者grid

接下来我想添加一个带有click事件的监听器。单击方框将其移动到中心位置并添加active类并在此移动中添加转换(无法使用gird完成??)

correct grid

这是我的笔:link

1 个答案:

答案 0 :(得分:2)

要获得此布局,您可以使用CSS网格布局。您可以在网格模板列和行上设置repeat(4, 100px)。对于有效框,您可以在2 / 4grid-row上使用grid-column,以便活动类的框始终位于布局中间。对于间距,您可以使用grid-gap

$(".wrapper .box").click(function() {
  $(this).addClass('active').siblings().removeClass('active')
})
body {
  margin: 40px;
}
.wrapper {
  display: grid;
  grid-template-columns: repeat(4, 100px);
  grid-template-rows: repeat(4, 100px);
  grid-gap: 10px;
}
.box {
  background: #444444;
  color: white;
  padding: 5px;
  box-sizing: border-box;
  font-size: 30px;
  cursor: pointer;
}
.box:not(.active):hover {
  transition: background 0.3s ease-in;
  background: orange;
}
.active {
  grid-row: 2 / 4;
  grid-column: 2 / 4;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="wrapper">
  <div class="box a">a</div>
  <div class="box b">b</div>
  <div class="box c">c</div>
  <div class="box d">d</div>
  <div class="box e">e</div>
  <div class="box f active">f</div>
  <div class="box g">g</div>
  <div class="box h">h</div>
  <div class="box i">i</div>
  <div class="box i">j</div>
  <div class="box i">k</div>
  <div class="box i">l</div>
  <div class="box i">m</div>
</div>