【问题标题】:Wordpress posts in columns列中的 Wordpress 帖子
【发布时间】:2014-01-18 10:16:08
【问题描述】:

我正在尝试创建一个 wordpress 主题。我想要三个带有帖子摘录的专栏。但问题是它们并不总是具有相同的高度(我不希望它们如此),所以当一行中的帖子太高时,下一行开始时会离得太远。

嗯,我真的可以解释它,所以我创建了这个小提琴来说明我的意思:

//in the fiddle there is html and css making a clear example of what i mean

http://jsfiddle.net/59qyD/1/

如您所见,帖子 ID#5 太长,因此帖子 #7 不再位于帖子 #4 之下。

我想要找到一个解决方案,使帖子始终“上升”到该专栏中的上一个帖子。如果可能的话,不用任何插件...

有什么想法吗?

【问题讨论】:

    标签: php css wordpress multiple-columns


    【解决方案1】:

    要创建动态列高,无论是图片/帖子/产品,您都可以申请Masonry JS

    这个 JS 让你可以将上面一行中的每个新 div 放在前一个 div 下,并且显示效果很好。

    【讨论】:

    • 是的,砌体非常好。我想使用插件作为最后的手段,但也许我还是会来的! ;)
    • 您不需要使用插件(即使有插件我也不确定),您只需使用 JS 并使其满足您的需求(配置选择器...等); )
    • (+1) 我刚刚查看了一个演示站点,它似乎反应灵敏(正如作者另外要求的那样)!仍然有可能的不同解决方案(仅 CSS - 仅适用于现代浏览器)、PHP+CSS(适用于所有浏览器,但每个帖子应该生成多个类)并且可能还有更多 JS 解决方案(这只是可用的 JS 选项之一)...
    【解决方案2】:

    这是一个基于 PHP + CSS 的解决方案:

    PHP:

    $count = 0;
    $count_total = 10; // or use dynamic count: count($all_posts)
    $columns = 3;
    foreach ( $all_posts as $k=>$v ) {
        $count++;
        $is_first_column = false; // always set to false, then set to true only when the condition matches!
        // Now check is this a post for the first column
        if( $count==1 || ($count-1)%$columns==0 ) { // check if it's 1st and every 4,7,10 post and place it in 'column 1'
            // set additional class for every post that need to be placed in the first column
            $is_first_column = true;
        }
    
        // Now you can add the additional class to the html markup:
        <article id="post-<?php the_ID(); ?>" class="post col<?php if( !empty( $is_first_column ) ) { echo ' column_1'; } ?>">
    
    
    }
    

    然后使用 CSS 清除每个 .column_1 的浮动。

    CSS:

    .column_1 {
        clear: both;
    }
    

    我在多个项目中使用了类似的方法,并且效果很好。我可能需要对上面的代码进行一些修改以适用于您的特定主题,但我希望您能理解主要思想。

    它会在页面+ CSS 加载后立即生效(无需等待 JS 加载)! :-)

    【讨论】:

    • 有没有办法让它响应?比方说,当宽度
    • 能否请您检查以下想法(示例 1 和 2):(通过搜索找到:css nth of type odd even)w3schools.com/cssref/sel_nth-of-type.asp(另请注意: :nth-of-除了 IE8 和更早版本,所有主流浏览器都支持 type() 选择器。)。所以如果你需要 IE8 及更早版本,就需要 JS 解决方案。
    • 我刚刚意识到您可以使用上面的 PHP 解决方案并为每列生成 2 个类!例如,当您有 3 列时,使用类:col3_1、co3_2 和 col3_3;当您有 2 列时,请使用:col2_1 和 col2_2。然后您可以设置“col3_1、co3_2 和 col3_3”的样式,例如 960+ 宽度和“col2_1 和 col2_2”的样式更少... :-)
    • (+1) too :),是的,当然有很多原生的 php+css 解决方案,但它仍然是有限的,并且在显示时没有淡入淡出效果,它不能在所有浏览器上工作,至于加载取决于您在代码中推送js的位置:)
    猜你喜欢
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    相关资源
    最近更新 更多