Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Responsive design 允许内联块元素在视口收缩时流畅地拉伸、折叠和堆叠_Responsive Design_Css - Fatal编程技术网

Responsive design 允许内联块元素在视口收缩时流畅地拉伸、折叠和堆叠

Responsive design 允许内联块元素在视口收缩时流畅地拉伸、折叠和堆叠,responsive-design,css,Responsive Design,Css,给定以下代码,我想找到一种方法,让一系列内联块元素在换行时堆叠在一起,同时拉伸父元素的整个宽度 <div id="parent"> <div class="child"></div> <div class="child"></div> <div class="child"></div> <div class="child"></div> <div class="c

给定以下代码,我想找到一种方法,让一系列内联块元素在换行时堆叠在一起,同时拉伸父元素的整个宽度

<div id="parent">
  <div class="child"></div>
  <div class="child"></div>
  <div class="child"></div>
  <div class="child"></div>
  <div class="child"></div>
  <div class="child"></div>
  <div class="child"></div>
  <div class="child"></div>
  <div class="child"></div>
  <div class="child"></div>
</div>

示例

如果所有子项都具有相同的最小宽度,我希望这可以创建栅格效果。例如,在更大的屏幕上,孩子们可以堆叠5个,直到他们缠绕到第二行。我希望这些都是20%(1/5)的可用宽度。当屏幕缩小时,第五和第十个项目将被包装,留下两行4个项目和第三行2个项目。现在我想让孩子们都伸展25%(1/4)的可用宽度,除了最后一排的两个孩子。每个都应该是50%

尝试

我尝试过让孩子们浮动,让他们成为内联块,我也尝试过flex box,但没有一个能给我我想要的结果。内联块是最接近的,允许它们像父宽度收缩一样堆叠,但我无法实现拉伸

限制

我不希望使用媒体查询,因为我需要在这个示例中写入确切的断点,然后在站点布局发生任何变化时更改所有断点。我想找到一个更有机的方法来解决这个问题


Javascript已经过时了。我想用CSS找到一种方法来实现这一点。

多亏了Chris Coyier和CSS技巧。Flexbox确实是答案。与其复制粘贴他的解决方案,不如将其链接到他的笔:。如果你对他的整个想法感兴趣,以下是他的博客帖子:

这是实际的解决方案,以防代码笔消失

HTML

<button id="add">Add Child</button>

<div id="parent">
  <div class="child"></div>
  <div class="child"></div>
  <div class="child"></div>
  <div class="child"></div>
  <div class="child"></div>
  <div class="child"></div>
  <div class="child"></div>
  <div class="child"></div>
  <div class="child"></div>
  <div class="child"></div>
</div>
jQuery

$("#add").on("click", function() {
  $("#parent").append("<div class='child' />");
});
$(“#添加”)。在(“单击”,函数(){
$(“#父项”)。追加(“”);
});

我的第一个想法是,没有JS,没有媒体查询,你就不能。你需要注意一行中有多少项。如果没有它们,我想不出怎么做。可能是@Chris的复制品-定义大屏幕,定义缩小的大屏幕。你能?你不能,所以你需要定义一些断点,只使用css对其进行排序。媒体查询是目前控制响应版面的唯一方法。当您可以为元素指定宽度时,这并不复杂。当您只能为除最后一个之外的子项指定最大宽度,并且最后一个子项必须在所有其他子项占用其宽度后占用剩余宽度时,请尝试这样做。我们希望您“粘贴”他的解决方案,甚至可能写下他在那里做了什么。如果文章或代码笔出现问题,这个答案是无用的,任何寻找类似问题的人都无法从中获得任何信息。
$("#add").on("click", function() {
  $("#parent").append("<div class='child' />");
});