
Q&A掲示板を質問→回答→返信で作成したいと考えているのですが、ネストが4段階以上深くなった段階で返信ボタンが出なくなるなどの不具合が発生する可能性があるとアドバイス頂きました。
テーブル構成と方法を変えることでネストを更に深くすることは出来ないでしょうか?
※テーブル構成
ID (質問番号)・・・・識別用のカラム
TS (投稿日時)・・・・公開期間終了後に質問を cron で削除するため?、回答の日時を把握する(〇日前)
question (内容)・・・・質問、回答の投稿文
title (タイトル)・・・・質問タイトル
namae (名前)・・・・質問、回答者名
stamp (リアクションスタンプ)・・・・質問スタンプ
unique_id (質問UUID)・・・・アップロードされたファイル名の改名に使用
ip (IPアドレス)・・・・セキュリティ保護のために保存
attach1 (アップロードされたファイル)・・・・1、2、3で分けているのは1つ目の画像を一覧表示&1つ目の動画を横スクロールで表示するため
attach2 (IPアドレス)・・・・略
attach3 (IPアドレス)・・・・略
usericon (アイコン画像)・・・・質問、回答のアイコン画像
comment_id (回答に対する返信のID)・・・・返信 ID
※方法
親IDが NULL(紐づけられていない)のものを質問として、親IDが設定されているものを回答とする。
No.6ベストアンサー
- 回答日時:
> 10段までは段下げするが11段以降は段下げ幅を0にするというのは11段以降はどうなるのでしょうか?
この質問が出てくる意味が分かりません。
「段下げ幅を0にする」と書いたのですが?
もしかして「段下げ幅」という言葉の意味が分からないと言うことなのでしょうか?であればそのように聞いて下さい。
「段下げ幅を0にする」というのは「段下げをしない」という意味です。実装をイメージして「段下げ幅を0にする」という書き方をしました。
> あるいは、10段までは段下げするが11段以降は段下げ幅を0にするとかで、要件を満たせるならそれでもいいし。
と、書いたとおりで、「10段までは段下げするが11段以降は段下げをしない」ことでも要件を満たせる場合に限ってですが。
回答ありがとうございます。理解することが出来ました、質問が分かりにくく申し訳ありません。
階層を条件で区切るか、無限のどちらかということですね。
No.5
- 回答日時:
#3
>申し訳ありません今後の掲示板の軸になるので、どうしても回答が知りたくてマルチポストしてしまいました。
いえ、厳密には責めているというよりは、技術系の板でせっかくテクニカルな回答をもらえているのですから、そこで掘り下げていくほうがより確実な解決につながるのになぁ・・・という感想です。向こうで質問を続けられないほど特に炎上しているわけでもなかったと思いますし、なぜこんなコミュニケーションサイトに出張ってくるのかなぁ・・・と。
私もteratailでそこそこ頑張っているつもりですが、書き込みのメインは実はこちらの方ですし、ここのサイトの仕組み上あまり技術的な質問には向かないのはよくわかっているつもりなので。
回答ありがとうございます。
以前からテラテイルとgoo質問を交互に質問させて頂いているのですが、goo質問では具体的なコードやテーブルについての修正点などのヒントをもらえる為、利用させて頂いております。
テラテイルでは方法を教えて頂き、それについて自分で考えて分からなかった場合はgoo質問で聞くというパターンが以前幾度となくありましたので…
同時に質問してマルチポストになるのは避けるべきでした申し訳ありません。
No.4
- 回答日時:
> 段下げを無限の幅にせずに実装することは可能でしょうか?
簡単な数学ですが、段下げ幅が0でなければ、無限を掛ければ掛け算の結果は無限です。
段下げをしないでうまく見えるデザインを考えるしかないでしょう。
あるいは、10段までは段下げするが11段以降は段下げ幅を0にするとかで、要件を満たせるならそれでもいいし。
アドバイスありがとうございます。
10段までは段下げするが11段以降は段下げ幅を0にするというのは11段以降はどうなるのでしょうか?
No.3
- 回答日時:
わざわざ技術系のサイトでテクニカルなアドバイスをもらっていながら、あえて教えてgooのようなコミュニティサイトにマルチポストしてもいいことなにもないですよ。
No.2
- 回答日時:
こんにちは
>返信ボタンが出なくなるなどの不具合が発生する可能性~
単に、画面から見切れてしまって表示されないという意味なのか、そもそも出力がされないという意味なのか不明ですが・・・
ボタンが出力されないのなら、それは出力側のプログラムの問題です。
表示が見切れてしまうのなら、横スクロールで対応するとかにしておけば良いのではないでしょうか?
(折り返しでも良ければ、非表示になるような設定をしていない限りは、レイアウトはともかくブラウザは極力表示しようとしてくれるはずです。)
すでに指摘があるように、データ構成と表示は直接関係はありません。
最終的にどのようなHTMLにしているのかも不明ですけれど、インデントがネストしても必ず表示できるようにしたいのなら、項目欄にmin-widthを設定しておくことで項目の最低幅を確保できるようになるので、合計が画面幅を超えればブラウザは横スクロールで対応するようになります。
(親要素に overflow: hidden 等を設定していればスクロールしませんけれど)
あるいは、ネストが深くなったら、一旦キャンセルするという方法もあるかも知れませんが、関係性の視認しやすさに一工夫が必要になりそうですね。
以下は、簡単な一例です。
※ すぐに見切れるように、わざとインデント幅を大きくしてあります。
※ 見切れない場合は、ブラウザ幅を小さくしてみてください。
(fx、chromeで確認)
<!DOCTYPE HTML>
<html lang="ja">
<head><title>Sample</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
#wrap ul { list-style-type: none; }
#wrap ul ul { padding-left: 8em; }
#wrap ul li { min-width: 30em; }
#wrap ul ul li:before { content: "┗ "; }
#wrap ul ul li:has(> ul):before { content: none; }
/* 以下おまけ */
#wrap ul li:after {
content: "返信";
font-size: 0.8em;
vertical-align: top;
margin-left: 1.5em;
padding: 0 .5em;
background-color: #DDD;
border: 2px solid gray;
border-width: 0 2px 2px 0;
border-radius: 0.3em;
}
#wrap ul li:has(> ul):after { content: none; }
</style>
</head>
<body>
<div id="wrap">
<ul>
<li>項目1</li>
<li><ul>
<li>項目1-1</li>
<li><ul>
<li>項目1-1-1</li>
<li><ul>
<li>項目1-1-1-1</li>
<li><ul>
<li>項目1-1-1-1-1</li>
<li><ul>
<li>項目1-1-1-1-1-1</li>
</ul></li>
<li><ul>
<li>項目1-1-1-1-1-2</li>
</ul></li>
<li>項目1-1-1-1-2</li>
<li><ul>
<li>項目1-1-1-1-2-1</li>
</ul></li>
</ul></li>
</ul></li>
</ul></li>
</ul></li>
<li>項目2</li>
<li><ul>
<li>項目2-1</li>
</ul></li>
</ul>
</div>
</body>
</html>
Q.返信ボタンが出なくなるなどの不具合が発生する可能性~
単に、画面から見切れてしまって表示されないという意味なのか、そもそも出力がされないという意味なのか不明ですが・・・
A.回答ありがとうございます、恐らく前者になります。
Q.表示が見切れてしまうのなら、横スクロールで対応するとかにしておけば良いのではないでしょうか?
(折り返しでも良ければ、非表示になるような設定をしていない限りは、レイアウトはともかくブラウザは極力表示しようとしてくれるはずです。)
すでに指摘があるように、データ構成と表示は直接関係はありません。
A.アドバイスありがとうございます、横に広げるという発想はなかったですが返信できる深さの上限を決めておく場合は有効そうですね。
覚えておきます。
Q.最終的にどのようなHTMLにしているのかも不明ですけれど、インデントがネストしても必ず表示できるようにしたいのなら、項目欄にmin-widthを設定しておくことで項目の最低幅を確保できるようになるので、合計が画面幅を超えればブラウザは横スクロールで対応するようになります。
(親要素に overflow: hidden 等を設定していればスクロールしませんけれど)
あるいは、ネストが深くなったら、一旦キャンセルするという方法もあるかも知れませんが、関係性の視認しやすさに一工夫が必要になりそうですね。
A.参考コードありがとうございます。min-widthを設定して画面幅を超えればブラウザは横スクロールという考えはなかったですが、確かに横スクロールさせてしまえば表示されなくなる心配もなさそうです勉強になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
LINEの返信は、1.2日おきだった...
-
なぜ、LINEの返信が2日後ぐらい...
-
男性に質問です。 LINEの返信が...
-
1ヶ月も未読スルーしてしまい...
-
未読スルーされて20時間後くら...
-
よくお疲れ様ってラインがくる...
-
LINEの返信で「そっか」と来たら...
-
ホントに嫌いになった、関わり...
-
既読つけてるのに返さない人っ...
-
好きな人に、照れるわwってLINE...
-
BeRealやってる?って聞かれて...
-
LINEしていて返信速度を合わせ...
-
1日1回だけLINEを返してくれる...
-
ありがとう!って返信きたら既...
-
インスタのDM の返信が2日たっ...
-
LINEは返信しないくせに、 イン...
-
男性心理を教えてください
-
秒で既読つけちゃったときの対...
-
LINEで、ある男性にメッセージ...
-
返信遅いくせにDM続けて来よう...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
LINEの返信は、1.2日おきだった...
-
なぜ、LINEの返信が2日後ぐらい...
-
よくお疲れ様ってラインがくる...
-
男性に質問です。 LINEの返信が...
-
未読スルーされて20時間後くら...
-
1ヶ月も未読スルーしてしまい...
-
好きな人に、照れるわwってLINE...
-
ホントに嫌いになった、関わり...
-
LINEの返信で「そっか」と来たら...
-
ありがとう!って返信きたら既...
-
1日1回だけLINEを返してくれる...
-
YouTubeでコメントに返信する時...
-
既読つけてるのに返さない人っ...
-
メールで、「Please enter your...
-
返信遅いくせにDM続けて来よう...
-
LINEしていて返信速度を合わせ...
-
わざわざ朝の4時とか早い時間に...
-
本人に聞くのが1番だと思います...
-
好きな人から、このアーティス...
-
LINEの名前をコロコロ変えるの...
おすすめ情報