「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 最新の CSS を使用してレスポンシブな同じ高さのカードを作成する (Flexbox の魔法とメディア クエリなし)

最新の CSS を使用してレスポンシブな同じ高さのカードを作成する (Flexbox の魔法とメディア クエリなし)

2024 年 7 月 31 日に公開
ブラウズ:529

Building Responsive, Equal-Height Cards with Modern CSS (Magic of Flexbox & No Media Queries)

目次

導入

私たちの目的は何ですか?

セマンティック HTML5 を使用した構造の構築

最新の CSS を使用してスタイルを追加する
- CSSのリセット
- フレックスボックスでカードレイアウトをデザインする
- カード画像のスタイリング
- カードコンテンツのスタイリング
- カードボタンのスタイル設定
- ホバートランジションの追加
- CSS変数の使用

結論


導入

Web 開発者として、カード コンポーネントを作成する必要に遭遇することがよくあります。製品やプロジェクトのショーケース、ユーザー プロフィール、ブログ投稿など、カードはどこにでもあります。

これまで、レスポンシブ レイアウトの作成は困難でした。最新の CSS 技術、特に CSS Flexbox の出現により、これらのデザインの作成は大幅にシンプルかつ直感的になりました。

Flexbox を使用すると、レスポンシブ レイアウトの作成プロセスが簡素化されます。複雑なメディア クエリを使用せずに、コンテナ内でアイテムを簡単に配置、整列、間隔をあけて配置できます。これは、正確なブレークポイントを指定しなくても、さまざまな画面サイズや方向に美しく適応するレイアウトを構築できることを意味します。

私たちの目的は何でしょうか?

CSS Flexbox を使用して、ブレークポイントに依存せずに同じ高さのレスポンシブ カードを作成することが目的です。コンテンツの長さに関係なく各カードが同じ高さを維持し、さまざまな画面サイズにシームレスに適応できるようにします。

レイアウトの主要な CSS プロパティ:

  • 表示: フレックス
  • 整列アイテム
  • コンテンツの正当化
  • フレックスグロー

それでは、カードを作成して CSS フレックスボックスの魅力を探ってみましょう!

セマンティック HTML5 を使用した構造の構築

Replace placeholder image here

Title one

Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quod, aliquid ex vel labore fugit dignissimos libero eos hic, fuga, vitae consequuntur quidem.

Replace placeholder image here

Title two

Lorem, ipsum dolor sit amet consectetur adipisicing elit. Magnam aperiam consequuntur, saepe at repellat nobis.

Replace placeholder image here

Title three

Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorum reprehenderit at cumque? Architecto numquam nam placeat suscipit!

最新の CSS を使用してスタイルを追加する

CSSのリセット

/* Basic CSS Reset */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

/* Ensure that our layout is centred horizontally and vertically on the page */
body {
    display: flex; /* using CSS flexbox to vertically and horizontally centre all cards */
    justify-content: center;
    align-items: center;
    min-height: 100vh;
    overflow-x: hidden; /* Prevent horizontal scrolling */
}

Flexbox を使用したカード レイアウトのデザイン

/* Cards */
.card-container {
    display: flex; /* using CSS flexbox to display each card at the centre */
    justify-content: center;
    align-items: stretch; /* use stretch for equal height of all cards */
    gap: 1.5625rem; /* add space between each card */
    flex-wrap: wrap;
    padding: 1rem; 
    max-width: 100%; /* Prevent container from exceeding viewport width */
}

.card {
    display: flex;
    flex-direction: column;
    width: 20rem;
    background-color: #fff;
    box-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.4);
    text-align: center;
    text-wrap: balance; /* ensures content is evenly distributed across multiple lines for better readability. */
    overflow: hidden;
}

カード内部コンテンツのスタイル設定

カード画像のスタイル設定

.card-image {
    width: 100%;
    height: auto;
    object-fit: cover;
    margin-bottom: 0.85rem;
}

カードコンテンツのスタイル設定

.card-title {
    font-size: 1.25rem;
    padding: 1rem;
    color: #3ca69f;
}

.card-description {
    flex-grow: 1; /* allow the content to take available space, thus maintaining equal height no matter the length of the content */
    padding: 0 1rem 1rem;
    font-size: 0.975rem;
    line-height: 1.5;
}

カードボタンのスタイル設定

/* Cards button */
.card-button {
    align-self: center; /* placing the button at the center */
    margin: 1rem 0 3rem;
    padding: 0.625rem 1rem;
    font-size: 1rem;
    color: #ffffff;
    background-color: #3ca69f;
    border: none;
    border-radius: 0.3125rem;
    cursor: pointer;
}

ホバートランジションの追加

.card {
    transition: 0.5s ease all;
}

.card-button {
    transition: 0.5s ease all;
}

/* cards hover effect */
.card:hover {
    background-color: #276662;
    color: #ffffff;
}

.card:hover > .card-button {
    background-color: #ffffff;
    color: #276662;
    font-weight: 700;
}

.card:hover > .card-title {
    color: #ffffff;
}

CSS変数の使用

/* Declare variables */
:root {
    --primary-color: #3ca69f;
    --secondary-color: #276662;
    --text-color: #ffffff;
    --shadow-color: rgba(0, 0, 0, 0.4);
    --border-radius: 0.3125rem;
    --spacing: 1rem;
    --transition-duration: 0.5s;
}

結論

すべてをまとめる

上に行きます

リリースステートメント この記事は次の場所に転載されています: https://dev.to/jennavisions/building-sensitive-equal-height-cards-with-modern-css-magic-of-flexbox-no-media-queries-2h0b?1権利侵害、削除するには、[email protected] までご連絡ください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3