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

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

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

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

1回答

4552閲覧

wordpressのテーマastraのヘッダーを固定したい。

kazuya12

総合スコア35

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

1クリップ

投稿2021/10/28 02:49

編集2021/10/28 02:50

現在、Wordpress、テーマとしてAstraを使ってページを作成しております。
また、ページの作成にあたっては、プラグインのElementorを使用しております。

ヘッダーのメニューを、画面をスクロールしてもいつも上部に表示されるように
固定化するようにしたいのですが、プラグインで「Sticky Menu&Sticky Header」というものがありまして、こちらを使用するとヘッダー固定はされるのですが、レスポンシブ時にヘッダーの幅が広いまま横に広がってしまいます。
参考にしたサイト
何か別の方法を探しています。
ちなみに、子テーマでheaderごとcssで固定させようとしても無理でした。

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

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

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

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

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

guest

回答1

0

ベストアンサー

解決策が2通りあります。

➀ 気にしない。

「レスポンシブ時にヘッダーの幅が広いまま」

とありますが、おそらく以下の順のような操作をされたのではないかと思います。

  1. PC版の幅でサイトを表示した。
  2. 開発者ツール、もしくはウィンドウの幅を狭めて、スマホ版の幅にしてレイアウトを確認した。

この場合、後述しますが本プラグインの仕様上、レイアウトが崩れます。
しかし、初めからスマホ版の幅で表示を行えば、スマホ版の幅でヘッダーの固定がされ、スクロールしても問題なくヘッダーが固定された状態になります。第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}

以上で解決します。
自分のテストホームページで簡単に動かしてみて問題ありませんでしたが、簡易的な修正方法ですので複雑に動くホームページだとどこかで動作不良が起きえることもありますが、ご理解ください。

投稿2022/03/18 03:39

編集2022/03/18 03:40
saitokou98

総合スコア9

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問