時給単価UP【3大特典付き】
コーディングテクニック集100選⋙

【裏技】placeholder(プレースホルダ)で改行する方法【非推奨】

記事内に広告を含みます

パソ君
パソ君

・placeholder(プレースホルダ)って改行できる?

こんな疑問にお答えします。

デザインによっては、テキストエリアのplaceholderが改行されてることありますよね。

初見だとこれできるん??って思っちゃいます。

実は対応可能です。が、非推奨ではあります。。

ジト
ジト

いちおうやり方を覚えておこう!

ということで、この記事では「placeholder(プレースホルダ)で改行する方法」について解説していきます!

この記事でわかること

placeholder(プレースホルダ)で改行する方法

【裏技】placeholder(プレースホルダ)で改行する方法【非推奨】

そんなplaceholder(プレースホルダ)で改行したサンプルがこちら↓

See the Pen placeholderの色を変える by jito-coder (@jito-coder) on CodePen.

ちゃんと改行されていますよね。

placeholder内に特殊文字を入れるだけ

やり方は簡単です。

placeholder内に下記の特殊文字を使うだけ。


改行

復帰

実際に特殊文字を用いたコードがこちらです↓

  <tr>
    <th>お問い合わせ</th>
    <td><textarea name="" cols="50" rows="5" placeholder="こちらに
お問い合わせ内容を
記述ください"></textarea></td>
  </tr>

「&#10;」や「&#13;」を、テキスト内の改行したい位置に入れればOKです。

消えちゃってますが実際は「こちらに&#10;お問い合わせ内容を&#13;記述ください」となっています。

ただし非推奨

特殊文字を入れれば改行できますが、非推奨なやり方です。

というのもブラウザによっては、反映されないため。

MacのSafariでは改行が反映しません。

そのため全ブラウザで改行させたい場合は、先ほどのやり方では非推奨。

対策は「JavaScript」を使うことです。

【裏技】placeholder(プレースホルダ)で改行する方法【JavaScript編】

そんな「JavaScript」を使った改行方法がこちら↓

See the Pen placeholderのを改行させる➁ by jito-coder (@jito-coder) on CodePen.

<table class="table05">
    <tr>
        <th>お問い合わせ</th>
        <td class="place-box">
            <textarea id="area" name="" cols="50" rows="5" placeholder=""></textarea>
            <div class="js-placeholder">
                こちらに<br>
                お問い合わせ内容を<br>
                記述ください
            </div>
        </td>
    </tr>
</table>

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
    const textarea = $("#area");
    const placeholderDiv = $(".js-placeholder");
    textarea.on('keyup change', function () {
        let letterLength = textarea.val().length;
        if (letterLength !== 0) {
            placeholderDiv.addClass('hidden');
        } else {
            placeholderDiv.removeClass('hidden');
        }
    });
</script>

先ほど同様、placeholderが改行されていますよね。

やり方を解説していきます。

➀:placeholder内のテキストを空に

まずplaceholder内のテキストを空にしましょう。

<textarea id="area" name="" cols="50" rows="5" placeholder=""></textarea>

➁:absoluteを使ってテキストをplaceholder位置に

続いて別部分の文字を、absoluteによってplaceholder位置に動かします。

<td class="place-box">
    <textarea id="area" name="" cols="50" rows="5" placeholder=""></textarea>
    <div class="js-placeholder">
        こちらに<br>
        お問い合わせ内容を<br>
        記述ください
    </div>
</td>
.place-box {
    position: relative;
}
.js-placeholder {
    position: absolute;
    top: 5px;
    left: 5px;
    opacity: .7;
    z-index: -1;
}

これでdivタグ内の文字が、placeholderの位置に反映させることができました。

➂:入力するときに文字を非表示にする

あとはテキストエリア内に文字を入力するときに、divタグの文字を非表示にすれば完成です。

そこでJavaScriptを使います。

.js-placeholder.hidden {
    display: none;
}
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
    const textarea = $("#area");
    const placeholderDiv = $(".js-placeholder");
    textarea.on('keyup change', function () {
        let letterLength = textarea.val().length;
        if (letterLength !== 0) {
            placeholderDiv.addClass('hidden');
        } else {
            placeholderDiv.removeClass('hidden');
        }
    });
</script>

上記コードにより、入力するときにplaceholder内のテキストを非表示にすることができました。

これで実装完成です。

MacのSafariでもplaceholderを改行させることができます。

【裏技】placeholder(プレースホルダ)で改行する方法【非推奨】:まとめ

  • 特殊文字を使えば改行可能
  • ただしMacのSafariでは効かない
  • 対策方法はJavaScriptを使って実装すること
ジト
ジト

placeholderで改行したいときは試してみてね!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA