这是乔什·波洛克的客座文章
一段时间以来,类似 Pinterest的帖子网格显示一直是 WordPress 博客索引页面的流行设计。它之所以受欢迎,不仅是因为它模仿了流行的社交媒体网站的外观,还因为它充分利用了屏幕上的空间。在 WordPress 博客索引上,它允许每个帖子预览成为它自然需要的大小,而不会留下额外的空间。
在本教程中,我将向您展示如何使用流行的 Masonry JavaScript 库为您的博客索引创建级联网格布局,以及为您的主题创建存档页面。我将解决一些移动优化需要考虑的问题以及如何解决这些问题。
注意:这是一个高级教程,适合那些喜欢编辑 WordPress 主题并具有足够的 HTML/CSS 知识的人。
第 1 步:为您的主题添加必要的库
更新:WordPress 3.9 现在包含最新版本的 Masonry。
首先,您需要使用以下代码将 Masonry 加载到您的主题中:
if (! function_exists(‘slug_scripts_masonry’) ) :if ( ! is_admin() ) :function slug_scripts_masonry() { wp_enqueue_script(‘masonry’); wp_enqueue_style(‘masonry’, get_template_directory_uri().’/css/’);}add_action( ‘wp_enqueue_scripts’, ‘slug_scripts_masonry’ );endif; //! is_admin()endif; //! slug_scripts_masonry exists
此代码只是加载砌体并使其可用于主题的模板文件(请参阅我们的指南,了解如何在 WordPress 中正确添加 JavaScript 和样式)。另请注意,我们没有添加 jQuery 作为两者的依赖项。Masonry 3 的优点之一是它不需要 jQuery,但可以与它一起使用。以我的经验,在没有 jQuery 的情况下初始化 Masonry 更可靠,并打开了跳过加载 jQuery 的可能性,这有助于解决页面加载时间和兼容性问题。
第 2 步:初始化 Javascript
下一个函数设置 Masonry,定义将与它一起使用的容器,并确保一切都以正确的顺序发生。Masonry 需要计算页面上每个项目的大小,以便动态布局其网格。我在许多浏览器中使用 Masonry 时遇到的一个问题是,Masonry 会错误地计算加载图像缓慢的项目的高度,从而导致项目重叠。解决方案是使用 imagesLoaded 来防止 Masonry 计算布局,直到所有图像都加载完毕。这确保了适当的尺寸。
这是将在页脚中输出初始化脚本的函数和操作:
if ( ! function_exists( ‘slug_masonry_init’ )) :function slug_masonry_init() { ?>
该功能通过内联注释逐步解释。Javascript 函数的作用是告诉 Masonry 在 id 为“masonry-loop”的容器中查找具有“masonry-entry”类的项目,并仅在加载图像后计算网格。我们使用 querySelector 设置外部容器,使用 itemSelector 设置内部容器。
第 2 步:创建砌体循环
我们将为其创建一个单独的模板部分,而不是将 Masonry 的 HTML 标记直接添加到模板中。创建一个名为“content-masonry.php”的新文件并将其添加到您的主题中。这将允许您将 Masonry 循环添加到任意数量的不同模板中。
在您的新文件中,您将添加如下所示的代码。该标记类似于您通常会在任何内容预览中看到的标记。您可以随意修改它,只要确保最外面的元素具有我们在上一步中设置为 itemSelector 的“masonry-entry”类。