リクエスト広場

#tablesortと#nobrと書式指定行の併用をしたい

9 コメント
views
3 フォロー

列数の多い表組の各列内に長文などを打ち込んで保存すると
各列がものすごく縦長になってしまう仕様ですが
ソートもしたくて列を縦長にもしたくなくて
それでいて解説文などを入れている列の幅を指定したい(セル内適当な幅で折り返させたい)時に
tablesort{{{
nobr{{
|>|>|>|>|CENTER:|>|>|>|>|>|>|>|RIGHT:|150|CENTER:|150|CENTER:|150|150|c
とやると
セル幅指定の150が無視されます。

nobrの仕様が最上位にあるからということなんだと思いますが
セル内の改行位置まで列が横伸びしてしまうのを防ぐことはできないのでしょうか?

ヨミビトシラズ
作成: 2021/11/20 (土) 10:41:19
最終更新: 2021/11/21 (日) 17:32:47
通報 ...
1
01v 2021/11/20 (土) 17:45:56 修正

以下のようにするとテーブルの幅を固定しつつ、表示領域の幅による折り返しを抑制できます。

||200|c
|自由幅|固定幅|
|>|&nobr{つっかえ棒~~~~~~~~~~~~~~~~~~~~~~~};|f
  • つっかえ棒の表示はBGCOLORや全角スペースや透明文字などに置き換えて目立たなくします。
  • つっかえ棒の長さはサイト幅や表示環境の幅に合わせて調整します。
  • つっかえ棒をフッター指定することによりソートから除外します。

この件は基本的にはtablesortと関係がありません。
しかしtablesortが話に出てる来る背景は、列数が多いテーブルでtablesortを使うと▲ソートボタンがテーブル幅を押し広げるためテーブルが画面領域に収まらなくなるからだと思います。同種のトピック

また類似の件として、flex_containerでflex_boxで表を横並びにしたときに、テーブルの配列が折り返されたり、テーブルの中身が押しつぶされてしまう場合があります。

2
ヨミビトシラズ 2021/11/20 (土) 20:32:02 187cd@b6b50

ほー
nobrをセルの中に入れるということですか
ちょっと試してみます

3
ヨミビトシラズ 2021/11/20 (土) 20:40:47 187cd@b6b50

試したんですけどセル幅(列幅)を150なら150に固定したいのですが
nobr{{を取ってしまうと画面幅やブラウザ幅に合わせて他の列が詰まってしまうのでダメですね

4
ヨミビトシラズ 2021/11/20 (土) 20:48:58 187cd@b6b50

改行していないテキストの長さに依存させたままでいい列
改行してるけど改行位置に依存させたくない列
上記列が混在する表

表全体は上記の条件を満たしたいということです

5
01v 2021/11/21 (日) 00:18:35

伝わりません。
問題が発生してる例をコピペで再現できるように書いてください。

6
ヨミビトシラズ 2021/11/21 (日) 10:38:09 187cd@b6b50

nobr{{(票の幅を変えさせないではみだたせる
||100|c
|あいうえお(A)|かきくけこさしすせそたちつてと&br;なにぬねの(B)|
||かきくけこさしすせそたち|
|あいうえお|つてと|
||なにぬねの|

A:改行していないテキストの長さに依存させたままでいい列
B:改行してるけど改行位置に依存させたくない列

これ以上の表現はできません
尋問されるなら取り下げます

7
ヨミビトシラズ 2021/11/21 (日) 11:25:27 187cd@b6b50 >> 6

↑やりたいこと
↓今の仕様
nobr{{(票の幅を変えさせないではみだたせる
||100|c
|あいうえお(A)|かきくけこさしすせそたちつてと&br;なにぬねの(B)|
|あいうえお|かきくけこさしすせそたちつてと|
||なにぬねの|
列2の幅が改行位置まで横伸びする
列幅指定の効果がないので効果があるようにしたい

A:改行していないテキストの長さに依存させたままでいい列

8
01v 2021/11/21 (日) 15:33:29 >> 6

例に挙げられた表は、実際と違いが大きいはずでこれをwikiwikiで表示しても問題がよく見えません。問題点を以下のように解釈し、その前提で回答をします。つまり実際に改善するかは確認してません。
要は表示領域から横幅がはみ出るくらい幅広な表で、表示幅による自動折り返しを抑制しつつ、各列の幅を任意に確保したいということだと思います。
ブロック型の#nobrで表を囲んだままの解決策は現状ありません。インライン型の&nobrを表に埋め込んで幅を制御します。&nobrは本来折り返しを制御するプラグインですが、折り返されないことを利用して幅を確保する方法です。

問題点

  • 2列目の幅指定を100で固定する。
    実際はもっと列が多く横長の表で各列の内容が表示領域幅に押しつぶされて表全体が縦長になる。

    ||100|c
    |あいうえお(A)|かきくけこさしすせそたちつてと&br;なにぬねの(B)|
    
  • 全体をnobrで囲って折り返しを抑制する。
    しかしこれは2列目の幅指定100が無視される。

    #nobr{{
    ||100|c
    |あいうえお(A)|かきくけこさしすせそたちつてと&br;なにぬねの(B)|
    }}
    

解決案

  • つっかえ棒で表全体の最小幅を定める方法
    &nobr行は表示領域幅による自動折り返しを抑制し、余長は画面外へはみ出す。
    表の各列幅は内容により自動で振り分けられる。つっかえ棒の文字列長と表示上の問題は自分で工夫する。

    ||100|c
    |あいうえお(A)|かきくけこさしすせそたちつてと&br;なにぬねの(B)|
    |>|&nobr{つっかえ棒~~~~~~~~~~};|f
    
  • つっかえ棒で各列の最小幅を定める方法
    各列で幅を制御したいとき。

    ||100|c
    |あいうえお(A)|かきくけこさしすせそたちつてと&br;なにぬねの(B)|
    |&nobr{つっかえ棒~~~};|&nobr{つっかえ棒~~};|f
    
  • 1列目の記述内容で折り返しを抑制する方法
    特定の記述内容で最小幅を決めるとき。
    ||100|c
    |&nobr{あいうえお(A)};|かきくけこさしすせそたちつてと&br;なにぬねの(B)|
    ||&nobr{つっかえ棒~~};|f
    
9
ヨミビトシラズ 2021/11/21 (日) 17:35:28 187cd@b6b50

運営が改善してくれるのを待ちます