Cocoonフォーラム

書き込みの前に以下の3点をご確認ください。
  1. 1つのトピックにつき1つの質問を書き込んでください
  2. 不具合・カスタマイズ対象ページのURLを提示高速化を無効にしてください
  3. 該当部分のキャプチャ・環境情報とともに書き込んでいただけると助かります

何を書き込んだら良いか分からない場合は、以下のテンプレートをコピペしてご利用ください。

不具合・カスタマイズ対象ページのURL:

相談内容:

不具合の発生手順:

解決のために試したこと:

※文字だけでは正しく伝わらない可能性があるため、スクショ画像の添付もお願いします。
※高速化設定をしている場合は無効にしてください。
環境情報:

※↑こちらに「Cocoon設定 → テーマ情報」にある「環境情報」を貼り付けてください。

環境情報の取得方法はこちら。
https://wp-cocoon.com/theme-report/
高速化設定を無効にするにはこちら。
https://wp-cocoon.com/theme-trouble/

フォーラム利用ガイドリンク

  1. フォーラムガイドライン
  2. よくある質問と答え(FAQ)
  3. サポート対象外のケース
  4. 原因不明の不具合用トラブルシューティング
  5. トピックにHTMLを貼り付ける方法(推奨ツール:notepad.pw
  6. 真っ白画面でのエラーメッセージの確認方法
  7. ブラウザ環境チェックツール
  8. Cocoonカスタマイズ依頼

フォーラム質問後、問題等が解決した場合は結果を書き込んでいただけると幸いです。同様の問題で調べている方には、結果が一番気になる部分となります。

PC版[ヘッダー固定]機能利用時一瞬ス...
 
共有:
通知
すべてクリア

PC版[ヘッダー固定]機能利用時一瞬スクロールされてしまいます。

7 投稿
3 ユーザー
4 Likes
391 表示
Akasumi0304
(@akasumi0304)
New Member Registered
結合: 7か月前
投稿: 3
Topic starter  

お世話になります。

Cocoonをご利用させていただきありがとうございます。

PC版ヘッダー固定に関するご質問になります。
※以下全てPCページに関する内容になります。

ヘッダーとメニューの間に画像を載せているのですが、
下にスクロールしたときにヘッダーメニューが出るようにしたいため、
管理画面のCocoon設定から「ヘッダー固定」にチェックをいれましたところ、
動作はしているのですが、スクロールして固定ヘッダーメニューが表示される瞬間に画面が下に200px~600pxほど一瞬でスクロールされる現象が起きております。

下記ページを元に数値などをいじってみたのですが、
ヘッダーメニューが切り替わるタイミングは調整できても、上記現象は下スクロールは治りませんでした。

解決方法や代替案がございましたらご教示いただけないでしょうか?

参考ページ
https://wp-cocoon.com/community/cocoon-theme/%E3%83%98%E3%83%83%E3%83%80%E3%83%BC%E3%81%AE%E5%9B%BA%E5%AE%9A%E6%A9%9F%E8%83%BD%E3%81%A7%E3%80%81%E5%9B%BA%E5%AE%9A%E3%83%98%E3%83%83%E3%83%80%E3%83%BC%E3%81%8C%E5%87%BA%E3%82%8B%E3%81%BE%E3%81%A7/


   
引用
トピックタグ
chu-ya
(@chu-ya)
Noble Member Registered
結合: 10か月前
投稿: 723
 

以下の事が起きているのでは。
ヘッダー画像の高さに合わせthreasholdの値を調整しましたか?

●手順
以下の設定をした。
[Cocoon設定]→[ヘッダー]→
ヘッダーの固定「ヘッダーを固定」
ヘッダーロゴ(例:横200×縦1000px

●現象
下に画面を600px下にスクロールすると、CSSを以下に変更し、ヘッダーをスリム化させる。
この為、ヘッダー高さが1000pxあるのに400px分一瞬に縮んで見える

.header-container{
position: fixed;
top: 0px;
left: 0px;
width: 100%;
}

また、ヘッダーの高さが600pxより、小さい場合、スクロール量が600pxに達しないとヘッダーが表われない(固定されない)。

●原因
/footer-javascript.phpのthreasholdが600px固定となっている。

●補足
画面を上にスクロールし、fixed→staticに伸ばす時、
ヘッダーが縮小されている為、スクロールtop:0になった時、一瞬で伸びる事となる。

●対策
600px固定ではなく、ヘッダーコンテナ高さ分($('.header-container-in').height())スクロールした時、ヘッダー固定では?

 


   
わいひら reacted
返信引用
Akasumi0304
(@akasumi0304)
New Member Registered
結合: 7か月前
投稿: 3
Topic starter  

@chu-ya

 

ご回答ありがとうございます。

>●原因
>/footer-javascript.phpのthreasholdが600px固定となっている。

ここを数値を画像とヘッダーの高さを合わせた数値に変えても一瞬でスクロールされてしまう挙動は変わりませんでした。

 

>●対策
>600px固定ではなく、ヘッダーコンテナ高さ分($('.header-container-in').height())スクロールした時、ヘッダー固定では?

 

こちらの方法を試したいと思うのですが、どちらのファイルから調整すればよろしいでしょうか?

ご迷惑をお掛けいたしますが、ご教示いただけましたら幸いでございます。

 

また、PC版のヘッダーとその下の画像の配置とメニューバーの理想的な挙動をするサイトがございましたので、

参考までにお送りさせていただきます。

https://goyahso-okinawa.com/

 

引き続きご教示くださいましたら幸いでございます。

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

 


   
返信引用
chu-ya
(@chu-ya)
Noble Member Registered
結合: 10か月前
投稿: 723
 

申し訳ありません。
ヘッダーのCocoon設定の情報含め、現物を確認しないと回答は難しいです。


   
わいひら reacted
返信引用
Akasumi0304
(@akasumi0304)
New Member Registered
結合: 7か月前
投稿: 3
Topic starter  

chu-ya様 

 

ご返信ありがとうございます。

テストページをアップしてみましたので、下記URLより御確認くださいませ。

http://esthe.main.jp/test/test/cocoon/

 

※トップページに表示されている「1920x1280」という画像は子テーマを作成し、

tmpフォルダ内「header-container.php」に「444x164」を記述して表示させ、そのバックグラウンドイメージとして「1920x1280」を表示させております。

 

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

 

 


   
返信引用
Akira
(@akira)
Noble Member Registered
結合: 5年前
投稿: 1208
 

@akasumi0304 さん

ご参考のサイトの動きは、Cocoon の「ヘッダーを固定する」の動きとは異なります。同じ動きにするには、Cocoon の「ヘッダーを固定する」の全面的な書き換えが必要です。

ただ、書き換えるぐらいなら、最初から自分で書くのが早いと思います。

尚、ご参考のサイトの動きにするには、お書きになっている CSS の変更も必要です。変更点が多いため、申し訳ありませんがサンプルコードの提示だけで済ませます。

「ヘッダーメニュー」を設定しただけの Cocoon のデフォルトの状態で以下のことをお試しください。

まず、画像ですが、テンプレートファイルの変更はおすすめしません。

※ 子テーマに header-container.php を設置した場合、親テーマのアップデートで header-container.php に変更があった時に、そのアップデート内容が反映されません。

子テーマの functions.php にコードを追加し、画像部分の HTML を書きます。また、予約ボタンも一緒に書けると思います。

add_action( 'wp_header_logo_after_open', function() {
  echo '<div id="header-image" class="header-image">
      <img src="https://placehold.jp/1920x1280.png">
    </div>';
});

次に、CSS を追加します。

※ この CSS は、ご参考のサイトの動きに必要な CSS です。先ほど申し上げた変更が必要な CSS ではありませんので、別途 CSS の変更が必要です。

.header-container {
  /* ヘッダーロゴの高さ */
  --logo-header-height: 100px;
}

.header-container-in {
  position: relative;
}

.logo-header {
  left: 50%;
  position: fixed;
  top: 0;
  transform: translateX(-50%);
  width: 100%;
  z-index: 1;
}

.navi {
  bottom: 0;
  left: 0;
  position: absolute;
  right: 0;
  z-index: 1;
}

.header-fixed.navi {
  bottom: auto;
  position: fixed;
  top: var(--logo-header-height);
}

.header-image {
  margin-top: var(--logo-header-height);
}

img {
  display: block;
}

/* キャッチフレーズが非表示の場合は不要 */
.tagline {
  display: none;
}

最後に、子テーマの javascript.js にコードを追加します。

const logoHeader = document.getElementsByClassName('logo-header')[0];
const navi = document.getElementById('navi');
const image = document.getElementById('header-image');
const fixedClass = 'header-fixed';
const getHeight = logoHeader.offsetHeight + navi.offsetHeight;

const observer = new IntersectionObserver(entries => {
  for (const entry of entries) {
    if (entry.isIntersecting === false) {
      navi.classList.add(fixedClass);
    } else {
      navi.classList.remove(fixedClass);
    }
  }
}, {
  rootMargin: `-${getHeight}px 0px 0px`
});

observer.observe(image);

添付動画は、その結果です。

This post was modified 7か月前 by Akira

   
わいひら reacted
返信引用
chu-ya
(@chu-ya)
Noble Member Registered
結合: 10か月前
投稿: 723
 

簡単な話しではないので、参考までに。
あくまで思い付きです、ご了承下さい。

●動作について
Cocoonですが、画面を下スクロールさせた際、top達した際、消えていたヘッダー画像を表示させます。
この為、Akasumi0304さんが言われるよう、一瞬にして表示されて見えます。

●添付HPについて
別物で、Cocoonの基本機能ではできません。
独自にカスタマイズの必要があります。

●案
画面を下スクロールし、ヘッダーメニューに達した時、CSSでヘッダーを固定させる。
画面を上スクロールし、ヘッダー位置に来たら、CSSのヘッダー固定を解除する。

[Cocoon設定]→[ヘッダー]→「ヘッダーの固定」ヘッダーを固定のチェックをしない

例:動作を保障するものではありません。
javascript.js

$(function() {
  // 元の位置を取得
  var t = $('#navi').offset().top;

  function currentCheck() {
    var scroll  = $(window).scrollTop();
    var navi = $('#navi').offset().top;

    if (scroll > navi) {
      // メニューを過ぎたので固定
      $('#navi').addClass('fixed');
    }else {
      // 元の位置に戻ったら、メニューの固定を解除
      if (t >  scroll) {
        $('#navi').removeClass('fixed');
      }
    }
  }

  $(window).on('load scroll', currentCheck);
});

CSS

#navi.fixed {
  left: 0px;
  position: fixed;
  top: 0px;
  width: 100%;
}

 


   
わいひら reacted
返信引用
共有:

問題の解決に至った場合には、トピック冒頭の「解決済み」をクリックしていただけますと幸いです。

また、有用な回答があった場合は返信右下にある「いいね!」もご活用ください。回答者の励みになります。

「いいね!」機能はフォーラム登録者のみが利用できる機能です。

CC BY-ND 2.1)準じていれば(リンクを貼っていただければ)転載も自由です。カスタマイズ記事を書く際にコード等をコピペ利用していただいて構いません。

フォーラムの使い方がよくわからない場合は、テストトピックで自由にテストしていただいて構いません。

最近の書き込みはこちら。

詳細なカスタマイズ依頼をするならこちら。

タイトルとURLをコピーしました