モバイル表示のハンバーガーメニュー位置を右に表示したい。(テーマ:Spotlight)

Topic summary

モバイル表示でハンバーガーメニューを右端に配置し、メニューを右からスワイプ表示させたいという質問。

解決方法(Spotlightテーマ):

  1. ヘッダーレイアウトの変更

    • base.css.headerセクションでgrid-template-areasgrid-template-columnsを修正
    • ロゴとハンバーガーメニューの配置順序を変更
  2. メニュー位置の微調整

    • header.liquidでハンバーガーメニューを右寄せに調整
  3. スワイプ方向の変更

    • component-menu-drawer.css.menu-drawerrightleftに、translateX(100%)translateX(-100%)に変更
    • これにより右からスライド表示される

注意点:

  • コード編集前に必ずバックアップを取る
  • 意図しない表示崩れが発生する可能性あり

質問者は提案された方法で無事解決したと報告。

Summarized with AI on November 8. AI used: claude-sonnet-4-5-20250929.

[使用テーマ:Spotlight]

お世話になります。

webサイト制作初心者です。

現在、外部サービス(ノーコードweb制作ツール)で構築したポートフォリオサイトにショップを併設する目的でshopifyを利用させていただいております。

(質問中のプログラミング用語等、間違っておりましたらすみません)

質問:ユーザーの操作性を考慮して、ヘッダーメニューを以下のように変更したいです。

・モバイル表示のハンバーガーメニュー位置を最も右に表示したい。

・また、その際ハンバーガーメニューをタップしたときのモーダルのスワイプ方向を右画面から出てくるようにしたい。

・モーダルの閉じるボタンの位置を右上に表示したい。(ハンバーガーメニューのアイコンと同位置)

これまで、文字の大きさ、マージン/パディングの調整、リンク先の修正等、

簡単なものであれば、都度調べながらなんとかコード編集を行ってきましたが、こちらは私にとってかなり高度なものかと感じております。

ちなみにコチラのような記事を見つけたのですが、コードの読み解きができず、、

どうかお力添えいただけますと幸いです。

よろしくお願い致します。

できるだけコードを編集しない方法であれば、以下の手順をお試しください。

なお、コードを編集するので意図せず表記が崩れる等のエラーが発生する場合があります。事前にバックアップを取るなどのリスク対策が必要です。

1.管理画面にログインし、[オンラインストア] > [テーマ] に移動します。

2.「カスタマイズ」の隣の[…] から[コードを編集] をクリックします。

3.「アセット」フォルダ内のbase.cssファイルを選択します。

  1. 以下のコードを探し、修正します。

修正前:

.header {
  display: grid;
  grid-template-areas: 'left-icons heading icons';
  grid-template-columns: 1fr 2fr 1fr;
  align-items: center;
}

修正後:

.header {
  display: grid;
  grid-template-areas: 'heading icons left-icons';
  grid-template-columns: 2fr 1fr 1fr;
  align-items: center;
}

これでロゴやハンバーガーメニューの位置が変わります。

スクリーンショット 2024-07-04 9.28.06.png

  1. ハンバーガーメニューが左に寄りすぎてるので、右に移動させます。「セクション」フォルダ内のheader.liquidファイルを選択し、コードを修正します。

修正前:

header-drawer {
    justify-self: start;
    margin-left: -1.2rem;
  }

修正後:

header-drawer {
    justify-self: end;
    margin-left: -1.2rem;
  }
  1. モーダルのスワイプ方向を右画面から出てくるように設定します。「アセット」フォルダ内のcomponent-menu-drawer.cssファイルを選択し、以下のように修正します。

修正前:

.menu-drawer {
  position: absolute;
  transform: translateX(-100%);
  visibility: hidden;
  z-index: 3;
  left: 0;
  top: 100%;
  width: 100%;
  padding: 0;
  background-color: rgb(var(--color-background));
  overflow-x: hidden;
  filter: drop-shadow(
    var(--drawer-shadow-horizontal-offset) var(--drawer-shadow-vertical-offset) var(--drawer-shadow-blur-radius)
      rgba(var(--color-shadow), var(--drawer-shadow-opacity))
  );
}

修正後:

.menu-drawer {
  position: absolute;
  transform: translateX(100%); /* ここを変更 */
  visibility: hidden;
  z-index: 3;
  right: 0;/* ここを変更 */
  top: 100%;
  width: 100%;
  padding: 0;
  background-color: rgb(var(--color-background));
  overflow-x: hidden;
  filter: drop-shadow(
    var(--drawer-shadow-horizontal-offset) var(--drawer-shadow-vertical-offset) var(--drawer-shadow-blur-radius)
      rgba(var(--color-shadow), var(--drawer-shadow-opacity))
  );
}

最後に「保存」をクリックして完了です。

1 Like

大変丁寧で分かりやすいアドバイスをありがとうございます!

早速試してみたところ、無事に解決いたしました。

今後とも、どうぞよろしくお願い致します?