テキストオーバーフローを表示するにはどうすればいいですか? どのようなニーズがありますか?単一行ですか、複数行ですか?切り捨て、省略記号、カスタム スタイル、適応高さ?答えはここにあります。次に、浅いところから深いところへ、原則から実装まで、段階的に複数行省略記号のベールを剥がしていきます。最も単純な 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 には無効なポート解決策があります
MySQL のインストールは比較的簡単なので、通常は次のステップに直接進み、注意が必要な点に集中する...
コンピュータ サイエンスで最も一般的に使用され、議論されているデータ構造の 1 つは、二分探索木です...
目次1 テスト環境1.1 サーバーハードウェア1.1.1 t2.マイクロ1.1.2 c5.large...
目次Prometheusはエクスポーターを介してMySQLを監視し、Grafanaチャートで表示しま...
パブリッシュ/サブスクライブとは何ですか?例を挙げてみましょう。あなたは服を買うために店に行きます。...
今日、Ubuntu 用の小さなツールを顧客に送りましたが、ユーザーはそれを受け取った後、実行できませ...
目次序文積極的な撤退例外、拒否、および発行されたエラー信号まとめ序文NodeJS プロセスが終了する...
目次1. 順番に紹介する2. ユーザーを作成する3. ユーザーアカウントを削除する4. アクセス権5...
MySQL にリモートでログインする場合、使用するアカウントには特別な要件があります。アカウントのデ...
関数のカリー化(黒い疑問符の顔)? ? ?カレー(黒い疑問符の顔)? ? ?これは完璧な中国語翻訳で...
目次オブザーバーパターンVue パス値最初のステップは、main.jsにバスを登録することです。 2...
NodeJS は次のファイルをコピーします:通常、小さなファイルのコピー操作では、ストリーム パイプ...
これは多くの人がやったことがあるはずです。ただうずうずして書きたかったので、時間をかけていじってダー...
マージントップの崩壊とはmargin-top の崩壊は、CSS ボックス モデルで発生する現象です。...
はじめに: この記事ではreact-native-cliで作成したサンプル プロジェクト (Andr...