- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经看到很多关于此的问题但没有答案(至少没有一个对我有帮助)。
我的设置非常简单 - 一个带有图像的流体容器(没有固定宽度)。
我在 CSS 中设置了每个 div 项目占 25%,并且我在其中设置了图片以填充 div。
我已将同位素设置为仅在 imagesLoaded 后运行。
问题是在初始加载时,元素没有正确定位。它们之间有一些填充物,甚至可以从容器中取出。只有在我调整窗口大小时,它们才会正确定位,即使那时我将窗口恢复为全屏。
你知道为什么会这样吗?
这是我的代码:
HTML:
<div id="main">
<div class="item"><img src="http://lorempixel.com/300/200/"></div>
<div class="item"><img src="http://lorempixel.com/440/300/"></div>
<div class="item"><img src="http://lorempixel.com/450/560/"></div>
<div class="item"><img src="http://lorempixel.com/410/270/"></div>
<div class="item"><img src="http://lorempixel.com/440/230/"></div>
<div class="item"><img src="http://lorempixel.com/470/460/"></div>
<div class="item"><img src="http://lorempixel.com/400/200/"></div>
<div class="item"><img src="http://lorempixel.com/430/780/"></div>
<div class="item"><img src="http://lorempixel.com/400/520/"></div>
<div class="item"><img src="http://lorempixel.com/420/120/"></div>
<div class="item"><img src="http://lorempixel.com/500/260/"></div>
<div class="item"><img src="http://lorempixel.com/200/200/"></div>
<div class="item"><img src="http://lorempixel.com/100/200/"></div>
<div class="item"><img src="http://lorempixel.com/400/200/"></div>
<div class="item"><img src="http://lorempixel.com/890/200/"></div>
<div class="item"><img src="http://lorempixel.com/400/200/"></div>
<div class="item"><img src="http://lorempixel.com/400/200/"></div>
</div>
CSS:
#main{margin-right:250px;}
#main .item { width: 25%;}
#main .item img { width:100%;height:100%;}
JS:
var $container = $("#main");
$container.imagesLoaded(function () {
$container.isotope({
itemSelector: ".item",
});
});
任何人都可以解释这种行为......?
更新
这是一个演示问题的 jsfiddle:http://jsfiddle.net/f35azgdj/2/
请注意元素之间如何留有一些空间,这些空间在调整大小时消失了。顺便说一句,由于某种原因,即使在调整大小后水平间距仍然存在。
另一个更新
我认为它与滚动条有关,因为当我减少元素的数量并且它们在没有滚动条的情况下适合时,它起作用了。
我认为这意味着在初始加载时同位素正在计算容器大小而不考虑滚动条从中占用一点空间,因此它认为它具有比实际更大的空间,因此它相应地定位元素。然后,由于元素使用 CSS 设置为容器的 25%,它们的大小是根据较小的容器大小(考虑滚动条)计算的,因此它们之间留有空白。
谁能想到这是我这边的错误还是错误的设置?
谢谢!
阿摩司
最佳答案
好的,所以我发现了问题,据我所知这是错误。
当您的元素多于屏幕大小时,会出现垂直滚动条。
这个滚动条占用了一些屏幕空间,所以容器 div 现在变小了。
问题是 isotope 在滚动条出现之前计算容器的大小,所以它认为还有一点空间,并相应地定位元素。
然后元素本身根据容器的正确大小进行计算,这意味着它们要小一点,这会导致它们之间出现空白。另一个影响是它们从容器的大小溢出,因此也会出现水平条。
调整大小时,重新计算容器大小,这次考虑了垂直条,所以都固定了。
所以解决方案:
选项一:在第一次计算完成后立即重新计算容器。我发现这很好用:
$container.imagesLoaded(function () {
$container.isotope({
itemSelector: ".item",
isOriginLeft: false,
});
$container.isotope();
});
请注意对 $container.isotope()
的第二次调用。这会起作用,但会产生双重调整效果,并且还会有一小段时间您会看到一个水平滚动条。但它不会像选项 2 那样强制您始终使用垂直滚动条。
选项 2:向页面添加一个永远在线的垂直滚动条。这将有助于同位素在考虑滚动条的情况下正确计算容器。
html {overflow-y: scroll;}
无论如何,我仍然不确定这是错误还是我需要进行不同的配置。会喜欢你的想法。同时,这解决了我的问题,所以在出现更好的解决方案之前,我想我会将其标记为解决方案。
谢谢!
阿摩司
关于jquery-isotope - 元素之间的同位素空白,直到调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26549051/
Isotope 将此样式添加到项目中: position: absolute; left: 0px; top: 0px; -webkit-transform: translate3d(0px, 0px
我结合使用 Bootstrap 和 PHP 来创建投资组合部分。 我有大约 12 个元素,我想在每一行显示其中的 4 个。 问题是无论我做什么,单位都粘在容器的左侧,我似乎无法将它们居中,即使在 SO
我有一个同位素项目,当有人在其中发表评论时,它的高度会增加。当它生长时,我如何告诉主同位素容器随它一起生长?现在正在发生的事情是,随着同位素项目的增长,同位素容器保持其在调用 $(".home_mai
是否可以在页面上多次使用同位素,即对不同的数据集使用不同的文件管理器? 似乎代码需要使用某些ID,例如无法更改的“ #options”。 为了实现此目的,我需要对代码进行哪些更改? 最佳答案 有可能的
我正在使用 Isotope 插件和 Infinite Scroll 插件。使用默认设置无限滚动会自动触发加载新元素,这很好,但是,我宁愿有一个按钮“加载更多图像”。 我只缺少一小段代码,可以从无限滚动
我正计划使用出色的同位素插件显示联系人列表,然后对其进行过滤。我的问题是,它适用于较小的数据集,但我不确定将其扩展为1000多个数据的最佳方法。 到目前为止,我的想法是: 加载一个随机子集,然后在单击
我一直在使用 jQuery 的同位素插件,我的主页遇到了一些问题,它需要两个同位素实例。 它们都有不同类型的元素,并且保存在自己的容器中,但是当我单击第二个同位素实例上的过滤器时,它也会尝试过滤第一个
我在页面上有一个基本的照片布局(用于作品集)。有两种不同尺寸的图像 block ,较大的图像 block 与较小的图像 block 成比例,并且正好是宽度和高度的两倍, block 或窗口之间没有边距
我已经使用很棒的 jQuery Isotope 插件设置了一个员工简介页面。 布局是标准的 4 列网格,所有项目的大小相同。当用户单击某个项目时,该行中的前一个项目将使用“插入”方法附加到布局中,然后
我正在使用 jquery 同位素和无限滚动,并且想要使用图像预加载器 我使用的图像预加载器是这样的:Image preloader $('.image').preloader({ loader
我正在尝试使用 jQuery Isotope 对这些元素进行排序插入。我无法让我选择的选项与左上角对齐,它只是移动到网格的底部。我查看了 sortAscending 选项,但它破坏了我放置内容的顺序。
如何将自定义类添加到此 jQuery 同位素过滤并计算同位素过滤的项目: $(function(){ var $container = $('#wrap-planspiel'),
我开始在我的项目中使用很棒的 JQuery Isotope 插件。一切都很好,但我在角钉选项方面遇到了一个问题。 我的masnory网格中的每个元素都有固定宽度(220px + 5边距)和随机高度(取
我的网站出现问题。我在 IE8/9 上遇到网页错误: Object doesn't support this property or method 'isotope' Line: 47 Char: 3
我已经看到很多关于此的问题但没有答案(至少没有一个对我有帮助)。 我的设置非常简单 - 一个带有图像的流体容器(没有固定宽度)。 我在 CSS 中设置了每个 div 项目占 25%,并且我在其中设置了
我在两个不同的部分中有这些复选框: 55+ Exclusive All-Ages Classic Homes NVHo
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我在 http://pressedweb.com/portfolio 制作了一个我非常满意的作品集,但是当我调整窗口大小时,它不会像本例中那样重新组织容器项目: http://isotope.meta
在 David DeSandro 的有趣同位素实现列表中,有一个 http://www.wonderfulwebsolutions.net/单击元素后显示其他内容(图像、文本、链接等)。虽然作为 jQ
如何在 beautiful-beautiful jQuery Isotope 中覆盖自动左对齐(Source on GitHub)? 谢谢! 最佳答案 您有两个选择:重新设计 Isotope 的布局逻
我是一名优秀的程序员,十分优秀!