質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

hover

これは、HTMLの 擬似クラス[hover]に関するタグです。Hoverは与えられた要素へマウスカーソルを置くことを意味します。また、タッチ可能なデバイスでユーザーが要素へタッチすることをHoverと呼ぶ場合もあります。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

3回答

3395閲覧

Chromeでhover時にtransformがあるとoverflow: hiddenのある画像が震える

snof

総合スコア17

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

hover

これは、HTMLの 擬似クラス[hover]に関するタグです。Hoverは与えられた要素へマウスカーソルを置くことを意味します。また、タッチ可能なデバイスでユーザーが要素へタッチすることをHoverと呼ぶ場合もあります。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2018/03/18 11:33

編集2018/03/19 00:23

問題のページ
https://sirinova.com/nova-button.html

Chromeでボタンにカーソルを合わせるとボタンのhoverに設定されたtransformに反応してoverflow: hiddenのある画像がにじんだり縦に1px震えます。transformかoverflow: hiddenのどちらかを無くすとにじんだり震えなくなります。両方設定したままにじんだり震えなくする方法がありましたら教えてください。

transitionプロパティ使用時に、Chromeブラウザで1pxずれる現象を回避する | バシャログ。
こちらでは解決できませんでした。

参考画像
イメージ説明

1.ボタンのホバーコード

.btn01 a:hover { transform: translateY(3px); }
<div class="btn01"> <a href="./" data-lb-orig-href="https://sirinova.com/"><i class="fas fa-chevron-circle-right"></i>ボタンリンク</a> </div>

2.画像のコード(アスペクト比を維持するためはみ出した部分を非表示にするためoverflow: hidden;を指定しています)

.linkcard .thumb { position: relative; overflow: hidden; display: table-cell; vertical-align: middle; text-align: center; width: 120px; padding-top: 67.5px; } .linkcard .thumb img { position: absolute; top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); max-height: none; width: 120px; }
<div class="linkcard"> <a href="./nova-font-awesome.html" data-lb-orig-href="https://sirinova.com/nova-font-awesome.html"> <span class="thumb"> <img src="./img/nova-font-awesome.png" alt=""></span><span>アイコンフォント(FontAwesome)の使い方<span class="linksite">SIRINOVA</span> </span> </a> </div>

3.新着記事の画像のコード(アスペクト比を維持するためはみ出した部分を非表示にするためoverflow: hidden;を指定しています)

#newpost li .thumb { position: relative; overflow: hidden; float: left; text-align: center; width: 100px; padding-top: 56.25px; margin-right: 5px; } #newpost li .thumb img { position: absolute; top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); max-height: none; }
<li> <a href="./nova-get-content.html" data-lb-orig-href="https://sirinova.com/nova-get-content.html"> <figure class="thumb"><img src="./img/nova-get-content.png" alt=""></figure> <p>コンテンツ自動取得のデザイン<time>2018.03.03</time></p> </a> </li>

追記

新着記事の方の画像はpadding-top:から小数点を削除したら縦に1px移動する問題は解消されました。にじむ問題は残ったままです。

#newpost li .thumb { position: relative; overflow: hidden; float: left; text-align: center; width: 100px; padding-top: 56px; margin-right: 5px; }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

defghi1977

2018/03/18 11:51

問題を引き起こしている部分のHTMLを追加提示して下さい.(リンクの提示だけではリンク切れの際に困ります)
defghi1977

2018/03/18 12:45

私の環境でも再現しました. Chromeの不具合である可能性が高いため, 問題を報告しておきました.
退会済みユーザー

退会済みユーザー

2018/03/18 12:52

文字も1px動くから仕様かと
snof

2018/03/19 00:10

報告ありがとうございます。うーん、仕様だと困りましたね。一部解決できたので追記しました。
defghi1977

2018/03/19 00:17

一応解決策が見つかったのであれば(自己)回答として下さい(解決とする必要はありません). transformプロパティをtransitionでアニメーション化するだけで本来リフローとかは発生しないはずなのに, 全く関係のないノードのペイント状況に影響を及ぼしている(様に見える)ため, 個人的にはレンダリングエンジン実装上の不具合に見えます. とは言え, 余計なスタイルがてんこ盛りなことに起因するレアケースとも思います.
snof

2018/03/19 00:25

追記を修正しました。
guest

回答3

0

おそらくa要素のレンダリングモードがtransformプロパティのtransitionにプロパティよるアニメーション化により切り替わっていること(transformプロパティをアニメーション化するとハードウェアアクセラレーションが有効となる)に起因しています.
その結果最終的なスクリーンへのグラフィック合成処理に何らかの影響を及ぼしているのでしょう.

この問題は(対症療法的ですが)will-change:contentsを指定し, WEBブラウザ側に「アニメーションの準備」を意識させる(a要素のレンダリングに際しアクセラレーションを常に有効化する)ことで解決しました.

CSS

1/*styles.cssより抜粋*/ 2.btn01 a, .btn02 a, .btn03 a, .btn04 a, .btn05 a, .btn06 a, .btn07 a { 3display: inline-block; 4font-size: 1.6rem; 5font-weight: bold; 6line-height: 1.5; 7text-align: center; 8max-width: 90%; 9padding: .8em 1.6em; 10transition: .3s ease-in-out;/*ここにアニメーションの設定がある*/ 11color: #fff; 12background-color: #5bbff7; 13will-change: contents;/*ここに追加*/ 14} 15 16.btn01 a:hover { 17transform: translateY(3px);/*ここをアニメーション化するとハードウェアアクセラレーションが有効となる*/ 18}

NOTE:
なお, will-changeプロパティを多用するとシステムに負荷が掛かるため, 理想としては問題の根本を取り除くべきでしょう.

参考
https://developer.mozilla.org/ja/docs/Web/CSS/will-change

投稿2018/03/19 00:28

編集2018/03/19 00:35
defghi1977

総合スコア4756

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

投稿2018/03/19 13:55

shaak

総合スコア607

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

snof

2018/03/20 09:14

a img { -webkit-backface-visibility: hidden; backface-visibility: hidden; } ありがとうございます。これをすると改善できたのですが今度はトップページのカード型のサムネイルがホバーすると縦に1px動くようになってしまいました。どうやら一定以上のサイズと.thumbの高さ(padding-top)に小数点があると起きるようです。これを解説する方法はありますでしょうか? https://sirinova.com/ またこの質問は新たにトピックスを作ったほうがよいのでしょうか?
guest

0

新着記事の方の画像はpadding-top:から小数点を削除したら縦に1px移動する問題は解消されました。にじむ問題は残ったままです。

#newpost li .thumb { position: relative; overflow: hidden; float: left; text-align: center; width: 100px; padding-top: 56px; margin-right: 5px; }

投稿2018/03/19 00:24

snof

総合スコア17

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問