WordPressでウェブサイトを制作しています。
サイトの中に表があるページがあります。
html
1<table> 2<tbody> 3<tr><th>所在地</th><td>東京都千代田区千代田3-3-3 千代田ビル3F</td></tr> 4<tr><th>電話番号</th><td><a href="tel:03-3333-3333">03-3333-3333</a></td></tr> 5<tr><th>コメント</th><td>ほげほげほげほげほげほげほげほげほげほげほげほげ</td></tr> 6</tbody> 7</table>
なお、thとtdのインナーテキストは、WPから吐き出しており、ページによって文字数が異なります。
狭い画面で閲覧した場合、表中のテキストの折り返しが多くなり、見にくいので、画面が狭い場合は、thとtdを縦に並べて表示させています。
ブレイクポイントについて、本来は、下図のように、ビューポートの幅と折り返しが生じるtableの幅を比較して、前者の方が狭い場合に縦並びにしたいです。
しかし、やり方が分からないので、現状はブレイクポイントを以下のように599pxに仮置きしています。
css
1@media (max-width: 599px){ 2th,td{ 3 display:block; 4}}
しかし、これでは次のような問題が生じます。
- 画面幅が599px以下の場合、thとtdを横並びにしても画面幅が十分に足りている場合でも、不必要に縦並びになってしまう。
- 画面幅が599px超の場合、テキストに折り返しが生じている場合でも、横並びで表示される。
そこで、ビューポートの幅と折り返しが生じるtableの幅を比較して、前者の方が狭い場合に縦並びにする方法を助言を頂けますと大変助かります。
ビューポート幅はmatchMediaによって取得すればよいかと存じますが、折り返しが生じる要素幅をどのように取得すればよいかが分かりません。