php - 2 列中 float /内联 block 元素的间隙问题

标签 php html css

我正在处理的页面在 2 列中生成了许多元素,这些元素具有水平时间顺序:

1 2
3 4
5 6
7

由于列具有垂直时间顺序,我实际上并没有使用列,而是使用了各种 float 元素或内联 block 。

但是,由于生成的元素具有用户指定的内容,因此高度不可预测,这会导致许多问题:

场景一

如果左边的元素是一个 float ,如果右边的元素更短,它将漂浮到其他左边元素的右边,因为剩下更多的空间。

See illustration

场景2

如果左边的元素是一个内联 block ,它会像一个具有清除属性的 float 一样,左右元素之间的大小差异将保持“清除”,而不是被右边的 float 元素占用. 这将导致右列中出现尴尬的空格,因为那里的元素似乎想要跟随行内 block 中新行的开头。

See illustration

期望的最终结果类似于方案 2,但没有差距。有什么办法可以让这2列不互相干扰吗?

最佳答案

由于您的数据似乎不是很大,您有两条非常简单的路线可供选择。

其中之一是将数据集拆分为两个数组,每个数组包含各自的元素,例如:

$arrO = [];
$arrE = [];
$odd = true;
while($row = $result->fetch_assoc()){
  if($odd) $arrO[] = $row;
  else $arrE[] = $row;
  $odd = !$odd;
}

另一种选择是在数据集上循环两次并只选择您感兴趣的行:

$results = $result->fetch_all();
$odd = true;
foreach($results as $row){
  if($odd) //print something, or whatever :)
  $odd = !$odd;
}
$odd = true;
foreach($results as $row){
  if(!$odd) //print something, or whatever :)
  $odd = !$odd;
}

关于php - 2 列中 float /内联 block 元素的间隙问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48509257/

相关文章:

javascript - 从表单输入中获取文本。 Javascript

php - 这个 MySQL 语法有什么问题?

php - 如何检查php中mssql现有表

php - mysql 从批处理创建索引与 CLI 或 GUI 的比较

css 多重选择器最后一个不起作用

html - 按钮在所有浏览器中呈现的效果不一样

html - 垂直拉伸(stretch) div

php - 使用 ID 进行 INSERT 查询

html - flexbox:垂直居中两个div

javascript - 确保至少选中一个复选框