2017-01-04 22 views
0

CSS3スケーリングとSafari(v10.0.1)で問題が発生しています。SafariのCSS3スケールフリッカー

<div class="grid-inline col-12 bp1-col-6 bp3-col-3 index-grid-selector index"> 
    <a href=""> 
     <div class="index-grid-item"> 
      <div class="index-grid-dummy"></div> 
      <img srcset=", 2x" title="" alt=""> 
     </div> 
    </a> 
</div> 

CSS(LESS):

Iは、以下の構造を有するグリッド項目の選択をしている画像は絶対グリッドアイテム容器内に配置した後、ホバーにスケーリングさ

.index-grid-selector {  
    a {  
     .index-grid-item { 
      position: relative; 
      overflow: hidden; 
      -webkit-backface-visibility: hidden; 
      -moz-backface-visibility: hidden; 
      -ms-backface-visibility: hidden; 
      -o-backface-visibility: hidden; 
      backface-visibility: hidden; 

      .index-grid-dummy { 
       padding-bottom: 100%; 
      } 

      img { 
       position: absolute; 
       top: 0; 
       left: 0; 
       -webkit-transition: all 0.25s ease-in-out; 
       -moz-transition: all 0.25s ease-in-out; 
       -ms-transition: all 0.25s ease-in-out; 
       -o-transition: all 0.25s ease-in-out; 
       transition: all 0.25s ease-in-out; 
      } 
     } 
    } 

    &:hover { 
     .index-grid-item { 
      img { 
       transform: scale(1.2); 
       -webkit-transition: all 0.25s ease-in-out; 
       -moz-transition: all 0.25s ease-in-out; 
       -ms-transition: all 0.25s ease-in-out; 
       -o-transition: all 0.25s ease-in-out; 
       transition: all 0.25s ease-in-out; 
      } 
     } 
    } 
} 

Safariでの画像の拡大中に、画像がわずかに拡大してシフトしているように見えます。ギャップ(白い線)が画像の周りに現れます。アニメーションが完了すると、ホバー機能が削除されるまで画像が正しく表示されます。

問題を紹介するためのデモをここに設定しました。

http://www.testdomainone.co.uk/test.html

私は画像とその親にfolowingを適用しようとしましたが、問題が引き続き発生します。

-webkit-transform-style: preserve-3d; 
-webkit-transform:translate3d(0,0,0); 
-webkit-transform: translateZ(0) 

どのようにこの問題を修正できるか知っていますか?

+0

を設定することができますあなたは試みましたか?-webkit-backface-visibility:hidden;または次の2つを一緒に? -webkit-perspective:1000; -webkit-backface-visibility:hidden; –

+0

@LucasCordina私は既にバックフェイスの可視性を追加していますが、これを視点に沿って試してみましたが、残念ながら変更はありません。 – ccdavies

+0

'transition:all'を' transition:transform'に変更してみてください。 – LGSon

答えて

0

あなたがあなたのイメージのために固定サイズを使用するので、なぜsrcsetimgの場合と同様に背景画像用の同等を達成するためにimage-setで更新background-image

を使用していないが、これは、imgタグを使用して、特定の問題を解決しません...そしてそれは、高解像度で、それはブラウザのためのまともなフォールバックはそれを

.index-grid-item { 
 
    position: relative; 
 
    overflow: hidden; 
 
    width: 200px; 
 
    height: 200px; 
 
} 
 
.index-grid-dummy { 
 
    padding-bottom: 100%; 
 
    background-size: 100%; 
 
    transition: transform 0.25s ease-in-out; 
 
} 
 
.index-grid-item:hover > div { 
 
    transform: scale(1.2); 
 
    transition: transform 0.25s ease-in-out; 
 
}
<div class="index-grid-item"> 
 
    <div class="index-grid-dummy" style="background-image: -webkit-image-set(url(http://www.testdomainone.co.uk/images/uploads/tours/39/jmc_5233-bigsur__thumb_large.jpg) 1x, url(http://www.testdomainone.co.uk/images/uploads/tours/39/jmc_5233-bigsur__thumb_large_2x.jpg) 2x); 
 
background-image: url(http://www.testdomainone.co.uk/images/uploads/tours/39/jmc_5233-bigsur__thumb_large.jpg)"></div> 
 
</div>
をサポートしていないことになることを使用し、多かれ少なかれだけiOSの網膜であるため、

サイドノートで、上記のサンプルでは、​​私は1がimgタグと同じように、マークアップの画像ソースを設定するには、インラインスタイルを使用し、そしてもちろん、これは同様にCSSで

+0

ありがとうございますが、私は本質的にsrcsetを画像に使用しています。私はこのデモの目的でコードを単純化しました。 – ccdavies

+0

@ccdavies ['image-set'](http://dev.w3.org/csswg/css-images-3/#image-set-notation)を使って、背景イメージと同等の効果を得ることができます。その高解像度を使用するiOS Retinaだけであるため、それをサポートしていないブラウザにとってまともなフォールバックになるでしょう...画像セットを使用して私の答えを更新しました – LGSon

+0

ありがとうございましたが、サイトの性質上、網膜に最適化された画像を全てに表示する必要がある。 EdgeとFirefoxはまったくサポートされていないので、私はこのソリューションを使用できません。 – ccdavies

関連する問題