回答編集履歴

1

「追記」部分を追加

2018/08/12 13:40

投稿

code_ugoite
code_ugoite

スコア18

test CHANGED
@@ -49,3 +49,67 @@
49
49
  ただし、```font-family``` ```font-size``` ```line-height```を指定しても、ChromeよりもFirefoxの```scrollHeight```のほうが1ピクセル大きくなりました。
50
50
 
51
51
  この点、ブラウザ間の微妙な差、ということかと思います…。
52
+
53
+
54
+
55
+
56
+
57
+ ##追記(8月12日22:40)
58
+
59
+ 質問に「補足」として書かれた、
60
+
61
+ > 「一旦<textArea>をレンダリングした後、scrollheightを取得して<textarea>のheightより大きければ、scrollHeightの値でheightを再調整する」
62
+
63
+
64
+
65
+ この方法でコンテンツの高さ(```scrollHeight```で取得)と```textarea```の高さを同じにするのがいいかと思います。
66
+
67
+ こんなコードでしょうか。
68
+
69
+ ```JavaScript
70
+
71
+ var img = document.getElementById('imgTest');
72
+
73
+ var imgHeight = img.scrollHeight;
74
+
75
+ var imgWidth = img.scrollWidth;
76
+
77
+ img.style.height = imgHeight + 'px';
78
+
79
+ img.style.width = imgWidth 'px';
80
+
81
+
82
+
83
+ var txt = document.getElementById('txtAreaTest_textarea');
84
+
85
+ var txtHeight = txt.scrollHeight;
86
+
87
+ var txtWidth = txt.scrollWidth;
88
+
89
+ txt.style.height = txtHeight + 'px';
90
+
91
+ txt.style.width = txtWidth + 'px';
92
+
93
+ ```
94
+
95
+ 問題点は、このコードだと、
96
+
97
+ - Firefox→フォントを問わず期待通り動作
98
+
99
+ - **Chrome→Arialなど一部フォントを```font-family```で設定した場合のみ、スクロールバーが出ます**
100
+
101
+
102
+
103
+ (これに気がついたときは目から汗が…)
104
+
105
+
106
+
107
+ とりあえずの対処法として思いつくのは、
108
+
109
+ - Chromeでテストをして、期待通りに動作するフォントを選ぶ。ただし、Arlal、メイリオ、MS Pゴシックなどはだめでした。
110
+
111
+ - ```txtHeight + 'px';``` → ```txtHeight + 20 + 'px'```などとしてスクロールバーの高さ・幅+αを```textarea```の高さに足す
112
+
113
+
114
+
115
+ といったところでしょうか…。「いいかと思います」と言いながら申し訳ありません。