CSS中不同高度的块的垂直对齐[重复]

2024-02-05

我试图达到类似的效果this https://blaskdemo.wordpress.com/。也就是说,我有一些块(这里,articles)具有相同的宽度但可以具有不同的高度,并且我希望它们位于其上邻居的旁边。当内联显示文章并使用顶部垂直对齐时,文章仍按预期保持在行上:

<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>

我想如果我将文章设置到预定义的列中会更容易then在此列中垂直对齐,但据我所知,上面给出的示例中的情况并非如此(可能具有能够动态更改列数的优点)。

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

(另外,作为旁注,我需要articles彼此相邻,没有换行符,以防止中间出现虚假空格,但这在上面的页面中似乎不是问题)。

EDIT

我链接的页面的一个重要行为是我没有提到的是,文章的显示顺序或多或少与列出的顺序相同,因此可以保留时间顺序。


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

您可以在下面的脚本中看到所有正在运行的技术。

简而言之。 CSS 在这里可能还不够。

首先让我们看看所有在这里可能有用的 CSS 技术。

  • 显示:内联块;
  • 显示:表;
  • Floats
  • columns
  • flexbox

显示:内联块让您控制垂直对齐。 而你的顺序是从左到右。 但空间没有被正确利用。

显示:表行为与 inline-block 大致相同; (取决于设置)但这在这里没有多大帮助。

floats:更好地利用空间。 但它的行为有点奇怪。 (这里尝试切换 DOM 中的元素。)

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

flexbox:能为你做很多事。 控制这里的顺序很棘手。由于换行是基于列的。 否则它的行为类似于内联块;

JS 来救援。

我不愿意承认这一点,但 javascript 可能是正确的选择。 您可以使用一种称为同位素或砖石的东西。 这样,顺序是基于文本方向的,并且空间得到了正确的使用。

...

您还可以使用其他 CSS 技术,也许会得到更好的结果。 但目前这些浏览器支持有限:

  • CSS 区域 https://docs.webplatform.org/wiki/tutorials/css-regions
  • CSS 网格布局 http://www.w3.org/TR/css3-grid-layout/
$(function(){
  $('.masonry').masonry({
    // options
    itemSelector : '.masonry article'});
});
hr  {
 clear: left; 
}

article {
  width: 32%;
  margin-top: 15px;
  
  color: #fff;
  font-size: 20px;
}

.inline-block article {
  display: inline-block;
  vertical-align: top;
}

.float article {
  float: left;
  width: 32%;
  margin-left: 3px;  
}

.columns {
  -webkit-column-count: 3;
     -moz-column-count: 3;
          column-count: 3;

  -webkit-column-gap: 0;
     -moz-column-gap: 0;
          column-gap: 0;
}
  .columns  article{
     width: 100%;
  }

.flexbox {
  display: flex; 
  flex-direction: column; 
  flex-wrap: wrap;
  max-height: 500px;
}
  .flexbox article {
    margin-left: 3px;  
  }

.masonry article {
  margin-left: 3px;  
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="http://desandro.github.io/masonry/jquery.masonry.min.js"></script>

Inline-block: 
<div class="inline-block">
  <article style="height:300px;background:red">1</article>
  <article style="height:100px; background:blue">2</article>
  <article style="height:200px;background:green">3</article>  
  <article style="height:100px;background:orange">4</article>
  <article style="height:200px;background:purple">5</article>
  <article style="height:200px;background:black">6</article> 
</div>

<hr />

Floats: 
<div class="float">
  <article style="height:300px;background:red">1</article>
  <article style="height:100px; background:blue">2</article>
  <article style="height:200px;background:green">3</article>  
  <article style="height:100px;background:orange">4</article>
  <article style="height:200px;background:purple">5</article>
  <article style="height:200px;background:black">6</article>   
</div>

<hr />

Columns: 
<div class="columns">
  <article style="height:300px;background:red">1</article>
  <article style="height:100px; background:blue">2</article>
  <article style="height:200px;background:green">3</article>  
  <article style="height:100px;background:orange">4</article>
  <article style="height:200px;background:purple">5</article>
  <article style="height:200px;background:black">6</article>   
</div>

<hr />

Flexbox: 
<div class="flexbox">
  <article style="height:300px;background:red">1</article>
  <article style="height:100px; background:blue">2</article>
  <article style="height:200px;background:green">3</article>  
  <article style="height:100px;background:orange">4</article>
  <article style="height:200px;background:purple">5</article>
  <article style="height:200px;background:black">6</article>   
</div>

<hr />

Masonry (JS): 
<div class="masonry">
  <article style="height:300px;background:red">1</article>
  <article style="height:100px; background:blue">2</article>
  <article style="height:200px;background:green">3</article>  
  <article style="height:100px;background:orange">4</article>
  <article style="height:200px;background:purple">5</article>
  <article style="height:200px;background:black">6</article>   
</div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CSS中不同高度的块的垂直对齐[重复] 的相关文章

  • 如何使用div绘制曲线?

    我需要使用 CSS 绘制两条曲线 我尝试过组装一些divs 使用CSSborder radius绘制弧形面板 但结果很糟糕 还有更好的算术吗 正如我之前在评论中提到的 请不要使用CSS用于实现复杂的曲线和形状 虽然仍然可以使用 CSS 来实
  • 如何实现右边缘倾斜的 div? [复制]

    这个问题在这里已经有答案了 我几天来一直在寻找使 div 的右边缘倾斜 45 度的代码 这是我特别想要得到的图像示例 似乎有很多 倾斜边缘 div 的示例 但我找不到任何具有特定右侧倾斜的示例 我花了很多时间试图改变其他人的代码 但结果却一
  • CSS:多属性选择器

    我想设置 电子邮件 和 密码 类型的表单输入样式 但不设置其他任何样式 我正在想象类似以下的事情 input type email type password 然而 属性选择器的工作方式似乎将其解释为 输入 其中类型同时是 电子邮件 and
  • 由于固定导航,增加了 FancyBox v2 的顶部和底部边距

    我目前正在开发一个网站 该网站将来将具有响应能力 该网站主要由图像组成 单击这些图像会加载到 FancyBox 中 FancyBox v2 现在具有响应能力 因此可以在屏幕尺寸发生变化时重新调整图像等的大小 作为我设计的一部分 我有两个固定
  • 文本后面有粗下划线

    如何使用 span 和 css 在文本 ABC 后面重现这种下划线 我已经能够做下划线below嵌套的文本span和彩色的border bottom 但无法获取behind图像和above文本基线 p style font size 48p
  • 响应式导航栏隐藏其下方的元素

    我创建了一个响应式导航栏 但它使下面的元素 Flexslider 插件 消失 在我制作导航栏之前 下面的 Flexslider 可以正常显示 但现在不行 导航栏的 z index 为 2 所以我不知道问题是什么 我应该如何 更改什么才能允许
  • 两种颜色边框

    客户想要两种颜色的边框以获得浮雕外观 我可以在一个元素上执行此操作吗 我希望避免堆叠两个具有单独边框的 DOM 元素 是的 使用outline财产 它充当您边界之外的第二个边界 但请注意 它可能会以一种奇怪的方式与边距 填充和阴影进行交互
  • CSS:缩放字体大小以适应父块元素的高度

    我发现的几乎每个问题和答案都谈到了视口大小 这确实不是我的问题 拿着这支笔 https codepen io njt1982 pen pZjZNM https codepen io njt1982 pen pZjZNM 我有一个非常基本的
  • 由于 MIME 类型不受支持,拒绝应用样式

    我不断收到一条错误消息 指出 MIME 类型 text html 不可执行或不是受支持的样式表 MIME 类型 并且启用了严格的 MIME 检查 我的链接代码是
  • 使用 CSS 的平行四边形导航背景

    我正在尝试创建此导航菜单 绿色突出显示是活动页面 灰色是悬停状态 我可以使用以下 CSS 制作平行四边形 ul nav li a text decoration none padding 4px 10px border radius 3px
  • 从 Bootstrap 中删除字形

    如何从 bootstrap 3 中删除所有字形实例 看起来它已经大量嵌入到 css 文件中了 我正在努力使文件大小尽可能最小 只需简单地克隆引导程序https github com twbs bootstrap sass https git
  • 每 3 秒重复一次动画

    我正在使用 WOW js 和 animate css 现在我正在将 CSS 运行到 Infinite 我想知道如何让我的课程运行 3 秒停止并再次开始到无限 My html img src images fork png class for
  • 删除数据表列中的额外填充

    你好 我创建了 JQuery DataTables 如下所示 所以我的问题是如何删除 图片 列中过多的填充 这就是我初始化表的方式 violators tbl DataTable aoColumnDefs bSortable false a
  • 使用 JavaScript 使链接保持活动状态并在单击时显示悬停效果

    I am struggling to make this work I d like to make it where if O F is clicked the hover state stays active if another li
  • 如何将背景图像仅应用于一个反应页面而不是整个应用程序?

    注册页面示例 register background image linear gradient to right ff5722 0 ff9800 100 margin top 150px important div div div div
  • 现在 CSS3 供应商前缀有多必要? [复制]

    这个问题在这里已经有答案了 我只是想知道现在在 CSS 中指定 webkit moz ms 或 o 等供应商前缀在多大程度上仍然有必要 如果我理解正确的话 opera 切换到了 webkit 所以会删除 o 对吗 IE 在 IE10 中不再
  • 避免响应式页面的重复内容

    我目前正在做一个涉及响应式设计的项目 整个布局应该使用HTML和CSS来实现 我知道可以使用 java 脚本将内容从一个列布局移动到另一列布局 而无需复制内容 但是使用 HTML 和 CSS 是否可以实现相同的效果 以下面的例子为例 它会在
  • 如何在没有@import的情况下减少@import?

    我用的较少 从 Google PageSpeed 我了解到 使用 importCSS 文件中的内容会影响网站速度 所以我想排除任何 import来自我的 CSS 的东西 我有 2 个不同的样式表reset css and rebuild c
  • 如何仅在最后一个
  • 处给出透明六边形角度?
  • 我必须制作这样的菜单 替代文本 http shup com Shup 330421 1104422739 My Desktop png http shup com Shup 330421 1104422739 My Desktop png
  • FireFox 中的“contenteditable = true”高度问题

    当有空的时候div with contenteditable true CSS contenteditable true border 1px dashed dedede padding 3px HTML div div 在 IE 和 Ch

随机推荐

  • RxJs 中是否有“异步”版本的过滤器运算符?

    我需要通过针对某些 Web 服务检查条目来过滤可观察对象发出的条目 普通的 observable filter 运算符在这里不适合 因为它期望谓词函数同步返回判决 但在这种情况下 只能异步检索判决 我可以通过以下代码进行移位 但我想知道是否
  • 使用 Csrf 的 Spring Security 单元测试导致找不到 HttpServletResponse

    我无法在其他地方找到这个问题 我的单元测试设置如下 RunWith SpringJUnit4ClassRunner class SpringApplicationConfiguration classes Application class
  • Visual Studio 2013 Update 4 更改 MSFakes Shim 对象的默认行为

    我们有一套单元测试 其中一些使用 MS Fakes 在 Update 4 之前 它们运行成功 应用更新 4 后 实例化填充类型的测试失败 并出现 ShimNotImplemented 异常 这已经通过在两台不同的机器上执行相同的代码库得到了
  • 控制 grid.layout 中的内部图形边距

    我正在尝试在网格中绘制多个格子图 为此 我使用以下代码 plot lt xyplot 1 10 1 10 page layout lt grid layout nrow 2 ncol 1 widths unit c 1 null heigh
  • 在自定义适配器的列表视图项中加载不同的图像

    您好 如果我在解释问题时有误 请原谅我 我有一个自定义基本适配器 其中有两个 imageView 和两个 TextView 我使用异步任务从 URL 设置图像 它会设置图像 但会自动再次更改图像 下面是适配器的代码 public class
  • 使用声明性命令创建 Kubernetes Pod 时出现 ErrImagePull:401 Unauthorized

    我正在开展一个实验室 展示如何在 IBM Cloud 上设置 Kubernetes 和 CLI 我有 Kubernetes 集群设置和容器注册表 我在 CLI 上登录到 IBM Cloud 和 Container Registry 镜像已创
  • 加密密钥未经授权用于持续部署 Travis → Heroku

    我正在尝试配置币管家 http www coinsmanager com 以便阿尔法版本 http alpha coinsmanager com Travis 持续集成后自动部署 这是我们的 travis yml file language
  • 如何获取颤振中列表视图滚动的索引号?

    我在 flutter 应用程序中使用下面的列表视图生成器代码 我需要在滚动时获取列表中项目的索引 就像函数一样onPageChanged 使用时PageView Builder return ListView builder itemCou
  • 在 MVC 控制器中处理 DbContext,哪种方式“更好”?

    在 MVC 5 中 脚手架代码将类似于 public class MyController Controller private MyContext db new MyContext protected override void Disp
  • 使用fences清理命令缓冲区并同时同步交换链图像

    假设我有一个交换链 其中包括n图像和我允许k 飞行中的帧 我确保之间的正确同步vkAcquireNextImageKHR vkQueueSubmit and vkQueuePresentKHR通过一组信号量imageAvailableSem
  • 更改 MGTwitterEngine 的委托

    我已经使用 MGTwitterEngine 的扩展类通过 xAuth 设置并成功登录 我的问题是如果我想将其传递给另一个视图控制器 我如何更改委托类 因为它是某种弱引用 interface MGTwitterEngine NSObject
  • iOS swift 流媒体应用程序无法在后台模式下播放音乐

    我的应用程序运行良好 但一旦屏幕安全打开或在 iPhone 上执行其他操作 流就会停止 我激活了后台模式 正在播放音频 但这没有帮助 这是我的 ViewController swift import UIKit import MediaPl
  • HTML 5 是否需要 ``

    当编写 html 5 文档类型时 您是否应该包含就像您之前使用 HTML4 doctype 时所做的那样 还是应该使用不同的 xhtml HTML5 不需要使用xmlns属性 因为它是 XHTML 特有的 这意味着甚至 HTML 4 也不使
  • PHP - 魔术引号 gpc 和 stripslashes 问题

    好的 我的托管公司有magic quotes gpc turned ON我使用以下代码编写了我的 PHP 脚本stripslashes 在此准备过程中 但现在托管公司表示将转向magic quotes gpc关闭 我想知道现在我的数据会发生
  • 类型同义词对类型类的实例有什么影响? GHC 中的 TypeSynonymInstances 编译指示有何作用?

    我正在阅读现实世界哈斯克尔第151页 我盯着下面这段话看了一个多小时 回想一下 字符串是以下的同义词 Char 它又是类型 a 其中 Char 替换为类型 参数a 根据 Haskell 98 的 规则 我们不允许提供 在以下情况下用类型代替
  • 用 .NET 编写的服务可以自行终止吗?

    我有一个用 C 编写的服务应用程序 在某些情况下 我希望它自行终止 这会在服务运行一段时间后发生 因此在 OnStart 事件中不会发生这种情况 到目前为止我读到的所有内容都表明终止服务的唯一安全方法是通过服务控制管理器 我的服务作为本地服
  • 单元测试实体框架

    我刚刚开始使用 Entity Framework v4 和 Linq 我有一个实体数据模型 它是从数据库生成的 然后 我实现了存储库类 以便实现我的实体的业务逻辑 它们包含用于与实体 数据库交互的 LINQ 查询 在不访问数据库的情况下对我
  • delphi 对象赋值与:=

    有人可以解释一下以下之间的区别 1 newObj TMyObject Create newObj Assign oldObj and 2 newObj oldObj 2 确实newObj and oldObj引用同一个对象 抱歉 如果之前已
  • acts_as_taggable_on 标签添加两次

    我有一个 RoR 应用程序 允许用户标记其集合中的项目 我使用 tag it js Jquery 插件并使用 Ajax 调用在 ItemsController 中添加和删除标签 我的问题是每个标签添加两次 因此当我执行 item tags
  • CSS中不同高度的块的垂直对齐[重复]

    这个问题在这里已经有答案了 我试图达到类似的效果this https blaskdemo wordpress com 也就是说 我有一些块 这里 articles 具有相同的宽度但可以具有不同的高度 并且我希望它们位于其上邻居的旁边 当内联