(SP)スマートフォン幅の調整 | SkillhubAI(スキルハブエーアイ)

(SP)スマートフォン幅の調整

スマートフォン幅で表示したときにも無理なく見られるよう、CSSを追加します。
file

1.初期設定

1-1.メディアクエリを書く

スマホ幅(576px以下)のみスタイルを適用出来るようにします。

css

/* ===================================
/ ===================================
/     幅576px 以下(スマホ向け)の設定
/ ===================================
/ =================================== */
@media(max-width: 576px) {



} /* @media */

1-2.見出しのフォントサイズを変更

画面幅を狭くしてページをざっと見てみると、見出しの文字がとても大きく見えます。
幅の狭いスマートフォンでもスッキリ見えるよう、フォントサイズを変更しましょう。

css

/* @media(max-width: 576px) {} 内に書く */

h1 {
    font-size: 24px;
}

h2 {
    font-size: 24px;
}

h3 {
    font-size: 18px;
}

見出しの文字サイズ変更だけでも、かなりイメージが変わります。
file

2.ヘッダー

ヘッダーの配置を、下図のように変更します。
file

最初に、flexアイテムを縦に並べるためのクラスを作ります。

css

/* @media(max-width: 576px) {} 内に書く */

.flex-sp-column{
    flex-direction: column;
}

作成したflex-sp-columnクラスを使って、横に並べている div.header-logonav を上下に並べます。

html

<header class="text-white bg-dgreen">
    <div class="container">
        <div class="row align-items-center flex-sp-column"> <!-- クラス追加 -->
            <div class="header-logo d-flex align-items-center">
                <img src="images/logo.png" width="25" height="25" alt="ZOOLOPPA">
                <p>ZOOLOPPA</p>
            </div>
            <nav class="col">
                <ul class="d-flex justify-content-end">
                    <li><a href="#">イベント</a></li>
                    <li><a href="#">動物紹介</a></li>
                    <li><a href="#">ブログ</a></li>
                    <li><a href="#">お問い合わせ</a></li>
                </ul>
            </nav>
        </div>
    </div>
</header>

file
自動で折り返されてしまっている、liタグ部分を調整。

li要素を親要素の50%幅、テキストが左右中央寄せになるようにします。
横並びのときに指定していたmargin-leftはゼロにし、margin-topを加えます。

css

/* @media(max-width: 576px) {} 内に書く */

header nav li {
    margin:0.5rem 0 0;
    width: 50%;
    text-align: center;
}

file

3.ファーストビューとイベント

3-1.ファーストビュー

ファーストビューの配置は、特に変更する箇所がありません。
下記2つの微調整だけ行います。

  • 背景画像の位置を、なるべくゴリラの顔が見切れないよう調整
  • フォーム部分のpaddingを減らす

css

/* @media(max-width: 576px) {} 内に書く */

.fv {
    background-position: 25% bottom;
}

.fv-form {
    padding: 0.5rem 1rem;
}

file

3-2.イベント・ニューオープン

イベント・ニューオープンのセクションも大きな配置変更はありません。
画像の高さを短くして、少しコンパクトにするくらいで良さそうです。

css

/* @media(max-width: 576px) {} 内に書く */
.news .col-6 > img {
    min-height: 360px;
}

file

4.注目の動物

注目の動物では、動物の画像と説明文を縦並びにします。
file

4-1.カラム変更

スマホ幅のときには12カラム分(親要素の100%幅)にするクラスを作ります。

css

/* @media(max-width: 576px) {} 内に書く */
.col-sp-12{
    flex: 0 0 auto;
    width: 100%;
}

新しく作ったcol-sp-12クラスを、div.col-5 と div.col-7 にそれぞれ追加します。

html

<article class="row mt-3rem">
    <div class="col-5 col-sp-12 d-flex align-items-center"><!-- クラス追加 -->
        <img src="images/panda.jpg" alt="パンダ" class="w-max100 b-radius30 animal-photo">
    </div>
    <div class="col-7 col-sp-12 text-white"><!-- クラス追加 -->
        <div class="animal-balloon bg-dgreen position-relative">
            <h3 class="text-center">パンダ</h3>
            <p>
                ジャイアントパンダは、哺乳綱食肉目クマ科ジャイアントパンダ属に分類される食肉類。白と黒にはっきりと分かれた体毛が際立った特徴である。
            </p>
        </div>
    </div>
</article>

ライオン、ゾウのほうでも、同じようにcol-sp-12クラスを追加して下さい。
file

4-2.テキスト部分を整理する

動物の説明文まわりを整えます。
下記2点を変更して、レイアウトを整理しましょう。

  • 画像よりも上に、テキスト部分を表示させる
  • ::afterで作っている三角形をなくす

css

/* @media(max-width: 576px) {} 内に書く */
.animals .col-5 {
    order: 1;
}

.animal-balloon::after {
    content: none;
}

file

4-3.画像と吹き出しに縁をつける

画像に対して、右下方向に向けてbox-shadowでフチを作っています。

スマホ幅は全体に縁取りがなされています。
シンプルにbox-shadowをなくして、borderで縁取りを作り直します。

css

/* @media(max-width: 576px) {} 内に書く */
.animal-photo,
.animal-balloon {
    border: 6px solid #445721;
}

.animal-photo{
    box-shadow: none;
}

file

box-shadowで表現する場合

box-shadowの書き方を変えて、縁取りのように見せることもできます。
その場合、使用するのはbox-shadowの4番めの値、影の拡大縮小(spread)です。
file

css

/* @media(max-width: 576px) {} 内に書く */

.animal-photo,
.animal-balloon {
    box-shadow: 0px 0px 0px 6px #445721;
}

枠線のような表示になりました。 ただし、この方法を使うと、box-shadowが拡大され、本来の要素の大きさ(今回の場合はdiv.animal-photo)よりも大きくなります。
file

box-shadowでは「inset」を指定することで、影の位置を内側に変更できます。
しかし、img要素はinsetを使っても内側に影は付きません。
以下のようにdivで囲って、疑似要素を使って適用させるなど手間がかかります。
このため、今回は使用しませんでした。

【box-shadow(inset)使用例】
※下記コードはサポート外となります。

html

<div class="col-5 col-sp-12 d-flex align-items-center">
    <div class="animal-photo-container position-relative b-radius30">
        <img src="images/panda.jpg" alt="パンダ" class="w-max100 b-radius30 animal-photo">
    </div>
</div>

css

/* @media(max-width: 576px) {} 内に書く */
.animal-photo-container::before,
.animal-balloon {
    box-shadow: 0px 0px 0px 6px #445721 inset;
}

.animal-photo-container::before{
    content: "";
    position: absolute;
    width: 100%;
    height: 100%;
    border-radius: 30px;
}

.animal-photo{
    box-shadow: none;
}

これでスマートフォン幅用の調整も完成です。

お疲れ様でした。