在20分钟之后的大约4个小时,我预计用一些新的wordpress主题来设置砖石我已经决定我最好寻求帮助。
我的砌体工作正常,我的html模型网站中有图片加载,这里是精简的HTML代码。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<script src="imagesloaded.pkgd.min.js"></script>
<script src="masonry.pkgd.min.js"></script>
</head>
<body>
<div class="masonry-container js-masonry" data-masonry-options='{ "isFitWidth": true }'>
<div class="block-wrapper">content</div>
<div class="block-wrapper">content</div>
<div class="block-wrapper">content</div>
</div><!-- end masonry-container js-masonry -->
<script>
var container = document.querySelector('.masonry-container');
var msnry;
// initialize Masonry after all images have loaded
imagesLoaded( container, function() {
msnry = new Masonry( container );
});
</script>
</body>
</html>
问题:
我迄今为止所做的事
几乎我可以在googs上提出的一切。 (我计算了超过40个标签,试图找到答案)这是我开始时的简单变化..
在functions.php中的(函数中没有其他内容)
function enqueue_masonry() {
wp_enqueue_script('masonry');
}
add_action('wp_enqueue_scripts','enqueue_masonry');
在footer.php(imagesloaded)
<script>
var container = document.querySelector('.masonry-container');
var msnry;
// initialize Masonry after all images have loaded
imagesLoaded( container, function() {
msnry = new Masonry( container );
});
</script>
</body>
index.php中的(也尝试从functions.php而不是在html中初始化)
<div class="masonry-container js-masonry" data-masonry-options='{ "isFitWidth": true }'>
在header.php中
<?php wp_head(); ?>
</head>
备注
我的猜测
这是显而易见的事情
答案 0 :(得分:3)
对我自己的问题的一个令人尴尬的简单回答是我忘了在footer.php文件中包含<?php wp_footer(); ?>
。
然而,第二天,我发现ImagesLoaded并没有像人们期望的那样从页脚启动,所以这个答案已被重新编辑,以显示我如何使ImagesLoaded正常工作。
我应该注意到Masonry正在从html页内选项方法中正确启动,但帮助文件没有显示使用相同的页内方法启动ImagesLoaded的方法。
Backstory (可能对他人有用的一些信息)
第二天,在将一些带有缩略图的测试帖添加到测试博客后,我发现ImagesLoaded没有初始化,并且所有块都相互重叠。
然后我发现尝试使用来自footer.php的Javascript初始化甚至是Masonry也不起作用。
又过了一两个小时试图弄清楚为什么脚本都不会从footer.php或header.php初始化,我放弃了,然后回到this suggestion
..为什么不将它添加到.js文件中并使用加载对其进行排队 依赖于砌体脚本?那么你就不必添加了 jQuery代码通过钩子手动到页眉/页脚。
然后我再次找到这个问题并回答How can I make masonry and Imagesloaded work correct. (wordpress)并解释如何做到这一点。
感谢这两个人,我将再次编辑这个,并向您展示如何让Wordpress与Masonry一起正常工作,它现在内置了ImagesLoaded。
<强>目标强>
// to use scripts with wordpress they must first be enqueued
function enqueue_scripts() {
wp_enqueue_script('masonry');
wp_enqueue_script('masonryloader', get_stylesheet_directory_uri() . '/js/TaS-masonryInitializer.js', array( 'masonry', 'jquery' ) );
}
add_action('wp_enqueue_scripts','enqueue_scripts');
注释
(例如/ wp-content / themes / yourThemeName /)
创建名为&#39; js&#39;
在该文件夹中创建一个名为TaS-masonryInitializer.js的文件
将此Javascript复制并粘贴到该文件中..
(function( $ ) {
"use strict";
$(function() {
// set the container that Masonry will be inside of in a var
// adjust to match your own wrapper/container class/id name
var container = document.querySelector('.masonry-container');
//create empty var msnry
var msnry;
// initialize Masonry after all images have loaded
imagesLoaded( container, function() {
msnry = new Masonry( container, {
// adjust to match your own block wrapper/container class/id name
itemSelector: '.block-wrapper',
// option that allows for your website to center in the page
isFitWidth: true
});
});
});
}(jQuery));
注释
height: auto;
这很重要,就像许多响应式设计一样。"isFitWidth": true
就是这样做的。详细了解here。(或其他模板文件,具体取决于您希望使用砖石的网站)
<div class="masonry-container js-masonry">
<div class="block-wrapper">content</div>
<div class="block-wrapper">content</div>
<div class="block-wrapper">content</div>
</div><!-- end masonry-container js-masonry -->
注释
确保在结束身体标记之前包含wp_footer()
。
<?php wp_footer(); ?>
</body>
</html>
注释
确保你有..
<?php wp_head(); ?>
在</head>
之前
由于现在大多数人都在使用Masonry作为适合移动设备的网站,所以请确保包含以下代码(在头部和/头部之间),以便在移动浏览器上运行..
<meta name="viewport" content="width=device-width, initial-scale=1">
请告诉我有任何误解和我忽略的错误,并且我会尝试纠正错误。
用于编写hella好脚本的疯狂道具David DeSandro。看看他的网站,他创造了一些其他邪恶的东西。