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

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

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

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

13623閲覧

<tr>の高さを固定にして行がクリックされた時に非表示の部分を表示したい

ssk

総合スコア332

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2017/02/05 09:59

編集2017/02/05 11:19

HTML

1<table> 2<tbody> 3<tr><td>1</td><td>テキスト</td><td>テキスト</td></tr> 4<tr><td>2</td><td>長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト</td><td>テキスト</td></tr> 5<tr><td>1</td><td>テキスト</td><td>テキスト</td></tr> 6</tbody> 7</table>

######問題点
長いテキストがあると、その文字数で全体の高さが決められてしまいます。

######やりたいこと
・文字数に関係なく行の高さは固定
・隠れている部分はその行をクリックで表示

以上です。
何卒、よろしくお願いいたします。

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

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

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

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

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

kura

2017/02/05 11:09

質問のHTMLが破綻しているので、正しく修正してもらうと回答しやすいです。(</td>~<td>の間に文字は入れられません。) また、「文字数に関係なく行の高さは固定」とありますが、幅についてはどうしたいのですか?幅について特に指定がなければ、すべてのテキストを横に長い1行にする方法がありますが…。
ssk

2017/02/05 11:20

kura様 申し訳ございません。確認不足でした。<td>の内容を修正しました。幅については、できれば固定にしたいです。
guest

回答1

0

ベストアンサー

いろいろな方法があると思いますが、簡易的にCSSで表現する方法を紹介します。

html

1<table> 2<tbody> 3<tr><td>1</td><td>テキスト</td><td>テキスト</td></tr> 4<tr tabindex="-1"><td>2</td><td><div class="longtext">長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト</div></td><td>テキスト</td></tr> 5<tr><td>1</td><td>テキスト</td><td>テキスト</td></tr> 6</tbody> 7</table>

HTMLのポイント

  • 固定した高さより高くなるであろうテキストを<div class="longtext">~</div>で囲う。
  • ↑で囲ったテキストに対応する<tr>tabindex="-1"の属性を指定する。

css

1td:nth-child(2) { 2 width: 200px; 3} 4td { 5 height: 2em; /* 固定したい高さ */ 6} 7.longtext { 8 max-height: 2em; /* ここにも固定したい高さ */ 9 overflow: hidden; 10} 11tr:focus .longtext { 12 max-height: none; 13}

CSSのポイント

  • 固定したい高さを2箇所に記述する。td{}への指定はセルそのものの高さを、tr:focus .longtext{}への指定は長いテキストに対する高さの制御になる。
  • tr:focus .longtext {}は、該当行をクリック(フォーカス)した時の.longtextへの指定を示す。max-height: none;が指定されていることで、クリックしたときに長いテキストの高さの制限がなくなり、全体が表示される。

サンプル https://jsfiddle.net/x00fuov1/2/

今回はCSSでのサンプルにしましたが、もしJavaScriptで作成するとしても基本的には同じような流れ(中身の要素の高さを制限→クリックしたときにその制限を解除)になると思います。
参考にしてください。

投稿2017/02/05 11:48

編集2017/02/05 12:01
kura

総合スコア368

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

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

ssk

2017/02/05 12:28

サンプル情報までありがとうございます! 無事、実装することができました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問