【发布时间】:2016-03-11 16:48:20
【问题描述】:
我有一个使用 Metafizzy 的同位素创建的可过滤网格。
它几乎可以完美运行,但在过渡期间内容“闪烁”存在问题。如果我禁用转换没有问题,所以我只能假设问题出在转换本身。
我附上了错误的图片。您可以看到显示的内容是页面上各种元素的故障。
任何建议表示赞赏!
编辑:这似乎是 Chrome 特有的问题
JS
$( function() {
// Init Isotope
var $grid = $('.grid').isotope({
itemSelector: '.grid-item',
percentPosition: true,
transitionDuration: 0.2,
masonry: {
columnWidth: '.grid-sizer',
gutter: '.gutter-sizer'
},
hiddenStyle: { opacity: 0 },
visibleStyle: { opacity: 1 }
});
// Layout Isotope after each image loads
$grid.imagesLoaded().progress( function() {
$grid.isotope('layout');
});
// Bind filter li click
$('.grid-filter').on( 'click', 'li', function() {
var filterValue = $( this ).attr('data-filter');
$grid.isotope({ filter: filterValue });
});
// Add/remove 'current' class on lis
$('.grid-filter').each( function( i, filters ) {
var $filters = $( filters );
$filters.on( 'click', 'li', function() {
$filters.find('.current').removeClass('current');
$( this ).addClass('current');
});
});
});
CSS
.grid { position: relative; }
.grid-sizer,
.grid-item { width: calc(50% - 20px); } // 50% - gutter width
.gutter-sizer { width: 20px; }
.grid-item {
float: left;
margin: 0 0 20px 0;
display: flex;
transition: background 0.4s; /* Prevent double transition jump bug */
}
figure {
position: relative;
overflow: hidden;
box-sizing: border-box;
margin: 0;
word-wrap: break-word;
overflow: hidden;
}
HTML
<div class="grid">
<div class="grid-sizer"><!-- Required for sizing blocks --></div>
<div class="gutter-sizer"><!-- Required for sizing gutter --></div>
<a href="#" class="grid-item">
<figure>
<img src="" />
<figcaption>
Content
</figcaption>
</figure>
</a>
<div>
【问题讨论】:
-
尝试将过渡添加到所有,而不仅仅是特定属性(
background、top和left),并将浮动项目向左,然后将其设置为display: flex;不会感觉。要么浮动它,要么使用display: flex;。
标签: javascript jquery css google-chrome jquery-isotope