テキストオーバーフローを表示するにはどうすればいいですか? どのようなニーズがありますか?単一行ですか、複数行ですか?切り捨て、省略記号、カスタム スタイル、適応高さ?答えはここにあります。次に、浅いところから深いところへ、原則から実装まで、段階的に複数行省略記号のベールを剥がしていきます。最も単純な 1 行のオーバーフロー省略記号から始めましょう。 ウォームアップ、1行省略これは、あまり魔法を使わずに宇宙全体のための統一された解決策です /* 原則: テキストを折り返さないように設定し、オーバーフロー後に非表示にし、省略記号を表示するために切り捨てます*/ .省略記号 { 空白: ラップなし; テキストオーバーフロー: 省略記号; オーバーフロー: 非表示; } 複数行の省略記号を実現するにはどうすればよいでしょうか?最も単純な 最も単純な複数行省略記号、行クランプCSS プロパティ .省略記号 { ディスプレイ: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: 垂直; オーバーフロー: 非表示; } プロパティの PC の互換性の問題に加えて、 フロートの魔法何!フローティングでは複数行の省略記号も実現できますか?はい、以下では 3 つのフロート ボックスを使用して複数行の省略記号をシミュレートします。まず、右にフロートする 3 つのボックス (テキスト ボックス、プレースホルダー ボックス、カスタム スタイルの省略記号ボックス) を準備します。原理を理解しやすくするために、ボックスに異なる背景色を追加します。 <div class="box"> <!-- テキスト ボックス --> <div class="box__text">テンセントはテクノロジーを通じてインターネットユーザーの生活を豊かにします。当社は、コミュニケーションおよびソーシャル ソフトウェアの WeChat と QQ を通じて、ユーザー間のつながりを促進し、ユーザーがデジタル コンテンツや生活サービスに簡単にアクセスできるように支援します。 </div> <!-- プレースホルダーボックス --> <div class="box__placeholder"></div> <!-- カスタム省略記号ボックス --> <div class="box__more">...展開</div> </div> <スタイル> .box__テキスト{ 幅: 100%; 高さ: 60px; 行の高さ: 20px; 背景色: ピンク; フロート: 右; } .box__プレースホルダー{ 幅: 60ピクセル; 高さ: 60px; 背景色: グレー; 不透明度: 0.8; フロート: 右; } .box__more { 幅: 60ピクセル; テキスト配置: 右; 背景: 黄色; フロート: 右; } </スタイル> 次に、テキスト ボックスに負の左余白 (プレースホルダー ボックスの幅とまったく同じ値) を指定して、位置の調整を開始します。 .box__テキスト{ 左マージン: -60px; } これにより、プレースホルダー ボックスにスペースが確保され、テキスト ボックスに合わせて左側にフロートされます。 上の図では、テキスト ボックスの高さがプレースホルダー ボックスの高さよりも小さくなっています。このとき、1 行目の高さはプレースホルダー ボックスの高さです。1 行目には余分なスペースはなく、カスタム省略記号ボックスは 2 行目にのみ配置できます。テキスト ボックスの高さがプレースホルダー ボックスの高さよりも大きい場合 (たとえば、テキストが 4 行表示される場合) に何が起こるか想像してみてください。 1 行目の高さはテキスト ボックスによって拡張されます。このとき、1 行目には余分なスペースがあり、省略記号ボックスが押し込まれる可能性があります。 素晴らしい😊。次に、省略記号ボックスをプレースホルダー ボックスと同じ行の右側に配置します。 .box__more { 位置: 相対的; 左: 100%; 変換: translate(-100%, -100%); } これを変更し、背景色を削除し、コンテナーをオーバーフロー非表示に設定してから、省略記号ボックスにテキストの色とグラデーションを追加します。 。箱 { 位置: 相対的; オーバーフロー: 非表示; } .box__more { 色: #1890ff; 背景画像: 線形グラデーション(左、白 40%、RGBA(255, 255, 255, 0.8) 70%、透明 100%); } まとめると、ここではフローティングと BFC の原理が実際に使用されています。 外側のボックスは フローティングソリューションの利点は非常に明白です。
省略されたスタイル領域は本質的にフローティング ボックスであるため、露出しないようにグラデーションを使用する必要があります。このソリューションは、背景色が複雑な領域や、カスタム省略スタイル要件が厳しい領域 (たとえば、省略されたスタイルが矢印または画像として定義されている領域) では機能しなくなります。 省略されたスタイルを完全にカスタマイズする他の方法はありますか? はい、カスタム省略記号ボックス用のスペースが予約されています。 それでどうやって予約するんですか? 完全にカスタマイズ可能なフロート+ラインクランプ上記の考えを整理してみましょう。重要なポイントは 3 つあります。 一つずつ見ていきましょう。まず、予約スペースです。line .box__テキスト{ 位置: 相対的; ディスプレイ: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: 垂直; フォントサイズ: 60px; 行の高さ: 0; letter-spacing: 0; /* 省略記号がフォントサイズのみの影響を受けるように、行の高さとテキスト間隔をリセットします*/ color: red; /* デモンストレーションの便宜上、まず省略記号に色を付けましょう */ } この方法では、テキスト ボックスのフォント サイズを調整するだけで、予約済みの省略記号ボックスのサイズを制御できます。 <div class="box__text"> <div class="box__inner"> テンセントはテクノロジーを通じてインターネットユーザーの生活を豊かにします。当社は、コミュニケーションおよびソーシャル ソフトウェアの WeChat と QQ を通じて、ユーザー間のつながりを促進し、ユーザーがデジタル コンテンツや生活サービスに簡単にアクセスできるように支援します。 </div> </div> <スタイル> .box__inner { フォントサイズ: 16px; 行の高さ: 20px; 色: #000; 垂直方向の位置合わせ: 上; 表示: インライン; } </スタイル> 次のステップは、省略記号を非表示にする方法を見つけることです。これは比較的簡単です。透明度または色の透明度を設定できます。 .box__テキスト{ 不透明度: 0; 色: 透明; } 省略記号用のスペースが確保できたので、カスタム省略記号ボックスを予約スペースに配置する方法を見つける必要があります。どうすればよいでしょうか?まだ浮いてます。 拡張された高さのコピーをレンダリングするためのコンテナーとして、絶対位置に配置されたボックスを準備します。 <div class="box__abs"> <div class="box__fake-text"> テンセントはテクノロジーを通じてインターネットユーザーの生活を豊かにします。当社は、コミュニケーションおよびソーシャル ソフトウェアの WeChat と QQ を通じて、ユーザー間のつながりを促進し、ユーザーがデジタル コンテンツや生活サービスに簡単にアクセスできるように支援します。 </div> <div class="box__placeholder"></div> <div class="box__more">...展開</div> </div> <スタイル> .box__abs { 位置: 絶対; 上: 0; 左: 0; 幅: 100%; } </スタイル> 次に、前述の 3 つのフローティング ボックスを使用して、複数行のオーバーフロー省略記号を実装します。 .box__偽テキスト{ 幅: 100%; 左マージン: -60px; 行の高さ: 20px; フロート: 右; color: transparent; /* テキストは高さを拡張し、フローティングと連携して複数行のオーバーフロー省略を実現します*/ } .box__プレースホルダー{ 幅: 60ピクセル; 高さ: 60px; フロート: 右; } .box__more { 位置: 相対的; 左: 100%; 変換: translate(-100%, -100%); 幅: 60ピクセル; テキスト配置: 右; 色: #1890ff; フロート: 右; } なお、ここでのテキストボックスは高さを拡張するためのもので、表示する必要がないため、色は透明に設定しています。さて、最後のステップは、背景色を削除し、外側のボックスのオーバーフローを非表示に設定することです。これが最終的な効果です。 これで、純粋な CSS カスタム複数行省略記号 (原理から実装まで) に関するこの記事は終了です。CSS カスタム複数行省略記号に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 |
<<: MySQL インデックスの最適化: ページング探索の詳細な紹介
>>: Eclipse は Tomcat を構成しますが、Tomcat には無効なポート解決策があります
2つの小さな問題ですが、長い間私を悩ませていました。最初の質問テキストエリアの左側のテキストは常にテ...
1. データベースとデータベースインスタンスMySQL の研究では、データベースとデータベース イン...
<TH> タグは、テーブル内のヘッダーのプロパティを設定するために使用されます。以下の...
<br />今は情報爆発の時代であるだけでなく、サービス爆発の時代でもあります。それはす...
問題の説明:フロントエンドがデータの一部を削除したり、新しいデータを追加したりすると、バックエンドの...
yum install mysql-serverと入力します。続行するにはYを押してくださいインスト...
https://gitee.com/tengge1/ShadowEditor のデプロイメントを例...
序文:前回の記事では、注意深い学生であれば発見できたかもしれない DDL ステートメントの使用法を中...
MGR (MySQL グループ レプリケーション) は、バージョン 5.7 で追加された新しい機能...
目次1. 鏡を見つける2. RabbitMQイメージをダウンロードする3. RabbitMQコンテナ...
目標: 辺の長さが等しい正方形を作成する方法 1: 単位 vw を使用する (ps これが最も簡単な...
<br />ホームページの右側にあるスクロールバーを削除するにはどうすればよいですか? ...
ファイル操作に関連するシステムコール作成するint creat(const char *ファイル名,...
目次Viteプロジェクトビルドの最適化他のやっとこれは前回の記事の補足です。設定プロジェクトで遭遇し...
目次1. 基本概念と基本コマンド1) 基本的な概念2) 基本コマンド2. SQL文の記述順序と実行順...