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カスタマイズ依頼

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

サイドバー内のid付与「slide-i...
 
共有:
通知
すべてクリア

[解決済] サイドバー内のid付与「slide-in-」について

11 投稿
2 ユーザー
2 Reactions
2,676 表示
cocoon-user1206
(@cocoon-user1206)
Trusted Member Registered
結合: 6年前
投稿: 63
トピックスターター  

以下の質問でサイドバー内のidに「slide-in-」という接頭辞を付けて割り当てていると知りました。

https://wp-cocoon.com/community/cocoon-theme/%e3%83%a2%e3%83%90%e3%82%a4%e3%83%ab%e8%a1%a8%e7%a4%ba%e6%99%82%ef%bc%88%e3%82%b9%e3%83%a9%e3%82%a4%e3%83%89%e3%82%a4%e3%83%b3%e3%83%a1%e3%83%8b%e3%83%a5%e3%83%bc%e4%bd%bf%e7%94%a8%ef%bc%89%e3%81%ae/#post-9220

私は自作のJavascriptを使用してDOMを操作して、サイトバー内のコンテンツを変化させるプログラムを使いたいと考えています。しかし、CocoonはPC用とモバイル用をレスポンシブ対応で切り替えた時に、PC用とモバイル用のコンテンツをそれそれ保持していて、それを表示・非表示を切り替えることをされていると思います。

 

問題点1

PC用で操作した内容は、モバイル用のコンテンツにそのままでは反映できません。

 

問題点2

イベントリスナーをPC用とモバイル用それそれに用意しなければなりませんし、Javascriptで指定するIDが2倍になり、冗長なプログラムになってしまいます。

 

問題点3

PC用とモバイル用のコンテンツを重複して持つのは、ブラウザーのリソースを多少余分に消費していると思います。

 

 

現状でも工夫次第で私が行いたいことは可能だと考えています。しかし、Javascriptでコーディングする前に一度立ち止まり再検討しています。

お忙しいところ申し訳ありませんが、開発者様やその他の参加者にご見解をお聞かせいただけたら嬉しく思います。どうかよろしくお願いいたします。


   
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17375
 

しかし、CocoonはPC用とモバイル用をレスポンシブ対応で切り替えた時に、PC用とモバイル用のコンテンツをそれそれ保持していて、それを表示・非表示を切り替えることをされていると思います。

確認なんですが、これはサイドバー全体のことを指しておられるのですよね?


   
cocoon-user1206
(@cocoon-user1206)
Trusted Member Registered
結合: 6年前
投稿: 63
トピックスターター  

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

私はサイドバー全体について話しています。

ウイジェット「サイドバー」に設定した物全てが、PC用とモバイル用にそれぞれ読み込まれているという意味です。PC用とidが重ならないように、モバイル用には当初はidを削除されていたものが、「slide-in-」という接頭辞を付与して復活したと認識しています。

 

よろしくお願いします。


   
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17375
 

まずそのような仕様にしているのは、JavaScriptフリーでスライドインメニューを実装するためです。
JavaScriptフリーにしている理由は、AMPページでもそのまま使いまわしができるからです。
JavaScriptを利用すれば、同一の#sidebarを利用したスライドインメニューも実装できますが、それだとAMPページでは使えないからです。
JavaScriptフリーで書く際に、何かある他に良いアイディア等ありますでしょうか。

問題点1
問題点2
これなどについては、別にIDでしてしなくても、双方部分のみに共通するクラス指定をすれば1つの指定でできると思います。
実際に試したわけではないですが、現状指定してあるクラスを鑑みる限り僕はできると思っています。

問題点3
そりゃ、ソースコードを出力すれば、リソースは消費すると思います。
けれど、JavaScriptフリー(CSSのみの操作)をやめてJavaScriptによる処理を追加しても、リソースは消費すると思います。
サイドバー部分のソースコードが増えることによるリソース消費よりも、僕はJavaScript処理の方が負担になると思っています。
そしてAMP部分を別に実装する負担も増えます。


   
cocoon-user1206
(@cocoon-user1206)
Trusted Member Registered
結合: 6年前
投稿: 63
トピックスターター  

わいひら様へ

なるほど、AMPはJavascriptの使用が制限されているので、それを使わずに切り替えるには、おそらく「Media Queries」を使われていると想像します。

Javascriptレスの方がリソースを低く抑えられます。私の意見は前提が異なってましたので、取り下げさせて頂きたいと思います。

Javascriptを使用したい側が現状に合わせて実装するのが良いと思います。そうしないとAMPに対応ができませんね。納得いたしました。

お手数をおかけして申し訳ありませんでした。

 

JavaScriptフリーで書く際に、何かある他に良いアイディア等ありますでしょうか。

「Media Queries」で切り替えるCSSを工夫すればもっと良い方法があるかもしれません。表示・非表示を切り替えるのではなく、同じコンテンツをCSSで変化(z-indexでフロートとか)させて使うようなことが出来ればと思いますが、cocoonを使わせて頂いて1週間未満の私が具体的に言えることは今はありません。モバイル用ページの「サイドバー」ボタンをタップするとスライドインしてきますが、Javascirptを使わずにどうやって実現しているのか分かってないレベルです。

 

問題点1
問題点2
これなどについては、別にIDでしてしなくても、双方部分のみに共通するクラス指定をすれば1つの指定でできると思います。
実際に試したわけではないですが、現状指定してあるクラスを鑑みる限り僕はできると思っています。

こちらに関しては実際にやってみます。

 

ご丁寧にありがとうございました。


   
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17375
 

Cocoonでは、通常ページ、モバイルページ、AMP全てで成立させつつ、最小限の手間(労力)で実装させようと思うと、僕の知る限りでは、現在の実装方法がベストでした。
AMPさえなければ、もっと楽ができるのですけど^^;

モバイル用ページの「サイドバー」ボタンをタップするとスライドインしてきますが、Javascirptを使わずにどうやって実現しているのか分かってないレベルです。

チェックボックスとCSSを組み合わせてアニメーションさせています。
この手法が最もブラウザにも負荷がなさそうだったので。


   
cocoon-user1206
(@cocoon-user1206)
Trusted Member Registered
結合: 6年前
投稿: 63
トピックスターター  

わいひら様へ

私はAMPに対応したサイトを一度も作成したことがないので、どのぐらい制約があるのか想像しかできません。今後チャレンジしてみようと思います。そうすれば、今回の疑問について認識が深まるはずです(^^;)

 

チェックボックスとCSSを組み合わせてアニメーションさせています。
この手法が最もブラウザにも負荷がなさそうだったので。

以下のサイトをみてきました。

CSSだけでアコーディオンを作る方法(レスポンシブ&矢印付)
https://saruwakakun.com/html-css/reference/accordion

 

こんな方法が存在していたなんて知りませんでした。興味深いですね。


   
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17375
 

そうそう、この方法です。
この方法を採用すると、「チェックボックス」の次に「内容(今回の場合サイドバー)」を書く必要があるので、「本来のサイドバー(#sidebar)」の使いまわしができませんでした。

CSSセレクタでいうと.cssacc:checked + .accshow{}の部分です。


   
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17375
 

AMPページでも、AMPが用意しているライブラリを利用すれば、スライドインメニューは可能とは思います。
ただ、別のソースコードを条件分岐して用意する必要があり処理も複雑となるので、管理コストが上がってしまいます。
なので、PC、モバイル、AMP全てで同一コード共通で利用できる今回の方法を採用した感じです。


   
cocoon-user1206
(@cocoon-user1206)
Trusted Member Registered
結合: 6年前
投稿: 63
トピックスターター  

わいひら様へ

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

CSSセレクタでいうと.cssacc:checked + .accshow{}の部分です。

あれからソースサンプルを触りながら勉強しました。「+」は隣接兄弟結合子と言うそうです。クラス「.cssacc」がチェック済みになったら、直後の要素にCSSを適用するという意味になるようです。「+」以外のセレクターを使っても、相対的な指定しか出来なさそうなので、やはり現状に落ち着いていることは理解しました。

 

AMPページでも、AMPが用意しているライブラリを利用すれば、スライドインメニューは可能とは思います。
ただ、別のソースコードを条件分岐して用意する必要があり処理も複雑となるので、管理コストが上がってしまいます。

AMPが今後どうなっていくのかにもよりますよね。高度にAMPに対応するのは「今」ではないかもしれませんね。

ありがとうございました。


   
わいひら reacted
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17375
 

「+」以外のセレクターを使っても、相対的な指定しか出来なさそうなので、やはり現状に落ち着いていることは理解しました。

そうなんです。JavaScriptを使用しないで、+以外のCSSで指定できればオールOKなんですけどね^^;


   
共有:

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

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

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

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

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

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

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

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