【難しく考えすぎ!?】bootstrap臭のしないお洒落なレスポンシブWEBデザインの作り方
公開日:
:
最終更新日:2015/09/18
WEB製作 bootstrap, レスポンシブWEBデザイン
「Responsive Web Design JP」を運営されているA40さんのまとめ記事ここまでできる!Bootstrapで作られた国内のレスポンシブWebデザインのサイトまとめ20個が今日のGunosyで取り上げられていましたが、twitter Bootstrapを使ったレスポンシブWEBデザインのウェブサイトの事例が国内でもかなり増えてきました。
当社で制作した化粧品ブランド リボーテ -Re:beaute-様のサイトもありがたいことに、このまとめ記事に取り上げて頂いています。
いろいろなメディアに取り上げていただく中でのフィードバックとして、「twitter bootstrapがレスポンシブWEBデザインに便利なのはわかっているけど、どうやったらbootstrapっぽくないデザインにできるのかわからない」という声をよく聞きます。
僕も最初はそう思っていました。
一回触ってしまえば、「なんだ、かんたんなことじゃん」という話なのですが、最初に使ってみる時の敷居が高く感じてなかなかbootstrapの導入に踏み込めないWEB製作者さんがおおいと思いますので、今回は、bootstrapを使いつつ、bootstrapっぽくない(bootstrap臭のしない)ウェブデザインの作り方について、説明します。
bootstrap臭はどこから発生するのか?
bootstrapを見たことがあるけど、作ったことがない人は「bootstrap使うと、似たようなサイトになっちゃうんでしょ?」というイメージが強いと思います。
bootstrap臭の強いサイトっていうのは、こういうデザインをイメージされると思います。
黒のナビゲーションバーがヘッダーに配置されていたり、グレーのJumbotronなど、このあたりがbootstrap臭の原因でしょう。
最近のアップデートでbootstrap3になってから、bootstrapもフラットデザインを取り入れていますので、このイメージよりはだいぶbootstrap臭さはなくなっているのですが、未だにこのイメージをお持ちの方が多いと思います。
bootstrapの機能を使わなければいいんです
これらは、bootstrapのコンポーネントを使用すると、デフォルトでスタイルが設定されているので、bootstrapっぽくなってしまう、というのが原因です。
だったら、bootstrapのgrid機能などだけをつかい、デザイン的なコンポーネントはbootstrapを使わずに、自前でゴリゴリと書いてしまえばオールオッケーなのです。
さっきの例でbootstrap っぽかったのはnavbar やJumbotronの部分ですので、これらを使わず、デザインに関わる部分は自分でCSSを書いてしまえばいいのです。
bootstrapを使えばデザインしなくていいという幻想
デザインの苦手なエンジニアでもbootstrapの作法にしたがってコーディングすれば簡単にそれっぽいデザインに仕上げてくれる、というのはbootstrapの基本思想ですが、だからといってCSSを書かなくてもいい、というわけではありません。
むしろ、用意されているデザインを使用せずに自前でCSSを書くことで、オリジナリティのあるサイトを作ることができます。CSSを書かないからbootstrapっぽくなってしまう、ただそれだけのことです。
ただ、グリッドシステムだけは自前で用意すると面倒なので、bootstrapに頼って、デザインに関する部分だけは自前でCSSを書けばいいのです。
こんなに単純な話なのですが、やっぱり一度触ってみるまでは、
なかなかわかりづらいと思いますので、グリッドの使い方の基本から、オリジナルのデザインを組み込むところまでを詳しく解説していきます。
bootstrapのグリッドの基本構造
まずは、bootstrapの基本となる、グリッドの使い方を説明します。
1 |
<link rel="stylesheet" type="text/css" href="./css/bootstrap.min.css" /> |
このようにbootstrapを読み込みます。
1 |
<meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=no"> |
レスポンシブWEBデザインにするために、スマートフォン用のviewportを設定します。
今回の場合は、width=device-widthとして、端末の仮想viewportをそのまま横幅として設定します。iPhoneの場合は320pxとなります)
グリッドを組むときは親要素のclass=”row”の中に、カラムをclass=”col-xs-6″と作ります。
1 2 3 4 5 6 7 8 |
<div class="row"> <div class="col-xs-6"> aa </div> <div class="col-xs-6"> bb </div> </div> |
bootsrapは全体を12カラムに分割したレイアウトを組むのですが、
col-xs-12とすると、横幅が6カラム(半分の幅)のdivができます。
次に、コンテンツをセンターに寄せたいので、div.rowをdiv.containerで囲見ます。
1 2 3 4 5 6 7 8 9 10 |
<div class="container"> <div class="row"> <div class="col-xs-6"> aa </div> <div class="col-xs-6"> bb </div> </div> </div> |
bootstrapのデフォルトのCSSにより、
スマートフォンの場合は、
1 2 3 4 5 6 |
.container { padding-right: 15px; padding-left: 15px; margin-right: auto; margin-left: auto; } |
横幅が768px〜991px(タブレットを想定)の場合は
1 2 3 4 |
@media (min-width: 768px) .container { width: 750px; } |
992px〜1199pxの場合は
1 2 3 4 |
@media (min-width: 992px) .container { width: 970px; } |
1200px以上の横幅場合は
1 2 3 4 |
@media (min-width: 1200px) .container { width: 1170px; } |
と、レスポンシブにcontainerの横幅が自動で設定されています。
これで、レスポンシブに伸び縮みするグリッドレイアウトが出来ました。
レスポンシブにカラムサイズを変更する
先ほど、カラムの指定で、col-xs-6と書きましたが、画面サイズに合わせて、カラム数を変更したい場合があります。
スマートフォンの場合は、横幅いっぱい(12カラム)に、タブレットでは横に2等分(6カラム)、PCの場合は3等分(4カラム)という具合にしたいときは、以下の様に書きます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<div class="container"> <div class="row"> <div class="col-xs-12 col-sm-6 col-md-4"> aa </div> <div class="col-xs-12 col-sm-6 col-md-4"> bb </div> <div class="col-xs-12 col-sm-6 col-md-4"> cc </div> </div> </div> |
bootstrapのマニュアルのGrid optionsの項目に書いて有るとおり、boostrap3では、各ブレイクポイント毎に、カラム数を変更することが出来ます。
ブレイクポイント | class prefix |
---|---|
>768px | .col-xs- |
≥768px | .col-sm- |
≥992px | .col-md- |
≥1200px | .col-lg- |
タブレットを想定したブレイクポイントは、≥768pxなので、タブレットで2分割にしたい場合は.col-sm-6とします。
PCの場合は、992px以上になると思いますので、.col-md-4として3分割のカラムにします。
このように、bootstrapはモバイルファーストで設計されていますので、まずは.col-xs-12と一番小さい画面サイズの場合の記述をして、大きいサイズのブレイクポイントでは変更したい場合はcol-sm-6やcol-md-4と、各ブレイクポイント毎のクラスを付与していきます。
※Nexus7は横幅が600pxとなっており、このままではスマートフォン向けのデザインで表示されてしまいますので、本当はタブレット向けのブレイクポイントを≥600pxにしておきたいところなのですが、bootstrapのデフォルトがこうなっていますので、このまま話を進めていきます。各ブレイクポイントの数値を変更したい場合は、lessファイルの変数を変えることで、簡単に変更することができますので、調べてみて下さい。
画像をレスポンシブにする方法
次に、先ほど作った3つのカラムに画像を挿入してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<div class="container"> <div class="row"> <div class="col-xs-12 col-sm-6 col-md-4"> <img src="./img/400x300.gif" alt=""/> aa </div> <div class="col-xs-12 col-sm-6 col-md-4"> <img src="./img/400x300.gif" alt=""/> bb </div> <div class="col-xs-12 col-sm-6 col-md-4"> <img src="./img/400x300.gif" alt=""/> cc </div> </div> </div> |
画像がカラムからはみ出しちゃいました。
カラムサイズに合わせて画像をレスポンシブに横幅100%表示する場合は、.img-responsiveというクラスを画像に追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<div class="container"> <div class="row"> <div class="col-xs-12 col-sm-6 col-md-4"> <img src="./img/400x300.gif" alt="" class="img-responsive"/> aa </div> <div class="col-xs-12 col-sm-6 col-md-4"> <img src="./img/400x300.gif" alt="" class="img-responsive"/> bb </div> <div class="col-xs-12 col-sm-6 col-md-4"> <img src="./img/400x300.gif" alt="" class="img-responsive"/> cc </div> </div> </div> |
これで、カラムの横幅にフィットするサイズに自動で縮小されます。
スマホでも、タブレットでも、PCでも、デザインが崩れなくなりました。
カラムの横幅よりも画像が大きい場合はこれでフィットしますが、カラムよりも画像が小さい場合は、小さいままになってしまいます。これは.img-responsiveではmax-width:100%と最大のサイズを設定しているからで、style=”width:100%”としておくと、常に横幅いっぱいに画像が表示されます。ケースによって使い分けて下さい。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<div class="container"> <div class="row"> <div class="col-xs-12 col-sm-6 col-md-4"> <img src="./img/400x300.gif" alt="" class="img-responsive" style="width:100%;"/> aa </div> <div class="col-xs-12 col-sm-6 col-md-4"> <img src="./img/400x300.gif" alt="" class="img-responsive" style="width:100%;"/> bb </div> <div class="col-xs-12 col-sm-6 col-md-4"> <img src="./img/400x300.gif" alt="" class="img-responsive" style="width:100%;"/> cc </div> </div> </div> |
ここから先は、自分でCSSを書いてゴリゴリ好きなデザインを作っていくだけ
bootstrapの機能で使うのはここまででOKです。これまで見てきたグリッド関係のクラスを適宜使いつつ、あとは自分の好きなデザインになるようにゴリゴリとCSSを書いていけばOKです。
たとえば、先ほどのサンプルを発展させたデザインはこんな感じに出来ます。
まずは、ヘッダーを作ります。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<!--header--> <div class="header"> <div class="container"> <div class="row"> <div class="col-xs-12"> <a herf="#"> <img src="./img/logo.png" alt="logo" class="logo"/> </a> </div> </div> </div> </div> <!--//header--> |
1 2 3 4 5 6 7 |
.header{ border-top:3px solid #000; } .logo{ margin:0.5em auto; display:block; } |
ヘッダーナビゲーションを作成します。
カラムの設定で、768pxより小さい場合は横2列、それ以上では横4列になるように、.col-xs-6 .col-sm-3と設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<!--headerNav--> <div class="headerNav"> <div class="container"> <div class="row headerNavBox"> <a href="#"> <div class="col-xs-6 col-sm-3 headerNavBtn"> トップページ </div> </a> <a href="#"> <div class="col-xs-6 col-sm-3 headerNavBtn"> メニュー1 </div> </a> <a href="#"> <div class="col-xs-6 col-sm-3 headerNavBtn"> メニュー2 </div> </a> <a href="#"> <div class="col-xs-6 col-sm-3 headerNavBtn"> メニュー3 </div> </a> </div> </div> </div> <!--//headerNav--> |
1 2 3 4 5 6 7 |
.headerNavBtn{ text-align:center; height:3em; line-height:3em; color:#5F5F5F; font-size:16px; } |
メニューをマウスオーバーしたときに背景色を#EEEにします。
1 2 3 |
.headerNavBtn:hover{ background:#EEE; } |
ヘッダーメニューの下には、mainVisualと4分割のカラムの2つのセクションを作り、それぞれの背景にグラデーションを適用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
<!--mainVisual--> <div class="mainVisual_wrapper section"> <div class="container"> <img src="./img/mainVisual.jpg" alt="" class="img-responsive mainVisual"/> </div> </div> <!--//mainVisual--> <!--section--> <div class="section"> <div class="container"> <div class="row"> <div class="col-xs-12 col-sm-6 col-md-3"> <div class="col_box clearfix"> <div class="col-xs-6 col-sm-12"> <img src="./img/400x300.gif" alt="" class="img-responsive" style="width:100%;"/> </div> <div class="col-xs-6 col-sm-12"> 写真と説明文のレイアウトが、ブレイクポイントによって変わります。 </div> </div> </div> <div class="col-xs-12 col-sm-6 col-md-3"> <div class="col_box clearfix"> <div class="col-xs-6 col-sm-12"> <img src="./img/400x300.gif" alt="" class="img-responsive" style="width:100%;"/> </div> <div class="col-xs-6 col-sm-12"> 写真と説明文のレイアウトが、ブレイクポイントによって変わります。 </div> </div> </div> <div class="col-xs-12 col-sm-6 col-md-3"> <div class="col_box clearfix"> <div class="col-xs-6 col-sm-12"> <img src="./img/400x300.gif" alt="" class="img-responsive" style="width:100%;"/> </div> <div class="col-xs-6 col-sm-12"> 写真と説明文のレイアウトが、ブレイクポイントによって変わります。 </div> </div> </div> <div class="col-xs-12 col-sm-6 col-md-3"> <div class="col_box clearfix"> <div class="col-xs-6 col-sm-12"> <img src="./img/400x300.gif" alt="" class="img-responsive" style="width:100%;"/> </div> <div class="col-xs-6 col-sm-12"> 写真と説明文のレイアウトが、ブレイクポイントによって変わります。 </div> </div> </div> </div> </div> </div> <!--//section--> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
.section{ background: #232829; background: -moz-linear-gradient(50% 0% -90deg, #000 0%, #232829 100%); background: -o-linear-gradient(-90deg, #000 0%, #232829 100%); background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0, #000), color-stop(1, #232829)); background: -webkit-linear-gradient(-90deg, #000 0%, #232829 100%); background: linear-gradient(180deg, #000 0%, #232829 100%); padding: 2em 0 3em; -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff000000,endColorstr=#ff232829,GradientType=0)"; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff000000,endColorstr=#ff232829,GradientType=0); } .mainVisual_wrapper .container{ padding:0; } .mainVisual_wrapper.section{ padding:0; } .col_box{ background:#FFF; border-radius:3px; padding:15px 0 15px; margin-bottom:1em; } |
最後にfooteerを作って完成です。
1 2 3 4 5 6 7 8 9 |
<!--footer--> <div class="footer"> <div class="container"> <span class="copyright"> © Copyright <a href="http://megane84.com/blog/" target="_blank">久米さんの憂鬱</a> All Rights Reserved. </span> </div> </div> <!--//footer--> |
1 2 3 4 5 |
.copyright{ text-align:center; margin:0.5em auto; display:block; } |
さて、どうでしょう、bootstrapを使用しているのに、bootstrapっぽくないデザインのサイトが完成しました。
bootstrapがデザインにしゃしゃり出てくるのが嫌、という方は
bootstrapでは、ダウンロードする際に、含めるコンポーネントを選んだり、デフォルトの色設定やサイズ設定をカスタマイズすることが出来ます。
Customizeページで 好きな設定にしてダウンロード出来るので、慣れてきて使わないコンポーネントや、好みの設定が出てきたら、ここで自分用にカスタマイズして使うと無駄が無くて良いと思います。
【まとめ】デザインが出来る人はbootstrapを使ってもちゃんとデザインできます
bootstrapで用意されているスタイルを使用すれば当然bootstrapっぽいサイトになってしまいますが、それを使わない、という選択肢をとることで、自由にデザインが出来るので、bootstrapっぽくはなりません。
もちろん、自前で作る分、bootstrapですでに用意されているスタイルを使用するよりは時間は掛かるでしょう。でも、わざわざbootstrapのスタイルをカスタマイズしていく事に時間をかけるよりは、すっぱり「使わない」という選択肢をとった方が作業効率アップにつながります。
ぜひご参考下さい。
ソシム
売り上げランキング: 103,706
売り上げランキング: 21,854
ソフトバンククリエイティブ
売り上げランキング: 12,121
関連記事
-
2.ConoHaVPSにSFTPでとりあえずログインする方法
前回に引き続き、今回はConoHaにSFTPで接続する方法です。 前回の設定でSSH接
-
XAMPPインストール時にapacheが起動しないときは・・・
PHP & MySQLをローカルでテストするときによく使うXAMPPですが、apacheを起
-
素人でも【本当に】簡単に更新できるオープンソースCMS concrete5をインストールしてみた。
concrete5とは、ウェブサーバー上で、誰でも簡単で、しかも直感的にホームページの運営管理が出
-
ConoHaVPSを借りてみたけど、SSHでのログインに手こずった件
conohaVPSを借りてみたのですが、黒い画面で操作しなければならず、かなり手こずりました・・
-
ロリポップサーバーでCGIなどが動かなくなった場合の対処法
今回のロリポップのwordpressへの大規模ハッキングをうけて、ロリポップ側でいろいろ対応が始まっ
-
jqueryでtableに一行飛ばしで背景色を付ける方法
最近はちょっとandroidからは離れてhtml,PHP ,Javascript関
-
ファーストサーバーにwordpressの新規に手動でインストールしてみた
OSS簡単インストール機能という簡単インストール機能は一応ファーストサーバーのコンフィグレータにはあ
-
EC-CUBEのデータベース接続先を開発環境と本番環境で自動で分ける方法
EC-CUBEのカスタマイズや構築をしているとき、いきなり本番環境をいじることが出来ない場合
-
たまごカートの広告媒体管理のトラッキングパラメーターをad_codeから変更する方法
定期購入サービス向けのショッピングカート たまごカートのカスタマイズ情報です。 たまごカートでは、
-
バイラルメディアはクソだ、とか否定してるけど、あなたには絶対に運営できないと思うよ
ここ最近、バイラルメディアに関する議論やヘイト記事をよく目にします。 twitterでお世
Additional comments powered byBackType
Comment
[…] […]
[…] デザインの作り方 WEBデザイナーの憂鬱 http://megane84.com/blog/2013/12/25/post-2682/ […]
SyntaxHilighterというスクリプトが適用されていて、コードの改行がおかしくなってとてつもなく見辛くなっています。