テキストオーバーフローを表示するにはどうすればいいですか? どのようなニーズがありますか?単一行ですか、複数行ですか?切り捨て、省略記号、カスタム スタイル、適応高さ?答えはここにあります。次に、浅いところから深いところへ、原則から実装まで、段階的に複数行省略記号のベールを剥がしていきます。最も単純な 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 には無効なポート解決策があります
成果を達成する実装コードhtml <base href="https://s3-us...
フロントエンド開発では、ユーザーと直接やり取りするため、ユーザーが操作がスムーズで快適だと感じ、ネイ...
目次1 配列のフラット化とは何ですか? 2 JS標準ライブラリの配列フラット化メソッド3 フラットメ...
1. catalina.bat は UTF-8 に設定する必要があります。UTF-8 に設定しないと...
トークンの有効期限が切れたら、ページを更新します。ページの読み込み時にバックエンドに複数のリクエスト...
Vue での v-on:clock の使用現在、vue.js フレームワークを学習しています。後で参...
目次1. 技術概要2. 技術的な詳細1. インターフェースからバックエンドデータを取得する2. フロ...
目次1. はじめに2. ユーザーテーブルを準備する2.1 グループ化ルール2.2 グループの使用2....
ウェブページを画像としてキャプチャする新機能があったので、人気のhtml2canvasを使ってみまし...
目次1. 仮想DOMとは何ですか? 2. 仮想 DOM が必要な理由3. 仮想DOMはどのようにして...
序文MySQL バージョン 8.0.23 では、新しい機能「Invisible Column (In...
要件:PC側とモバイル側は2つの独立したプロジェクトです。2つのプロジェクトの内容は基本的に同じで、...
目次序文環境インストールMySQLコンテナを作成して起動する落とし穴を避けるための注意MySQLコン...
目次序文2次元配列、一方向基本インターフェースのマッピング幅優先、包括的検索マップ編集経路探索アルゴ...
まず効果図を見てみましょう: 完全なコードは添付されています <テンプレート> <...