記事の内容やaishipシリーズに関するお問い合わせはこちらから

0120-173-163 お電話

[電話受付時間]平日9:30〜19:00

TOP

CATEGORY

SERVICE

レスポンシブな背景画像にコンテンツを重ねて表示させる3つの方法

レスポンシブな背景画像にコンテンツを重ねて表示させる3つの方法

ここしばらくの間フルスクリーン画像を使ったサイトデザインの人気が高まっています。

実は「背景画像の上にボタンを設置するデザイン」というのは少し厄介で、レスポンシブ化する際に幾分かの調整が必要になります。

今回はこの「背景画像の上にボタンなどのコンテンツを、『中央寄せ』で配置する」方法を3パターンご紹介します。

それぞれメリット・デメリットがありますので、使用したい場面にあわせてお使いください。

1:absoluteとmarginを組み合わせる

サンプル1

この方法では画像をimgタグで記述し、上に表示されるコンテンツをposition:absoluteで移動させます。

おそらく最もシンプルで用いられることが多いパターンではないかなと思います。

画像を中心に配置することができますので、比較的シンプルに実装させることが可能です。

デメリットとしては、absoluteさせたコンテンツをセンタリングさせるために若干HTMLとCSSが複雑になることがあります。

サンプルコード
<div id="row-1st">
    <img src="http://jsrun.it/assets/4/T/8/j/4T8jS.jpg">
    <div id="row-1st-in">
        <div>
            <p>
                親譲りの無鉄砲で小供の時から損ばかりしている。小学校に居る時分学校の二階から飛び降りて一週間ほど腰を抜かした事がある。なぜそんな無闇をしたと聞く人があるかも知れぬ。別段深い理由でもない。新築の二階から首を出していたら、同級生の一人が冗談に、いくら威張っても、そこから飛び降りる事は出来まい。弱虫やーい。と囃したからである。小使に負ぶさって帰って来た時、おやじが大きな眼をして二階ぐらいから飛び降りて腰を抜かす奴があるかと云ったから、この次は抜かさずに飛んで見せますと答えた。(青空文庫より)
            </p>
        </div>
    </div>
</div>
#row-1st {
    position: relative;
     > img {
        max-width: 100%;
        height: auto;
        display: block;
        margin: 0 auto;
    }
}
#row-1st-in {
    position: absolute;
    top: 50%;
    left: 50%;
    -webkit-transform: translate(-50%, -50%);
    transform: translate(-50%, -50%);
    background-color: rgba(255,255,255,0.7);
    > div {
        width: 90%;
        max-width: 320px;
        margin: 0 auto;
        font-size: 1rem;
        line-height: 1.7;
        padding: 20px 0;
    }
}

@media only screen and (max-width: 480px) {
    #row-1st {
        overflow: scroll;
    }
    #row-1st-in {
        width: 100%;
    }  
}
2:background-image&cover

サンプル2
2つ目の方法は、背景画像として配置するパターンとなります。

background-imageで背景画像を設定し、background-size: coverでレスポンシブに変形するように調整します。

背景画像の表示領域はpaddingやmargin、heightなどでそれぞれ指定する方法です。

この方法のメリットは「1よりもシンプルなコードが書けること」や「デバイス幅に応じて背景画像を切り替えれること」などです。

デメリットについては、「背景画像の表示領域を固定値で取るために調整が難しい」という点が挙げられます。

表示速度を犠牲にしますが、jQueryなどを用いて調整するのも手かもしれません。

サンプルコード
<div id="row-2nd">
    <p id="row-2nd-in">
        親譲りの無鉄砲で小供の時から損ばかりしている。小学校に居る時分学校の二階から飛び降りて一週間ほど腰を抜かした事がある。なぜそんな無闇をしたと聞く人があるかも知れぬ。別段深い理由でもない。新築の二階から首を出していたら、同級生の一人が冗談に、いくら威張っても、そこから飛び降りる事は出来まい。弱虫やーい。と囃したからである。小使に負ぶさって帰って来た時、おやじが大きな眼をして二階ぐらいから飛び降りて腰を抜かす奴があるかと云ったから、この次は抜かさずに飛んで見せますと答えた。(青空文庫より)
    </p>
</div>
#row-2nd {
    position: relative;
    background: url(http://jsrun.it/assets/c/Y/R/o/cYRo8.jpg) no-repeat;
    -webkit-background-size: cover;
    background-size: cover;
    padding: 50px 0;
}
#row-2nd-in {
    background-color: rgba(255,255,255,0.7);
    padding: 50px 10px;
    margin: 0 auto;
    width: 90%;
    max-width: 350px;
    font-size: 1rem;
    line-height: 1.7;
}

@media only screen and (max-width: 480px) {
    #row-2nd {
        overflow: scroll;
    }
    #row-2nd-in {
        width: 100%;
    }  
}
3:クリッカブルマップ

3つ目の方法はかなり特殊です。

ボタンなどを全て「1枚の画像として作成し、mapタグでリンクを個別に設定する」という方法となります。

これは「Responsive Image Maps jQuery Plugin」というjQueryプラグインを用いることで実現可能です。

Responsive Image Maps jQuery Plugin

こちらはプラグインページにある画像ですが、それぞれのキャラクターをクリックすると個別のリンクが反応するように設定されています。

どうしても上の2つで対応できない画像や構成にぶち当たった際の「奥の手」として是非お試し下さい。

まとめ

いかがでしたでしょうか?

それぞれかなり一長一短がある方法となりますので、載せたい画像やコンテンツによってお試しください。


                   
クラウドECのサイト構築はaishipR-カスタマイズ可能なASP実績No.1

累計2000社以上の導入の総合通販型カートシステムで、カスタマイズ性が高く、デザインの自由度はもちろん、各種システムとの連携や機能追加等も独自のカスタマイズができるため、こだわりのある本格的な通販を月額9,800円から実現できます。 またモバイルファースト設計や月2回の無償バージョンアップなどの特徴があり、使いやすさと最新性を追求した通販サイトを構築できます。 さらに信頼性の高いサーバーを採用しており大規模アクセスにも対応できるため、これからさらに通販での売上を伸ばされたい事業者様におすすめです。
         

レスポンシブWebデザインカテゴリの最新記事