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

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

新規登録して質問してみよう
ただいま回答率
85.46%
Next.js

Next.jsは、Reactを用いたサーバサイドレンダリングなどを行う軽量なフレームワークです。Zeit社が開発しており、nextコマンドでプロジェクトを作成することにより、開発環境整備が整った環境が即時に作成できます。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

CSSフレームワーク

CSSフレームワークは、Webページのスタイルを指定する言語であるCSSを容易に構築するためのツールです。ツイッター社が開発した「Bootstrap」や段組レイアウトが可能な「Foundation」など様々なCSSフレームワークがあります。

Q&A

解決済

1回答

1121閲覧

textarea 高さの最大を决めたい

退会済みユーザー

退会済みユーザー

総合スコア0

Next.js

Next.jsは、Reactを用いたサーバサイドレンダリングなどを行う軽量なフレームワークです。Zeit社が開発しており、nextコマンドでプロジェクトを作成することにより、開発環境整備が整った環境が即時に作成できます。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

CSSフレームワーク

CSSフレームワークは、Webページのスタイルを指定する言語であるCSSを容易に構築するためのツールです。ツイッター社が開発した「Bootstrap」や段組レイアウトが可能な「Foundation」など様々なCSSフレームワークがあります。

0グッド

1クリップ

投稿2020/09/09 14:07

textareaが自動で改行できるようになっています。
高さが100pxまでいった時にdivタグとtextareaの高さが100pxより大きくならないために以下のように実装しました。
しかし写真のように100px以上になった時にdivタグは100px以上にはならないのですがtextareaが自動で改行されて100px以上となってしまいます。
どう修正したらいいのでしょうか?
ご教授お願いしたいです。

import React, { FunctionComponent, useEffect, useRef, useState } from 'react'; import styled from 'styled-components'; type TArea = { parent: number; texth: number; }; const TextAreaA = styled.div<TArea>` padding: 12px 12px; height: 28px; background: #e1e6ed; border-radius: 24px; min-height: ${({ parent }: TArea) => (parent <= 100 ? parent : 100)}px; textarea { width: 100%; resize: none; height: ${({ texth }: TArea) => texth}px; ::-webkit-resizer { display: none; } } `; type Props = { text: string; onHandleChange?: (e: React.ChangeEvent<HTMLTextAreaElement>) => void; }; export const TextArea: FunctionComponent<Props> = ({ text, isShowPreviewCard, }) => { const textAreaRef = useRef<HTMLTextAreaElement>(null); const [textAreaHeight, setTextAreaHeight] = useState('auto'); const [parentHeight, setParentHeight] = useState('auto'); useEffect(() => { setParentHeight(`${textAreaRef.current!.scrollHeight}`); setTextAreaHeight(`${textAreaRef.current!.scrollHeight}`); }, [text]); const onChangeHandler = (e: React.ChangeEvent<HTMLTextAreaElement>) => { setTextAreaHeight('auto'); setParentHeight(`${textAreaRef.current!.scrollHeight}`); onHandleChange(e); }; return ( <TextAreaA parent={Number(parentHeight)} texth={Number(textAreaHeight)}> <textarea ref={textAreaRef} rows={1} onChange={onChangeHandler} value={text} /> </TextAreaA> ); };

イメージ説明

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

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

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

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

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

guest

回答1

0

ベストアンサー

例えばtextareamax-height: 100px;とかでは目的の挙動になりませんか?

投稿2020/09/09 22:11

nskhei

総合スコア704

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問