解決策が2通りあります。
➀ 気にしない。
「レスポンシブ時にヘッダーの幅が広いまま」
とありますが、おそらく以下の順のような操作をされたのではないかと思います。
- PC版の幅でサイトを表示した。
- 開発者ツール、もしくはウィンドウの幅を狭めて、スマホ版の幅にしてレイアウトを確認した。
この場合、後述しますが本プラグインの仕様上、レイアウトが崩れます。
しかし、初めからスマホ版の幅で表示を行えば、スマホ版の幅でヘッダーの固定がされ、スクロールしても問題なくヘッダーが固定された状態になります。第3者がホームページを閲覧する際は、わざわざ幅を変えて見ようという人は少ないと思われますので、特段何もせず放置しても大きな支障はないかと思います。
② プラグインのソースを修正する。
それでも気になる場合は、プラグインの修正とCSSの追加で現象の解決が可能です。
このプラグインは、仕様上”サイトを初めに表示したときの幅を、固定したい要素のstyle属性として埋め込む”ということをしています。したがって、初めに表示したときの幅から、いくらCSSを追記しても変更することはできません。
ここを解消するため、この"style属性を埋め込む"部分をなくします。これにより、あとからCSSを追記することで幅の変更を可能とします。
1.plugins > sticky-menu-or-anything-on-scroll > assets > js > jq-sticky-anything.jsを編集します。
js
1
2/* 293行目 */
3 assignedStyles +=
4 /* ここから修正 >> */
5 // "width:" +
6 // widthPlaceholder +
7 // "px; height:" +
8 "height:" +
9 /* ここまで修正 << */
10 heightPlaceholder +
11 "px; margin:" +
12 marginPlaceholder +
13 ";";
14
15 $(".sticky-element-original")
16 .removeClass("sticky-element-active")
17 .removeClass("element-is-not-sticky")
18 .addClass("element-is-sticky")
19 .css(
20 "cssText",
21 originalInlineStyles + "margin-top: " +
22 stickyTopMargin +
23 "px !important; margin-left: 0 !important"
24 )
25 .css("position", "fixed")
26 .css("left", leftOrgElement + "px")
27 .css("top", stickyTop + "px")
28 /* 削除 >> */
29 // .css("width", widthSticky)
30 /* 削除 << */
31 .css("padding", paddingSticky)
32 .css("z-index", stickyZindex);
ソースを見るとわかるように、Widthに関係ある箇所を削除します。
これで埋め込みがされなくなりました。
編集後は、https://www.toptal.com/developers/javascript-minifier/
などで整形してから、jq-sticky-anything.min.jsに張り付けてください。
2.CSSを追加する。
子テーマに追加でもカスタマイズの追加CSSでもいいのですが、以下を追記します。
css
1固定する要素 {
2 width: 100%;
3}
以上で解決します。
自分のテストホームページで簡単に動かしてみて問題ありませんでしたが、簡易的な修正方法ですので複雑に動くホームページだとどこかで動作不良が起きえることもありますが、ご理解ください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。