>  > 18インチステージアM35系HOT STUFF シュティッヒ レグザス フューラー メタリックブラックポリッシュ/アンダーカットポリッシュ 8.0Jx18ヨコハマ エコス ES31 225/45R18
ENDLESS ブレーキキャリパー システムインチアップキット RacingMONO6&Racing4 T-2(フロント/リアセット) 370×34 332×30 ミツビシ ランサーエボリューション10 CZ4A (純正ブレンボキャリパー装着車) ECQXCZ4A
フリーランスITエンジニア向けの案件・求人・仕事サイト
[ホイールのみ単品4本セット] AME / MODELART BRAZZER (BKF) 19インチ×9.5J PCD:114.3 穴数:5 インセット:51
こんにちは!アン・コンサルティング株式会社のエンジニア阿部です!

いつもフリエンのコラムをご覧になっていただき、ありがとうございます!
今回は、HTMLとCSSでレイアウト作っていく際に起こった「画面遷移時のちらつき」について書いていこうと思います!

豊富な案件の中から希望の案件をご紹介!

未公開案件も多数ありますので「まずは相談したい。」という方もお気軽に登録ください。 【目次】
開発環境
起こったこと
原因
解決方法
その他の注意点
まとめ

18インチステージアM35系HOT STUFF シュティッヒ レグザス フューラー メタリックブラックポリッシュ/アンダーカットポリッシュ 8.0Jx18ヨコハマ ディスク エコス ES31 205/50R16 225/45R18

・Ruby 2.4.1
・Rails 5.1.5
・foundation-rails 6.4.3.0
・slim-rails 3.1.3

 起こったこと

※画面遷移時に上記のようなちらつきが起こる

詳細はお見せできないのですが、上記は、ヘッダー部分の画像です。
一瞬ですが、ヘッダーの文字等がずれていることがおわかりでしょうか?
これは [ホイールのみ単品4本セット] Weds / LEONIS FY (PBMC) 17インチ×6.5J PCD:100 穴数:4 インセット:42 【送料無料】 215/40R18 18インチ MANARAY マナレイ RMP 016F 7J 7.00-18 NITTO ニットー NT555 G2 サマータイヤ ホイール4本セット、画面更新(リロード)であったり、画面遷移(別のページ)へ移る際に起こっています。

原因

ドロップメニューやアコーディオンメニューなどで、非表示になっている子要素のリスト(ホバーすると表示される仕様)が画面遷移する際に一瞬表示されてしまっており 500X用タイヤセット 【タイヤ】 トーヨー ガリットG5 215/60R16 【ホイール】 アーヴィンF01 16インチ カラー:シルバー IR67034O[スタッドレス]、ちらつきが起こる原因になっています。
本来、Javascriptで非表示にしているところが画面遷移時に上手く制御できていないこと(非表示のタイミングがページの表示より遅い)が原因かと思われます。

解決方法

解決方法はいくつかあると思いますが、今回は、子要素のリスト自体にdisplay: none;を加え非表示にしています。
子要素のリストを非表示にしても、親要素をホバーすることでjsが動きしっかりと表示されるので問題ありません。

例).flicker-clearという任意のクラスを作り、子要素のul.menuのところに付与しています。
//style.css
.flicker-clear {
 display: none;
}
 
//header.html.slim
ul.dropdown.menu data-dropdown-menu="" 
 li
 = link_to "並び順"
 ul.menu.flicker-clear
 li
 = link_to "新着順", '#'
 li
 = link_to "人気順", '#'
 li
 = link_to "PV順", '#'
 

その他の注意点

bootstrapやfoundationなどCSSフレームワークを使用している方は、上記のような現象が起こった経験がある方はいるのではないでしょうか。
CSSフレームワークは、元々用意されているクラスがあり、とても便利にスタイルを組むことができますが、色々自分でカスタマイズしようとすると、思わぬところではまってしまうことも多々あると思います。
 
他にも、下記のようにfoundation独自のクラスにpadding-rightを当ててた際 、画面遷移時横にドロップメニューが少しずれる現象が起きました。
.dropdown.menu > li.is-dropdown-submenu-parent > a {
  padding-right: 0;
}

元々表示されていない.is-dropdown-submenu-parent(.dropdownをつけることにより生成されるクラス※デベロッパーツールで確認できる)のスタイルが画面遷移時に先に適用されてしまうため横ズレが発生していました。
この場合は CUSCO(クスコ) street ZEROストリート ゼロ 全長調整式車高調 【減衰力固定】 WRX-STi VAB(F)ピロ・(R)ゴムアッパーマウント付、.is-dropdown-submenu-parentのスタイルはいじらず、任意のクラスなどをあてることで解決することができます。

まとめ

この現象は起こらない時もありますし(回線の速度などにもよる?)、特に気にならない方には必要ないかもしれません。
また、そもそもCSSフレームワークを使っていなかったり 14インチ サマータイヤ セット【適応車種:ライフディーバ(JB6 NA車 4WD)】HOT STUFF ララパーム KC-8 ホワイト 4.5Jx14エナセーブ EC202L 165/55R14、

18インチステージアM35系HOT STUFF シュティッヒ レグザス フューラー メタリックブラックポリッシュ/アンダーカットポリッシュ 8.0Jx18ヨコハマ エコス ES31 225/45R18
【Dotty】 DIA-GT シートカバー 1台分 タントカスタム (4人乗り)にお勧め! LA600S,LA610S系 H25/10→MC迄 品番:8056!225/50R18 95V YOKOHAMA ヨコハマ BLUE EARTH RV02 ブルーアース RV-02 ENKEI RS05 エンケイ RS05 サマータイヤホイール4本セット.ホイール: BBS RI-D ホイールサイズ: 8.5J-20 & 11.0J-20 タイヤ銘柄: PIRELLI P-ZERO N1 タイヤサイズ: 245/35R20 & 305/30R20 タイヤ&ホイール4本セット【20インチ】,【送料無料】 225/35R19 19インチ MZ SPEED エムズスピード JJクロモ 8J 8.00-19 SAFFIRO サフィーロ SF5000(限定) サマータイヤ ホイール4本セット フジコーポレーション

18インチステージアM35系HOT STUFF シュティッヒ レグザス フューラー メタリックブラックポリッシュ/アンダーカットポリッシュ 8.0Jx18ヨコハマ エコス ES31 225/45R18

、CSSやJSの使い方に詳しい方には当たり前のことかもしれませんが、同じような問題が起きている方の参考に少しでもなれば幸いです!

今回も、開発日誌を読んでいただきありがとうございました!

CSS関連の案件

{yahoojp}jpprem01-zenjp40-wl-zd-65223