同位素过渡'闪光' bug(Chrome)

时间:2016-03-11 16:48:21

标签: javascript jquery css google-chrome jquery-isotope

我有一个使用Metafizzy的Isotope创建的可过滤网格。

它几乎完美无缺,但内容有问题,闪烁等问题。在过渡期间。如果我禁用转换没有问题,所以我只能假设问题是转换本身。

我附上了这个bug的图片。您可以看到所显示的内容是页面上各种元素的小故障。

任何建议表示赞赏!

编辑:这似乎是特定于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>

Screengrab

2 个答案:

答案 0 :(得分:1)

我无法复制您的问题,但想知道这是否只是Chrome闪烁问题,考虑到它只是在Chrome中?使用转换时,有时使用WebKit驱动的桌面和移动浏览器会出现奇怪的故障或闪烁。您通常可以通过将某些css规则添加到具有转换的元素的元素或容器中来强制硬件加速来解决此问题。

e.g。 (你不需要这两个,只需要一个,但通常这些都可以工作,并且对你的项目没有任何影响)

-webkit-backface-visibility: hidden;
-webkit-transform: translateZ(0);

答案 1 :(得分:0)

对我来说,这实际上只是简单的样式

.isotope-wrapper.isotope-loading:before {
  background-color: #ffffff00;
}