質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

2回答

1206閲覧

どのブラウザからでもtableからはみ出すことなく、折り返して表示するためにはどうすれば良いでしょう?

information_555

総合スコア10

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2019/02/26 02:25

[inline] <form> <input id="anser1" type="number" min="0" max="9999999" value="0"> <br> <input id="anser2" type="number" min="0" max="9999999" value="0"> <br> <input type="button" value="結果を表示する" onclick="keisan2();"> <br> <div id="anserall" style="white-space:pre;"></div> </form> [script type="text/javascript"] // ◆◆◆ファンクション名◆◆◆ function keisan2() { // ◆◆◆入力された(anser)の定義◆◆◆ var anser1 = (document.querySelector('#anser1').value); var anser2 = (document.querySelector('#anser2').value); // ◆◆◆関数設定◆◆◆ var word1 = 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよわをん'; var word2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; // ◆◆◆テーブル設定◆◆◆ var table1 =`<table style="width:300px;"><tbody><tr><td>`; var table2 =`</td></tr><tr><th>`; var table3 =`</th></tr></tbody></table>`; // ◆◆◆結果の表示◆◆◆ document.querySelector('#anserall').innerHTML = table1+word1+anser1+table2+word2+anser2+table3; } [/script] [/inline] ```### 前提・実現したいこと 次のようなプログラムを使って、入力結果を表示しているのですが、文字数が多いとブラウザによってはtableから折り返されることもなく、はみ出して表示されてしまいます。 (iPhoneでみると折り返されて表示されますが、アンドロイドで見るとはみ出ています) 色々調べてみましたが、cssで「overflow-wrap:break-word」や「word-break:break-all」、「 word-wrap: break-word;」などを指定しても改善できず、行き詰ってます。。。 どのブラウザからでもtable内で折り返して表示されるように何とかしたいのですが、改善方法をご教授いただけないでしょうか。 ちなみにtd にCSSの「overflow: auto;」を指定すると、折り返しはされないものの、スクロールで表示されるようになりました。 しかし、その場合だとブラウザによっては、td内の文字が全く表示されない場合があるため、やはりうまくいかないようです。。。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miyabi-sun

2019/02/26 04:12

この質問、タグがJavaScriptですが関係あるんですか? HTMLとCSSの話のような……
information_555

2019/02/26 05:04

JavaScriptの場合だけうまく表示されないので、ここで質問させていただきました。 ジャバスクリプト以外のところではきちんと折り返して表示されるのです。
guest

回答2

0

そのtable要素、table-layoutプロパティがautoのままではありませんか?
これがautoのままだと、中に入っている文字の量で横幅を自動調整しようとするので
スマホのような横幅が狭い状況だと挙動がかなり変になります。

これをfixedにすれば横幅の制御が1行目で出来るようにもなりますし、
改行系のプロパティも効くようになった…と思うのですよ。
一度試してみてください。

因みに超長い英数単語を自動改行させるプロパティを最近勉強することになりましたが、事実上overflow-wrap一択です。
word-breakは新しいので対応していないブラウザ多いですからね。

投稿2019/02/26 04:11

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ちなみにtd にCSSの「overflow: auto;」を指定すると、

td 要素はブロックレベル要素ではないのでそれに直接 overflow は適用できないはずです。(ブラウザ依存はあるかもしれませんが)

なので、td 要素の中に div 要素を 配置しそれに overflow 他のスタイルを適用した上で div 要素内に文字列を入れるというようにしてはいかがですか?

#余談ですが、テキストが領域をこえた場合に「…」(三点リーダー)を表示する text-overflow:ellipsis はもともと IE の独自拡張だそうですが、最近は他のブラウザでも取り入れられているようです。そういうのも考えてみても良いかも。

投稿2019/02/26 02:35

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

information_555

2019/02/26 03:32

SurfurOnWwwさん、丁寧なご返答ありがとうございます! さっそく<div>要素でoverflow autoを試してみたところ、表示はされるようになりました。 ただ、アンドロイドで見ると、はみ出た分が消えていたりするんですよね。。。 やっぱりきちんと折り返して表示できるようにしたいのですが、どのブラウザでも折り返して表示できるようにするには、スタイルをどこにどうやって指定すると良いのでしょうか。。。 <div>にword-break:break-allを指定しても意味がないようですし。。。
退会済みユーザー

退会済みユーザー

2019/02/26 04:14

> アンドロイドで見ると、はみ出た分が消えていたりするんですよね。。。 その「アンドロイド」というのは Android スマートフォンに標準搭載されている Chrome ということですが? 「はみ出た分が消えて」というのも何だか分かりません。 以下の記事のデモを Android の Chrome で見てみましたが、期待通りの動きになりますけど。 overflow https://developer.mozilla.org/ja/docs/Web/CSS/overflow table, th, td 要素と組み合わせるとダメということですかね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問