Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/33.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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
CSS中具有不同高度的块的垂直对齐_Css - Fatal编程技术网

CSS中具有不同高度的块的垂直对齐

CSS中具有不同高度的块的垂直对齐,css,Css,我正试图达到类似的效果。也就是说,我有一些块(这里是,文章),它们具有相同的宽度,但可以具有不同的高度,我希望它们紧挨着它们的上邻居。当以内联方式显示文章并使用顶部垂直对齐方式时,文章仍按预期保持在其行上: <html> <head> <style> article { display: inline-block; vertical-align: top; width:200px; margin:5px; background-color:#D0D0D0;

我正试图达到类似的效果。也就是说,我有一些块(这里是,
文章
),它们具有相同的宽度,但可以具有不同的高度,我希望它们紧挨着它们的上邻居。当以内联方式显示文章并使用顶部垂直对齐方式时,文章仍按预期保持在其行上:

<html>
<head>
<style>
  article { display: inline-block; vertical-align: top; width:200px; margin:5px; background-color:#D0D0D0; }
</style>
</head>
<body>
<div style="width:630px; background-color:#F0F0F0">
<article style="height:100px;"></article><article style="height:200px;"></article><article style="height:300px;"></article><article style="height:200px;"></article><article style="height:200px;"></article><article style="height:100px;"></article>
</div>
</body>
</html>

文章{显示:内联块;垂直对齐:顶部;宽度:200px;边距:5px;背景色:#d0d0;}
如果我将文章设置为预定义的列,然后在这些列中垂直对齐,我想这会更容易,但在上面给出的示例中,情况并非如此(可能具有能够动态更改列数的优势)

这甚至可以在CSS中实现吗?或者他们正在使用一些复杂的JavaScript来实现这一点

(也作为一个旁注,我需要将
文章
放在彼此旁边,没有换行符,以防止中间出现虚假的空格,但在上面的页面中这似乎不是问题)

编辑


我没有提到的链接页面的一个重要行为是,文章的显示顺序与列出的顺序大致相同,因此保留了时间顺序。例如,您可以使用CSS列

div{
宽度:630px;
背景色:#f0
}
div{
-webkit列数:3;
-moz列数:3;
列数:3;
-webkit列间距:0;
-moz列间距:0;
列间距:0;
}

我用CSS尝试了许多不同的方法来实现这一点,在我看来(我讨厌这么说),单用CSS是不可能的

Flexbox、网格、列、表格布局、浮动。。。我尝试的技术都无法处理这个特定的布局问题

我能得到的最接近的是flexbox或float与clearfixes的结合。然而,当你的网站响应迅速时,你会遇到很多布局问题

潜在的问题是,您事先不知道容器的高度。您必须计算高度,并根据高度重新排列所有其他容器(并且您必须为将来/过去创建的每个容器执行此操作)


因此,您可以尝试使用CSS,您可能会接近(当忽略旧浏览器时,可以使用CSS计算框
第n个子项
选择器将为您完成此操作),但您的布局不会像演示中那样灵活(blaskdemo)您提供了–不幸的是。

这里有两个选项,这完全取决于您希望块的顺序和元素之间的空间

您可以在下面的脚本中看到所有正在使用的技术

简言之CSS在这里可能还不够。 首先,让我们看看这里可能有用的所有CSS技术

  • 显示:内联块
  • 显示:表格
  • 漂浮
  • 纵队
  • 柔性箱
显示:内联块用于控制垂直对齐。 你知道顺序是从左到右。 但是这个空间没有得到适当的利用

显示:表的行为与内联块大致相同;(取决于设置)但在这里帮助不大

浮动:更好地利用空间。 但它的行为有点奇怪。(尝试在此处切换DOM中的元素。)

colums:很好地利用了空间。 但是顺序是基于列的,而不是文本方向。 您可能会在这里遇到一些特定于webkit的bug

flexbox:可以为您做很多事情。 在这里控制秩序是很棘手的。因为换行是基于列的。 否则,它的行为将类似于内联块

JS也参与了救援。 我不想承认这一点,但javascript可能是正确的选择。 有一种叫做同位素或砖石的东西你可以用。 这样,顺序是基于文本方向的,并且正确地使用了空格

您还可以使用其他CSS技术,或许可以获得更好的结果。 但到目前为止,它们的浏览器支持有限:

$(函数(){
$('.mashise')。mashise({
//选择权
项目选择器:'.Massive article'});
});
hr{
清除:左;
}
文章{
宽度:32%;
边缘顶部:15px;
颜色:#fff;
字体大小:20px;
}
.直列整块文章{
显示:内联块;
垂直对齐:顶部;
}
.浮动条款{
浮动:左;
宽度:32%;
左边距:3倍;
}
.栏目{
-webkit列数:3;
-moz列数:3;
列数:3;
-webkit列间距:0;
-moz列间距:0;
列间距:0;
}
.专栏文章{
宽度:100%;
}
.flexbox{
显示器:flex;
弯曲方向:立柱;
柔性包装:包装;
最大高度:500px;
}
.flexbox文章{
左边距:3倍;
}
.砖石制品{
左边距:3倍;
}

内联块:
1.
2.
3.
4.
5.
6.

浮动: 1. 2. 3. 4. 5. 6.
柱: 1. 2. 3. 4. 5. 6.
Flexbox: 1. 2. 3. 4. 5. 6.
砌体(JS): 1. 2. 3. 4. 5. 6.
您给出的示例(blaskdemo)使用javascript检测下一个可用的最高位置,然后使用内联样式(例如
style=“position:absolute;left:349px;top:252px;不透明性:1;
)将下一篇文章放在那里。我怀疑这可以在纯CSS中完成。这是一个很好的解决方案,但由于列的填充顺序,与我提供的示例不同。我将编辑我的问题以明确说明这一点。