前提・実現したいこと
jqueryとjquery.cookie.jsを使って、webサイトのBackground-colorを変えるコードを作っています。
addClassで追加したclassをクッキーに保存して、リロードしてもclassがついたままにしようとしています。
発生している問題・エラーメッセージ
addClassでつけたclassがリロードしてもついたままにするコードはできたのですが、クッキーを読み込むのが遅いのか、リロードするとaddClassでつけたclassがhtmlに反映するまでに1〜2秒のラグがあり、classをつけていない時のcssが一瞬表示されてしまいます。
エラーメッセージは吐いていません。
該当のソースコード
html
1<body> 2 3<!-- 途中のhtmlは省略 --> 4 5<div class="md-thema" id="themaToggle"> 6 <span class="themaLight" style="cursor: pointer;">ライト</span> 7 <span class="themaDark" style="cursor: pointer;">ダーク</span> 8</div> 9 10<!-- 途中のhtmlは省略 --> 11 12</body>
css
1body { 2 background-color: white; 3} 4 5body.dark { 6 background-color: black; 7} 8
jquery
1$(function() { 2 $(".themaDark").click(function() { 3 4 $("body").addClass("dark"); 5 $(".themaDark").addClass("current"); 6 7 if ($.cookie("color_display")) { 8 9 $.cookie("color_display", '', {expires: -1}); 10 11 } else { 12 13 $.cookie("color_display", '1', {expires: 7}); 14 15 } 16 17 }); 18 19 if ($.cookie("color_display")) { 20 21 $("body").addClass("dark"); 22 $(".themaDark").addClass("current"); 23 24 } else { 25 26 27 } 28 29}); 30 31$(function() { 32 $(".themaLight").click(function() { 33 34 $("body").removeClass("dark"); 35 $(".themaDark").removeClass("current"); 36 $(".themaLight").addClass("current"); 37 38 if ($.cookie("color_display")) { 39 40 $.cookie("color_display", '', {expires: -1}); 41 42 } else { 43 44 $.cookie("color_display", '1', {expires: 7}); 45 46 } 47 48 }); 49 50 if ($.cookie("color_display")) { 51 52 $(".themaLight").addClass("current"); 53 54 } else { 55 56 57 } 58 59});
試したこと
クッキーの読み込みが遅いのか、リロードした時にclassがすぐに付かないので、jsの記述をhtml内に記述してみたり、<link>の並び順を変えてみたりしてみましたが素人考えでは歯が立たず。。。
補足情報(FW/ツールのバージョンなど)
サイトはwordpressで作っています。リロードしたさいに、bodyにclassを一瞬でつける方法はないでしょうか?上記の方法だとリロードした際に、classがbodyに付くまでに1-2秒のラグがあり、classの.darkが付く前のbackground-color:white;が一瞬表示されてしまします。
上記の例ではbackgroundを変えているだけですが、実際はbody.darkを元に、その他のcssを結構いじる予定です。colorやborder、box-shadowなどなど。
初めての質問であまり伝わっていないかもしれませんが、解決方法がわかる方は教えていただけると助かります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/20 00:25
2018/11/20 00:29
2018/11/20 00:48