javascript - 具有适合动态宽度和高度元素的网格/Flexbox 布局

标签 javascript css flexbox css-grid

我尝试使用 flexbox 创建一个只有一个中心元素的网格,例如图像。 f square 有类 active,我在其中加倍了宽度和高度。这有可能使其他方 block 适合其余方 block 吗?我应该使用 flexbox 或者 grid

接下来我想用 click 事件添加监听器。单击正方形会将其移动到中心位置并添加 active 类并在此移动中添加转换(这不能用 gird 来完成??)

correct grid .

这是我的笔:link

最佳答案

要获得此布局,您可以使用 CSS 网格布局。您可以在网格模板的列和行上设置 repeat(4, 100px)。对于 active 框,您可以在 grid-rowgrid-column 上使用 2/4 以便该框具有类事件将始终在布局的中间。对于间距,您可以使用 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>

关于javascript - 具有适合动态宽度和高度元素的网格/Flexbox 布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48441317/

相关文章:

javascript - 在表格内创建 Highcharts 饼图图例

javascript - 将小时添加到时间字符串

javascript - 给定节点的 XML 字符串表示形式,查找 DOM 节点

css - 将 Chartkick 折线图设置为正方形

css - 在 IE 中使用 Angular Material 在 div 外部流动的文本

html - 基于子 flex 元素的容器宽度

javascript - 如何关闭 SignalR 中的客户端 JavaScript 'Hub' 连接?

css - (仅限 CSS)选中包装输入时显示部分

css - 使用 flex 对元素进行垂直和水平重新排序

css - 如何使 2 个元素适合页面高度?