目次
6. 完全に互換性のある複数列の均一なレイアウトの問題" >6. 完全に互換性のある複数列の均一なレイアウトの問題
 
法二:借助伪元素及 text-align:justify" >法二:借助伪元素及 text-align:justify
ホームページ ウェブフロントエンド CSSチュートリアル 複数列の均一レイアウトの問題に対する CSS 完全互換のソリューション

複数列の均一レイアウトの問題に対する CSS 完全互換のソリューション

Mar 24, 2017 am 10:42 AM
css

問題を解決する際に互換性は考慮されません。質問は自由で、思いついたことを何でも言ってください。問題を解決する際に馴染みのない CSS プロパティがある場合は、できるだけ早く学習してください。

更新し続けて、更新し続けて、更新し続けて、重要なことは3回言います。

6. 完全に互換性のある複数列の均一なレイアウトの問題

次の複数列の均一なレイアウトを実現する方法 (図内の直線はコンテナの幅を示すためのものであり、含まれていません):

複数列の均一レイアウトの問題に対する CSS 完全互換のソリューション

方法 1: display:flex

display:flex

CSS3 弹性盒子(Flexible Box 或 Flexbox),是一种布局方式,当页面需要适应不同的屏幕大小以及设备类型时,它依然能确保元素拥有更恰当的排布行为。

当然 flex 布局应用于移动端不错,PC 端需要全兼容的话,兼容性不够,此处略过不谈。

 

法二:借助伪元素及 text-align:justify

定义如下 HTML 样式:


<p class="container">
    <p class="justify">
        <i>1</i>
        <i>2</i>
        <i>3</i>
        <i>4</i>
        <i>5</i>
    </p>
</p>
ログイン後にコピー

我们知道,有个 text-align:justify 可以实现两端对齐文本效果。

text-align CSS属性定义行内内容(例如文字)如何相对它的块父元素对齐。text-align 并不控制块元素自己的对齐,只控制它的行内内容的对齐。

text-align:justify 表示文字向两侧对齐。

一开始我猜测使用它可以实现,采用如下 CSS :


.justify{
  text-align: justify;
}

.justify i{
  width:24px;
  line-height:24px;
  display:inline-block;
  text-align:center;
  border-radius:50%;
}
ログイン後にコピー

结果如下:

複数列の均一レイアウトの問題に対する CSS 完全互換のソリューション

Demo戳我

没有得到意料之中的结果,并没有实现所谓的两端对齐,查找原因,在 W3C 找到这样一段解释:

最后一个水平对齐属性是 justify,它会带来自己的一些问题。CSS 中没有说明如何处理连字符,因为不同的语言有不同的连字符规则。规范没有尝试去调和这样一些很可能不完备的规则,而是干脆不提这个问题。

额,我看完上面一大段解释还是没明白上面意思,再继续查证,才找到原因:

虽然 text-align:justify 属性是全兼容的,但是要使用它实现两端对齐,需要注意在模块之间添加[空格/换行符/制表符]才能起作用。

也就是说每一个 1 间隙,至少需要有一个空格或者换行或者制表符才行。

好的,我们尝试一下更新一下 HTMLCSS3 フレキシブル ボックス (フレキシブル ボックスまたはフレックスボックス) は、ページをさまざまなレイアウトに適応させる必要がある場合のレイアウト方法です。画面サイズとデバイスの種類にかかわらず、要素の配置動作がより適切になることが保証されます。


もちろん、フレックスレイアウトはモバイル端末に適用する場合に適していますが、PC 端末に完全な互換性が必要な場合は、互換性が十分ではないため、ここでは省略します。

🎜方法 2: 疑似要素と text-align:justify を使用します🎜🎜🎜 は次のように定義されます HTML</code > style: 🎜🎜🎜 🎜🎜<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>&lt;p class=&quot;container&quot;&gt; &lt;p class=&quot;justify&quot;&gt; &lt;i&gt;1&lt;/i&gt; &lt;i&gt;2&lt;/i&gt; &lt;i&gt;3&lt;/i&gt; &lt;i&gt;4&lt;/i&gt; &lt;i&gt;5&lt;/i&gt; &lt;/p&gt; &lt;/p&gt;</pre><div class="contentsignin">ログイン後にコピー</div></div>🎜🎜 テキストの両端を揃える効果を実現できる text-align:justify があることはわかっています。 🎜🎜<blockquote>🎜🎜<code>text-align CSS プロパティは、インライン コンテンツ (テキストなど) をそのブロックの親要素に対してどのように配置するかを定義します。 text-align は、ブロック要素自体の配置を制御せず、そのインライン コンテンツの配置のみを制御します。 🎜🎜🎜🎜text-align:justify は、テキストが両側に揃えられることを意味します。 🎜🎜🎜🎜最初は、次の CSS を使用して実現できるのではないかと考えました: 🎜🎜🎜🎜🎜
.justify{
  text-align: justify;
  text-align-last: justify; // 新增这一行
}

.justify i{
  width:24px;
  line-height:24px;
  display:inline-block;
  text-align:center;
  border-radius:50%;
}
ログイン後にコピー
ログイン後にコピー
🎜🎜結果は次のとおりです: 🎜🎜🎜🎜複数列の均一レイアウトの問題に対する CSS 完全互換のソリューション
.justify{
  text-align: justify;
}

.justify i{
  width:24px;
  line-height:24px;
  display:inline-block;
  text-align:center;
  border-radius:50%;
}

.justify:after {
  content: "";
  display: inline-block;
  position: relative;
  width: 100%;
}
ログイン後にコピー
ログイン後にコピー
🎜🎜 各ブロックの真ん中に改行を追加してみましょう。結果は次のようになります。次のように: 🎜🎜

複数列の均一レイアウトの問題に対する CSS 完全互換のソリューション

啊哦,还是不行啊。

再寻找原因,原来是出在最后一个元素上面,然后我找到了 text-align-last 这个属性,text-align-last属性规定如何对齐文本的最后一行,并且 text-align-last 属性只有在 text-align 属性设置为 justify 时才起作用。

尝试给容器添加 text-align-last:justify


.justify{
  text-align: justify;
  text-align-last: justify; // 新增这一行
}

.justify i{
  width:24px;
  line-height:24px;
  display:inline-block;
  text-align:center;
  border-radius:50%;
}
ログイン後にコピー
ログイン後にコピー

发现终于可以了,实现了多列均匀布局:

複数列の均一レイアウトの問題に対する CSS 完全互換のソリューション

结束了?没有,查看一下 text-align-last 的兼容性:

複数列の均一レイアウトの問題に対する CSS 完全互換のソリューション

但是一看兼容性,惨不忍睹,只有 IE8+ 和 最新的 chrome 支持 text-align-last 属性,也就是说,如果你不是在使用 IE8+ 或者 最新版的 chrome 观看本文,上面 Demo 里的打开的 codePen 例子还是没有均匀分布。

上面说了要使用 text-align:justify 实现多列布局,要配合 text-align-last ,但是它的兼容性又不好,真的没办法了么,其实还是有的,使用伪元素配合,不需要 text-align-last 属性。

我们给 class="justify"p 添加一个伪元素:


.justify{
  text-align: justify;
}

.justify i{
  width:24px;
  line-height:24px;
  display:inline-block;
  text-align:center;
  border-radius:50%;
}

.justify:after {
  content: "";
  display: inline-block;
  position: relative;
  width: 100%;
}
ログイン後にコピー
ログイン後にコピー

去掉了 text-align-last: justify 了,增加一个伪元素,效果如下:

複数列の均一レイアウトの問題に対する CSS 完全互換のソリューション

通过给伪元素 :after 设置 inline-block 设置宽度 100% ,配合容器的 text-align: justify 就可以轻松实现多列均匀布局了。再多配合几句 hack 代码,可以实现兼容到 IE6+ ,最重要的是代码不长,很好理解。

那么为什么使用了 :after 伪元素之后就可以实现对齐了呢?

原因在于 justify 只有在存在第二行的情况下,第一行才两端对齐,所以在这里,我们需要制造一个假的第二行,而 :after 伪元素正好再适合不过。

最终实现题目初始所示:

複数列の均一レイアウトの問題に対する CSS 完全互換のソリューション

以上が複数列の均一レイアウトの問題に対する CSS 完全互換のソリューションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ブートストラップボタンの使用方法 ブートストラップボタンの使用方法 Apr 07, 2025 pm 03:09 PM

ブートストラップボタンの使用方法は?ブートストラップCSSを導入してボタン要素を作成し、ブートストラップボタンクラスを追加してボタンテキストを追加します

ブートストラップのサイズを変更する方法 ブートストラップのサイズを変更する方法 Apr 07, 2025 pm 03:18 PM

Bootstrapの要素のサイズを調整するには、次のものを含むDimensionクラスを使用できます。

ブートストラップの日付を表示する方法 ブートストラップの日付を表示する方法 Apr 07, 2025 pm 03:03 PM

回答:ブートストラップの日付ピッカーコンポーネントを使用して、ページで日付を表示できます。手順:ブートストラップフレームワークを紹介します。 HTMLで日付セレクター入力ボックスを作成します。ブートストラップは、セレクターにスタイルを自動的に追加します。 JavaScriptを使用して、選択した日付を取得します。

ブートストラップにスプリットラインを書く方法 ブートストラップにスプリットラインを書く方法 Apr 07, 2025 pm 03:12 PM

ブートストラップスプリットラインを作成するには2つの方法があります。タグを使用して、水平方向のスプリットラインを作成します。 CSS Borderプロパティを使用して、カスタムスタイルのスプリットラインを作成します。

ブートストラップのフレームワークをセットアップする方法 ブートストラップのフレームワークをセットアップする方法 Apr 07, 2025 pm 03:27 PM

Bootstrapフレームワークをセットアップするには、次の手順に従う必要があります。1。CDNを介してブートストラップファイルを参照してください。 2。独自のサーバーでファイルをダウンロードしてホストします。 3。HTMLにブートストラップファイルを含めます。 4.必要に応じてSASS/LESSをコンパイルします。 5。カスタムファイルをインポートします(オプション)。セットアップが完了したら、Bootstrapのグリッドシステム、コンポーネント、スタイルを使用して、レスポンシブWebサイトとアプリケーションを作成できます。

ブートストラップに写真を挿入する方法 ブートストラップに写真を挿入する方法 Apr 07, 2025 pm 03:30 PM

ブートストラップに画像を挿入する方法はいくつかあります。HTMLIMGタグを使用して、画像を直接挿入します。ブートストラップ画像コンポーネントを使用すると、レスポンシブ画像とより多くのスタイルを提供できます。画像サイズを設定し、IMG-Fluidクラスを使用して画像を適応可能にします。 IMGボーダークラスを使用して、境界線を設定します。丸い角を設定し、IMGラウンドクラスを使用します。影を設定し、影のクラスを使用します。 CSSスタイルを使用して、画像をサイズ変更して配置します。背景画像を使用して、背景イメージCSSプロパティを使用します。

ブートストラップの日付を確認する方法 ブートストラップの日付を確認する方法 Apr 07, 2025 pm 03:06 PM

ブートストラップの日付を確認するには、次の手順に従ってください。必要なスクリプトとスタイルを紹介します。日付セレクターコンポーネントを初期化します。 Data-BV-Date属性を設定して、検証を有効にします。検証ルール(日付形式、エラーメッセージなどなど)を構成します。ブートストラップ検証フレームワークを統合し、フォームが送信されたときに日付入力を自動的に検証します。

VueでBootstrapの使用方法 VueでBootstrapの使用方法 Apr 07, 2025 pm 11:33 PM

vue.jsでBootstrapを使用すると、5つのステップに分かれています。ブートストラップをインストールします。 main.jsにブートストラップをインポートしますブートストラップコンポーネントをテンプレートで直接使用します。オプション:カスタムスタイル。オプション:プラグインを使用します。

See all articles