> CSS > CSSでレスポンシブで可変な正方形を実装する方法
CSSでレスポンシブで可変な正方形を実装する方法

CSSでレスポンシブで可変な正方形を実装する方法

  • 投稿日:2021/10/11 |最終更新:2021/10/17
  • CSS

CSSでレスポンシブな正方形を実装するには、コンテナーの疑似要素にpadding-topを設定します。

基本的なレスポンシブで可変な正方形

プレビュー

画面の横幅を変更すると上記3つの正方形が可変になると思います。

html例

<div class="box-container">
    <div class="box">
    </div>
    <div class="box">
    </div>
    <div class="box">
    </div>
</div>

css例

.box-container{
    display: flex;
    justify-content: space-between;
}
.box{
    width: 30%;
    background: #eee;
}
.box::before{
    content: "";
    padding-top: 100%;
    display: block;
}

.boxというアイテムの疑似要素を作成し、padding-top: 100%; にすることでアイテムを正方形にしています。

中に文章が入っている場合のレスポンシブで可変な正方形

プレビュー

サンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルです

サンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルです

サンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルです

画面の横幅を変更すると上記3つの正方形が可変になると思います。

html例

<div class="box-container">
    <div class="box">
        <p>サンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルです</p>
    </div>
    <div class="box">
        <p>サンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルです</p>
    </div>
    <div class="box">
        <p>サンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルですサンプルです</p>
    </div>
</div>

css例

.box-container{
    display: flex;
    justify-content: space-between;
}
.box{
    width: 30%;
    background: #eee;
    position: relative;
    overflow: hidden;
}
.box::before{
    content: "";
    padding-top: 100%;
    display: block;
}
.box p{
    position: absolute;
    top: 0;
    left: 0;
    padding: 10px;
    margin: 0;
}

.boxというアイテムの疑似要素を作成し、padding-top: 100%; にすることでアイテムを正方形にしています。
.box pposition: absolute;にすることで正方形の中に文字列がおさまるようにしています。
.boxoverflow: hidden;にすることで、正方形からはみ出る部分を非表示にしています。

中に画像が入っている場合のレスポンシブで可変な正方形

プレビュー

画面の横幅を変更すると上記3つの正方形が可変になると思います。

html例

<div class="box-container">
    <div class="box">
        <img src="./img.jpg">
    </div>
    <div class="box">
        <img src="./img.jpg">
    </div>
    <div class="box">
        <img src="./img.jpg">
    </div>
</div>

css例

.box-container{
    display: flex;
    justify-content: space-between;
}
.box{
    width: 30%;
    background: #eee;
    position: relative;
    overflow: hidden;
}
.box::before{
    content: "";
    padding-top: 100%;
    display: block;
}
.box img{
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0;
    left: 0;
    object-fit: cover;
}

.boxというアイテムの疑似要素を作成し、padding-top: 100%; にすることでアイテムを正方形にしています。
.box imgposition: absolute;にすることで正方形の中に画像がおさまるようにしています。
.box imgwidth: 100%; height: 100%;の範囲でobject-fit: cover;にすることで正方形のサイズにおさまるように調整しています。

まとめ

レスポンシブで可変な正方形を作成する時、内包する要素の方で調整しなければならない部分(position: absolute;とか)があるので、注意しながら活用したいと思います。

この記事が気に入ったらシェアしてください

関連記事

コピペで使えるCSSだけでつくる矢印・三角形

コピペで使えるCSSだけでつくる矢印・三角形

CSSだけで 電話番号のリンクを PC・タブレット時には無効化し スマートフォン時にのみ発信させる方法

CSSだけで 電話番号のリンクを PC・タブレット時には無効化し スマートフォン時にのみ発信させる方法

同じSVGを画面内で複数回使用してCSSで色やサイズを変更する方法

同じSVGを画面内で複数回使用してCSSで色やサイズを変更する方法

orderでflexブロック内のアイテムの並び順を任意に変更する方法

orderでflexブロック内のアイテムの並び順を任意に変更する方法

flex-directionでflexブロック内のアイテムの並び方を変更する方法

flex-directionでflexブロック内のアイテムの並び方を変更する方法

Youtubeの埋め込み用タグをレスポンシブに対応させる方法

Youtubeの埋め込み用タグをレスポンシブに対応させる方法

Comment Form

コメント投稿はこちらをクリックしてください
  • コメントを入力してください。
登録フォーム
Name
Mailaddress
URL
Message
Postkey
(スパム対策に、投稿キー を半角で入力してください。)