不规则行但规则列与 Twitter-Bootstrap 3
Irregular rows but regular columns with Twitter-Bootstrap 3
我正在尝试实现一种布局,其中有 4 列,其中内容位于能够垂直堆叠的框中。这意味着没有规则的行(每个内容框可以有不同的高度),只有规则的列(内容框总是有相同的宽度)。
问题是 - 我不知道如何通过 PHP 循环来完成。那是因为我必须将第一个 post 放入第一列,第二个 post 放入第二列,第三个放入第 3 列,第四个放入第 4 列,然后是第 5 个 post 再次进入第 1 列等
所以有四列和二十个post,最新的post在顶部,最旧的在底部。
这是我已有的屏幕截图,您可以看到不规则行和规则列的概念:
根据要求,我的代码:
$counter = 0;
for($cols = 0; $cols < 4; $cols++) {
?>
<!-- COLUMN NR <?php echo $cols; ?> -->
<div class="col-xs-12 col-sm-6 col-md-3 col-lg-3 post_box">
<?php
foreach ($post_list as $p) {
$the_post = get_post($p);
$the_title = $the_post->post_title;
$the_content = $the_post->post_content;
if($counter == (0 + $cols) || $counter == (4 + $cols) || $counter == (8 + $cols) || $counter == (12 + $cols) || $counter == (16 + $cols) ) {
?>
<!-- POST NR <?php echo $counter; ?> WITH ID <?php echo $p; ?> -->
<div class="post_container">
<a href="<?php echo get_permalink($the_post->ID); ?>">
<div class="row postbox_title">
<div class="col-xs-12 title_col">
<h2><?php echo $the_title; ?></h2>
</div>
</div>
<div class="row postbox_content">
<div class="col-xs-12 content_col">
<div class="post_content">
<?php echo '<p>'.$the_content.'</p>'; ?>
</div>
</div>
</div>
</a>
</div>
<?php
}
$counter++;
}
?>
</div>
<?php
}
这是我的代码的屏幕截图,以使其更具可读性:
http://scr.hu/5z5a/icinl
你要找的是Masonrycss,只需要html和css就可以了。
#CSS:
.masonry { /* Masonry container */
-moz-column-count: 4;
-webkit-column-count: 4;
column-count: 4;
-moz-column-gap: 1em;
-webkit-column-gap: 1em;
column-gap: 1em;
}
.item { /* Masonry bricks or child elements */
display: inline-block;
margin: 0 0 1em;
width: 100%;
}
#HTML:
<div class="masonry">
<div class="item">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</div>
<div class="item">Neque, vitae, fugiat, libero corrupti officiis sint facilis tempora quidem repudiandae praesentium odit similique adipisci aut.</div>
<div class="item">Incidunt sit unde minima in nostrum?</div>
<div class="item">Ducimus, voluptates, modi, delectus animi maiores consequuntur repellat quisquam fugiat eum possimus enim culpa totam praesentium magni quae!</div>
</div>
您可以将帖子分成 4 个数组,然后使用 foreach 创建列。像(伪代码):
// one foreach to divide posts
$col = 1;
foreach($posts as $post) {
$cols[$col][] = $post;
$col = $col == 4 ? 1 : $col+1;
}
// then, another foreach for the html
foreach($cols as $col) {
// open col div
foreach($col as $post) {
// print post
}
// close col div
}
可以看到代码输出here.
好的,感谢@Chorna,我设法分叉了他的答案并解决了我的问题!谢谢你:).
我以这种方式将帖子加载到数组中:
switch($post_counter) {
case 0:
case 4:
case 8:
case 12:
case 16:
$col = 1;
break;
case 1:
case 5:
case 9:
case 13:
case 17:
$col = 2;
break;
case 2:
case 6:
case 10:
case 14:
case 18:
$col = 3;
break;
case 3:
case 7:
case 11:
case 15:
case 19:
$col = 4;
break;
}
$post_list[$col][] = get_the_ID();
$post_counter++;
然后我这样显示它们:
foreach($post_list as $post_element) {
?>
<!-- COLUMN NR <?php echo $cols; ?> -->
<div class="col-xs-12 col-sm-6 col-md-3 col-lg-3 post_box">
<?php
foreach ($post_element as $p) {
$the_post = get_post($p);
$the_title = $the_post->post_title;
$the_content = $the_post->post_content;
?>
<!-- POST NR <?php echo $counter; ?> WITH ID <?php echo $p; ?> -->
<div class="post_container">
<a href="<?php echo get_permalink($the_post->ID); ?>">
<div class="row postbox_title">
<div class="col-xs-12 title_col">
<h2><?php echo $the_title; ?></h2>
</div>
</div>
<div class="row postbox_content">
<div class="col-xs-12 content_col">
<div class="post_content">
<?php echo '<p>'.$the_content.'</p>'; ?>
</div>
</div>
</div>
</a>
</div>
<?php
}
谢谢大家的帮助!
我正在尝试实现一种布局,其中有 4 列,其中内容位于能够垂直堆叠的框中。这意味着没有规则的行(每个内容框可以有不同的高度),只有规则的列(内容框总是有相同的宽度)。
问题是 - 我不知道如何通过 PHP 循环来完成。那是因为我必须将第一个 post 放入第一列,第二个 post 放入第二列,第三个放入第 3 列,第四个放入第 4 列,然后是第 5 个 post 再次进入第 1 列等
所以有四列和二十个post,最新的post在顶部,最旧的在底部。
这是我已有的屏幕截图,您可以看到不规则行和规则列的概念:
根据要求,我的代码:
$counter = 0;
for($cols = 0; $cols < 4; $cols++) {
?>
<!-- COLUMN NR <?php echo $cols; ?> -->
<div class="col-xs-12 col-sm-6 col-md-3 col-lg-3 post_box">
<?php
foreach ($post_list as $p) {
$the_post = get_post($p);
$the_title = $the_post->post_title;
$the_content = $the_post->post_content;
if($counter == (0 + $cols) || $counter == (4 + $cols) || $counter == (8 + $cols) || $counter == (12 + $cols) || $counter == (16 + $cols) ) {
?>
<!-- POST NR <?php echo $counter; ?> WITH ID <?php echo $p; ?> -->
<div class="post_container">
<a href="<?php echo get_permalink($the_post->ID); ?>">
<div class="row postbox_title">
<div class="col-xs-12 title_col">
<h2><?php echo $the_title; ?></h2>
</div>
</div>
<div class="row postbox_content">
<div class="col-xs-12 content_col">
<div class="post_content">
<?php echo '<p>'.$the_content.'</p>'; ?>
</div>
</div>
</div>
</a>
</div>
<?php
}
$counter++;
}
?>
</div>
<?php
}
这是我的代码的屏幕截图,以使其更具可读性: http://scr.hu/5z5a/icinl
你要找的是Masonrycss,只需要html和css就可以了。
#CSS:
.masonry { /* Masonry container */
-moz-column-count: 4;
-webkit-column-count: 4;
column-count: 4;
-moz-column-gap: 1em;
-webkit-column-gap: 1em;
column-gap: 1em;
}
.item { /* Masonry bricks or child elements */
display: inline-block;
margin: 0 0 1em;
width: 100%;
}
#HTML:
<div class="masonry">
<div class="item">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</div>
<div class="item">Neque, vitae, fugiat, libero corrupti officiis sint facilis tempora quidem repudiandae praesentium odit similique adipisci aut.</div>
<div class="item">Incidunt sit unde minima in nostrum?</div>
<div class="item">Ducimus, voluptates, modi, delectus animi maiores consequuntur repellat quisquam fugiat eum possimus enim culpa totam praesentium magni quae!</div>
</div>
您可以将帖子分成 4 个数组,然后使用 foreach 创建列。像(伪代码):
// one foreach to divide posts
$col = 1;
foreach($posts as $post) {
$cols[$col][] = $post;
$col = $col == 4 ? 1 : $col+1;
}
// then, another foreach for the html
foreach($cols as $col) {
// open col div
foreach($col as $post) {
// print post
}
// close col div
}
可以看到代码输出here.
好的,感谢@Chorna,我设法分叉了他的答案并解决了我的问题!谢谢你:).
我以这种方式将帖子加载到数组中:
switch($post_counter) {
case 0:
case 4:
case 8:
case 12:
case 16:
$col = 1;
break;
case 1:
case 5:
case 9:
case 13:
case 17:
$col = 2;
break;
case 2:
case 6:
case 10:
case 14:
case 18:
$col = 3;
break;
case 3:
case 7:
case 11:
case 15:
case 19:
$col = 4;
break;
}
$post_list[$col][] = get_the_ID();
$post_counter++;
然后我这样显示它们:
foreach($post_list as $post_element) {
?>
<!-- COLUMN NR <?php echo $cols; ?> -->
<div class="col-xs-12 col-sm-6 col-md-3 col-lg-3 post_box">
<?php
foreach ($post_element as $p) {
$the_post = get_post($p);
$the_title = $the_post->post_title;
$the_content = $the_post->post_content;
?>
<!-- POST NR <?php echo $counter; ?> WITH ID <?php echo $p; ?> -->
<div class="post_container">
<a href="<?php echo get_permalink($the_post->ID); ?>">
<div class="row postbox_title">
<div class="col-xs-12 title_col">
<h2><?php echo $the_title; ?></h2>
</div>
</div>
<div class="row postbox_content">
<div class="col-xs-12 content_col">
<div class="post_content">
<?php echo '<p>'.$the_content.'</p>'; ?>
</div>
</div>
</div>
</a>
</div>
<?php
}
谢谢大家的帮助!