【问题标题】:Isotope transition 'flash' bug (Chrome)同位素转变“闪光”错误 (Chrome)
【发布时间】: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>

【问题讨论】:

  • 尝试将过渡添加到所有,而不仅仅是特定属性(backgroundtopleft),并将浮动项目向左,然后将其设置为 display: flex; 不会感觉。要么浮动它,要么使用display: flex;

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


【解决方案1】:

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

例如(您不需要这两个,只需要一个,但通常其中任何一个都可以工作,并且不会对您的项目视觉产生影响)

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-11
      • 1970-01-01
      • 1970-01-01
      • 2021-11-06
      • 1970-01-01
      • 1970-01-01
      • 2019-01-01
      • 1970-01-01
      相关资源
      最近更新 更多