タイトルについては申し訳ありませんが、それはかなり不明確ですが、私はそれを他に書く方法を知りませんでした。
つまり、基本的には、HTMLとCSSだけで非常にシンプルなWebサイトを作成しています。カードの<a>
どこをクリックしてもクリックできるようにしたかったので、独自の親要素を持つこれら3つのカードがあります。そして、それらすべての要素は、というdiv
タグでラップされますcards
要素にアンカータグを追加する前cards
は、CSSファイルのクラスでflexboxを使用するだけで、すべてのカードを中央に配置していました。この時点まで、すべてのカードは同じ線上にあり、完全に中央に配置されていました。ここで、各カードを別々のアンカータグでラップした後、cards
クラスで使用したのと同じフレックスボックス形式をそのdiv内のすべてのアンカー要素に適用しました。この時点まではすべて良好です。しかし、cards
クラスでフレックスボックスのフォーマットを削除すると、アンカータグであるカードの親が同じフレックスボックスのフォーマットを持っていても、すべてのカードがブロック要素に変わります。では、なぜそれが起こるのでしょうか?フレックスボックスは直接の子供にのみ適用され、孫には適用されないと思いました。
.cards{
display: flex;
justify-content: space-between;
}
.cards a {
display: flex;
text-align: center;
color: white;
text-decoration: none;
margin: 0 1rem;
}
.cards p {
font-size: 0.85rem;
line-height: 1.2rem;
padding: 0 1.25rem;
}
.card1{
background-image: url("images/image-background-card1.jpg");
background-size: cover;
background-position: bottom;
min-height: 200px;
width: 100%;
}
.card2{
background-image: url("images/image-background-card2.jpg");
background-size: cover;
background-position: bottom;
min-height: 15.625rem;
width: 100%;
}
.card3{
background-image: url("images/image-background-card3.jpg");
background-size: cover;
background-position: bottom;
min-height: 15.625rem;
width: 100%;
}
<div class="cards">
<a href="#">
<div class="card1">
<i class="fas fa-motorcycle"></i>
<h2>Book Online</h2>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque hic illum accusantium ratione corporis voluptatem.</p>
</div>
</a>
<a href="#">
<div class="card2">
<i class="fas fa-wrench"></i>
<h2>Service Types</h2>
<p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Sunt praesentium placeat sapiente nulla omnis voluptatum!</p>
</div>
</a>
<a href="#">
<div class="card3">
<i class="fas fa-phone-square-alt"></i>
<h2>Call for Advice</h2>
<p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Sunt praesentium placeat sapiente nulla omnis voluptatum!</p>
</div>
</a>
</div>
したがって、基本的に.cards
cssファイル内のものを削除すると、各カードの親の内部に同じフレックスボックス形式があり、他のcssが無意味になると思っていたとしても、要素はインラインになります。
これがコーデックスなので、私が何を意味するのかがわかります。カードの画像を背景色に置き換えました。codepen
私があなたの質問を正しく理解している場合、Flexboxは正常に機能しています。各コンポーネントとその子を独自のコンテナとして想像する必要があります。'cards'クラスは、個々のカードを整列させます。'cards'のFlexcssは、共通の親(直接の子)を共有するアイテムにのみ影響します。つまり、カードがカードコンテナに対してどのように配置されるかです。つまり、カード内のコンテンツはスタイリングの影響を受けないため、フレックスプロパティを再割り当てする必要があります。
個々のカード(「.cardsa」)ごとにflexcssが付属しています。これは、各「a」要素の直接の子のみをスタイル設定するため、コンテンツをどのように配置するかを指定します。これは、「カード」フレックスボックスクラスを削除しても、各カードがコンテナに対してどのように配置されるかを指示するものがないことを意味します。そのため、階層とコンテンツの配置方法に応じて、フレックススタイルを再定義する必要があります。
誤解した場合は訂正してください。それ以外の場合は、これが何らかの洞察を提供することを願っています。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加