検索

自動序文の最もきれいなトリック

今年の初めに、テキスト領域と入力ボックスの自動拡張に関する記事を書きました。核となるアイデアは、テキスト領域をより多くのようにすることです<div>、その高さは、現在の値に対応するためにコンテンツに従って自動的に調整されます。驚くべきことに、これを達成するための単純なネイティブソリューションはまだありませんよね?その記事を振り返ってみると、私が提案したアイデアはあまり理想的ではありませんでした。しかし、記事の最後に言及されたStephen Shawスキームは優れているので、より良いネイティブソリューションが得られるまで、このようなユーザーエクスペリエンスの問題に対する最終的な答えと思われるので、それがどのように機能するかを強調して説明したいと思います。実行可能な例のみをご覧になりたい場合は、デモをご覧ください。<h3 id="トリックは-テキスト領域の内容を自動的に拡張し-そのサイズに合わせることが-em-できる-em-要素に正確にコピーすることです">トリックは、テキスト領域の内容を自動的に拡張し、そのサイズに合わせることが<em>できる</em>要素に正確にコピーすることです。</h3> <p> <code><textarea></textarea>,它无法自动扩展高度。

相反,您需要在另一个元素中精确复制<textarea></textarea>的外观、内容和位置。您可以隐藏副本的视觉效果(也可以保留实际功能的<textarea></textarea>可见)。

现在,这三个元素相互关联。最高的子元素会将父元素的高度推高,其他子元素也会随之调整。这意味着<textarea></textarea>的最小高度将成为“基准”高度,但如果复制的文本元素变得更高,则所有元素都会随之变高。

如此巧妙!我非常喜欢它。

您需要确保复制的元素完全相同

相同的字体、相同的填充、相同的边距、相同的边框……一切都要相同。它是一个完全相同的副本,只是通过visibility: hidden;隐藏了视觉效果。如果两者不完全相同,则所有元素的高度不会完全同步。

我们还需要在复制的文本上使用white-space: pre-wrap;,因为这是<textarea></textarea>的行为方式。

这是最奇怪的部分

在我的演示中,我使用::after来创建复制的文本。我不确定这是否是最佳方法。对我来说,这感觉很简洁,但我不知道使用<div aria-hidden="true">对于屏幕阅读器是否更安全?或者<code>visibility: hidden;就足够了吗?无论如何,这还不是最奇怪的部分。最奇怪的部分是:

<code>content: attr(data-replicated-value) " ";</code>

因为我使用的是伪元素,所以这一行将数据属性从元素中获取,并将内容呈现到页面上并添加了一个额外的空格(这就是最奇怪的部分)。如果您不这样做,最终结果会显得“跳跃”。我无法完全理解其中的原因,但它似乎能更好地处理<textarea></textarea>和文本元素之间的换行符行为。

如果您不想使用伪元素,也可以,但请注意“跳跃”行为。

特别感谢WillEarp和MartinTillmann,他们都在同一天随机发邮件提醒我Shaw的技巧有多么巧妙。这是Martin使用Alpine.js和Tailwind制作的示例,最终也类似于单行代码(但请注意它存在“跳跃”问题)。

我相信大家可以想象如何使用Vue和React等框架来实现这一点,并轻松地在<textarea></textarea>和其他元素之间维护状态。我不会在这里包含示例,部分原因是我比较懒,但主要是因为我认为您应该理解其工作原理。这将使您更聪明,并更好地理解您的网站。

以上が自動序文の最もきれいなトリックの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
CSSグリッドとは何ですか?CSSグリッドとは何ですか?Apr 30, 2025 pm 03:21 PM

CSSグリッドは、複雑で応答性の高いWebレイアウトを作成するための強力なツールです。設計を簡素化し、アクセシビリティを向上させ、古い方法よりも多くの制御を提供します。

CSS Flexboxとは何ですか?CSS Flexboxとは何ですか?Apr 30, 2025 pm 03:20 PM

記事では、レスポンシブデザインにおけるスペースの効率的なアラインメントと分布のためのレイアウト方法であるCSS FlexBoxについて説明します。 FlexBoxの使用量を説明し、CSSグリッドと比較し、ブラウザのサポートを詳細に説明します。

CSSを使用してWebサイトを応答するにはどうすればよいですか?CSSを使用してWebサイトを応答するにはどうすればよいですか?Apr 30, 2025 pm 03:19 PM

この記事では、ビューポートメタタグ、柔軟なグリッド、流体メディア、メディアクエリ、相対ユニットなど、CSSを使用してレスポンシブWebサイトを作成するための手法について説明します。また、CSSグリッドとフレックスボックスを使用してカバーし、CSSフレームワークを推奨しています

CSSボックスサイズのプロパティは何をしますか?CSSボックスサイズのプロパティは何をしますか?Apr 30, 2025 pm 03:18 PM

この記事では、要素の寸法の計算方法を制御するCSSボックスサイズのプロパティについて説明します。コンテンツボックス、ボーダーボックス、パディングボックスなどの値と、レイアウト設計とフォームアライメントへの影響について説明します。

CSSを使用してアニメーション化するにはどうすればよいですか?CSSを使用してアニメーション化するにはどうすればよいですか?Apr 30, 2025 pm 03:17 PM

記事では、CSS、キープロパティ、およびJavaScriptとの組み合わせを使用してアニメーションの作成について説明します。主な問題は、ブラウザの互換性です。

CSSを使用してプロジェクトに3D変換を追加できますか?CSSを使用してプロジェクトに3D変換を追加できますか?Apr 30, 2025 pm 03:16 PM

記事では、3D変換、主要なプロパティ、ブラウザの互換性、およびWebプロジェクトのパフォーマンスに関する考慮事項にCSSを使用して説明します。

CSSに勾配を追加するにはどうすればよいですか?CSSに勾配を追加するにはどうすればよいですか?Apr 30, 2025 pm 03:15 PM

この記事では、CSSグラデーション(線形、放射状、繰り返し)を使用して、ウェブサイトのビジュアルを強化し、深さ、フォーカス、および現代の美学を追加します。

CSSの擬似要素とは何ですか?CSSの擬似要素とは何ですか?Apr 30, 2025 pm 03:14 PM

記事では、CSSの擬似要素、HTMLスタイリングの強化における使用、および擬似クラスとの違いについて説明します。実用的な例を提供します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター