Tag: css

CSS
winmonaye

第1弾:デザイン画像を稼働中のWebページに組み入れる方法

仕入れたデザイン画像を稼働中のウェブページに適用するのに苦労することはありませんか?ウェブ開発のすべり出しが順調であるにも関わらず、デザイン設計のある部分でつまづくことは? wireframes はあなたにとってコーディングによる設計よりも簡単?ローディング速度が遅くメンテの難しいwebの開発に満足できますか? 多くのデザイナーたちが自分のデザイン画像を稼働中のHTML/CSS web ページに上手く変換できません( 中にはコーディングすら全くしない人もいます)。大抵の場合、その理由はデザイン設計のアプローチと、1つの命令行を書き込む前のプロセスに対する考え方に問題があるからです。 噂とは裏腹にCSSは難しい言語ではありませんし、web ページやweb サイトの開発も難しくある必要はありません。多くの場合、問題は基礎構造の開発前に細かい部分を気にして混乱してしまうところにあります。またデザインのうち、コードを複雑化するような軽微で些細な部分の処理に捕われてしまうことも問題要因の一つです。 この記事は、http://www.onextrapixel.com/の許可を得て、翻訳しています。一部変更して翻訳している場合もあります。オリジナルの記事はここよりご覧いただけます。 デモにリンク オリジナルの記事 この投稿では、皆様に自由にダウンロードできる試供デザインを閲覧し、そのデザインを稼働中のweb ページに組み入れる方法を見ていただきます。この投稿では私は簡潔なコードを用いますが、デザイン・テンプレートに付いたオリジナルコード同様、ページを立ち上げるために私が使用したコードをダウンロードしていただけます。この投稿自体は、主にデザイン設計のための思考過程に重点をおいて進めていきます。 ダウンロード The Artificial Casting テンプレート 下のデザインをご覧ください。これらはSmashing Magazinesから無料でダウンロードできます(当ページの3つ目のテンプレート)。 テンプレートクリエーターによる設計デモをご覧になり、上にある私のデモと比較していただくことも出来ます。 私がこのテンプレートを選んだのは、見た目がオシャレで私がチェスが好きだという理由もありますが、何より典型的な3カラム・レイアウトで、開発にあたり2つ3つの難関と選択肢が用意されているからです。また最終ページに入れるか否かを決定する詳細な箇所が数個含まれています。 デザインから開発までの過程に対する一般的考え Artificial Casting テンプレートの説明に入る前に、開発にあたってwebサイト全てに共通する2つ3つの事柄を考えてみましょう。 好むと好まざるとに関わらず、web ページは全てボックスを使って開発されます。HTMLの全要素はボックスを持ち、ボックスは CSSボックス・モデルをもとに形づけられます。隣同士や上下に並ぶボックスもあれば、他のボックスに包含されているものもあります。デザインが箱形でなければならないということではなく、開発時に作られるボックスについて考える必要があるということです。 最も上級なレベルでは、2つ3つの大ボックスで大枠のレイアウトが構成されて、デザインの詳細はその大ボックス中の小ボックスに入ります。これらの長方形ボックスを頭で思い描くことは、デザインのどの部分がボックスに上手くフィットして、どの部分をボックスから外すべきかを見定めるのに役立ちます。まずは、これらの大レイアウト・ボックスについて考えましょう。細かい部分を見て内側から外側へコーディングせず、外側からのコーディングを行います。 画像とHTTPリクエストは、webページのローディングを遅くする大きな要因の一つです。デザインを考えるにあたって本当に画像化するべきもの、またコードを用いて簡単に再現できるものは何かについて思案することは賢明です。一つ画像を少なくすることで、ファイルサイズもサーバー上のリクエスト数も縮小するため、 画像を最適化することができます。 私はただの大きな色の集合体に過ぎない、webページ上の画像を見かけることがよくあります。そもそも色の集合体が画像化されなければならない理由はないのです。私たちは画像を眺めて、どうやって必要とする画像全体のファイルサイズを縮めるかについて考えながら、使用する画像の数を減らしています。 レイアウト テンプレートに関してまず考えたいことは、レイアウト全体の概観についてです。デザインを大ブロックに分けようとしていますが、この場合、まず上下方向に行うのが最も簡単でしょう。デザインを見ると3つの帯がページを横切っているのが分かります。この帯がヘッダーやコンテンツ、そしてフッターに当たるものです。 フッター 最下部に3つの情報ボックスとテキストを含んだ分かりやすいフッターがあります。とりあえずフッターの中味は気にせず、先ず上部からフッターを切り離すためにどこで線引きするかを決めます。 この端の部分を画像化しますが、それをフッターもしくは上のボックスのどちらに入れるかを選択できます。どちらでもOKですが、私はイメージをフッターに入れることにしました。 この記事で触れませんが、最終的にはサイトにわたって繰り返されるページのある部分を別のファイルで管理するために、PHPを含有したファイルの類いを使用するのが妥当でしょう。この画像は当サイトの全ページ上に登場するため、私にとっては最終的にfooter.phpファイルになるフッターに置くほうが合理的なのです。 フッター内にある他すべての詳細については、基礎レイアウトの作成中はそれについて考える必要はありません。 コンテンツ 本文を3つのカラムと2つのサイドバー、そしてその間にあるメイン・セクションに分けてフッターの真上に置きます。3つのカラムについては後ほどもう少し詳しく触れます。今は内側を3つのカラムまたは3つの小ボックスに分割される、一つの大コンテンツ・ボックスについて考えるだけで十分です。 フッターの場合と同じく、コンテンツ・ボックスの初めと終わりをどこにするかを決めなければなりません。ここに開発上の問題のタネとなる2つの要素があります。複数のカラムおよびコンテンツ全体をそれぞれまたいでいるログイン・ボックスとチェスの駒の画像はヘッダーに属します。 オリジナルのテンプレート開発にあたって、両者はヘッダーの一部として設定されましたが、私はそれらをコンテンツエリアに置くことにしました。フッターの場合と同じく、この2つがサイトの全ページに登場させるべきかを考えました。確かにテンプレートのデザイン時に設定すればそうなっていたでしょう。しかし、2つがページ毎に変わるような柔軟性を持たせるのも良いだろうと考えました。 おそらく、サイト内の別のセクションでは別のチェス駒画像が登場し、ログイン・ボックスは一部のページあるいはセクションにのみ登場するでしょう。 コンテンツエリアにインクルード・ファイルは使いません。ページ毎に変わるセクションはここだけなので、サイトにわたって変化させたいデザイン素材は、このボックスに入れるのが妥当なのです。しかしここからチェス駒の画像をコンテンツとヘッダーの両方に置くため、どのようにコーディングするかを把握しておく必要があります。 ヘッダー ここではヘッダーについて紹介します。消去法からするとヘッダーにはロゴやナビゲーション・バー、そしてその背後に勾配の背景が入ります。ヘッダーとコンテンツエリアの間を、ページを横切る細いラインで仕切ります。このラインもページ毎に変化しないため私はヘッダーに入れています。ヘッダーは最終的にサイトの全ページに入る header.phpファイルになります。 レイアウトの作成 HTMLを以下のように組み立てることができます。 先述したメインボックスやビルディング・ボックスは、それぞれ セマンティック id を適用した divになります。 コンテンツエリアの中に3つのカラムが入っているのが分かるとおり、コンテンツ div は3つの追加 divsを持っています。一方がより重要であることを反映させるためによくされることですが、2つのサイドバーをそれぞれ「プライマリー」「セカンダリー」と名付けました。 チェス駒とログイン・ボックスの画像をコンテンツ div の中に追加しますが、 ログイン・ボックスをカラム構造の枠から独立させるために、 3つのカラムdivsの外に置くことにします。 ここからはCSSについて。 CSSでサイトのレイアウトを作る際の鍵は、CSSの不要な場合を見定めること、そしてフロートを要する場所がわずかであるという理解です。HTMLでは、コンテンツ div はそのままヘッダー divの真下に置き、 フッター div はそのままコンテンツdiv の下に置きます。これは div のデフォルト動作で、それが起こるために何もする必要はありません。 このデフォルト動作を変えたいので、コンテンツdiv内の各 divs をフロートします。これら3つのdivs がお互いの下に来ないように、お互いを隣り合わせにして配置し各々左方向にフロートするようにします。 デフォルト動作を変更させたら次はフッター divの調整を行います。 コンテンツ div内の内容全てがフロートした状態にあるので、 フッター divは自動的にその下に来ることはありません。 clear: both を追加することで(ここでは  clear: leftを使っていますが)フッター div を強制的にコンテンツ div下に持っていきます。 必然的により多くのCSSが最終的には必要となります。上記のコードを試すと、どの divs にも幅や高さ指定、またそれらを設定するコンテンツがないため内容が乏しいのが分かります。そこにはこれから中味を埋めていく空っぽの構造体があるだけです。 フロートされた3つの divs の合計幅がページ全体の幅を越えないようにしなければいけないため、それら3つの幅設定には特に注意する必要があります。レイアウトに際してのもう一つの決定事項である全体の幅について、まだ詳しく述べていないことにお気づきでしょう。 固定もしくはリキッドのレイアウト デザイン・イメージを一見しただけでは、デザインが 固定されているのか流動的なのかが分かりません。事実どちらも可能なのです。テンプレートに付いているコードを見ると、3つの水平の帯(ヘッダー、コンテンツ。フッター)がウィンドウの端まで伸びながら、帯内のコンテンツ全部がページの中央に来るように設計されています。同じように私たちもしてみましょう。 全てを固定して中央に持っていきたい時は、div でその周辺を包んで幅を確保し、その div  で包んだ部分を中央に据えます。おそらくCSSでページを中央に置く方法が皆さんには馴染み深いでしょう。 ページ全体を中央に置く方が簡単と言えば簡単なのですが、ここではそれを行いません。3つの水平帯の背景をブラウザの端まで伸ばしながら、帯内の内容全てをウィンドウの中央に置きます。私たちが目指すのは リキッドな背景と固定したコンテンツですが、幸いにもSoh Tanaka氏がすばらしいとても簡単な解決方法を提供してくれました。 ただCSSで一つのクラスを作り、それをHTML構造内にある選択可能なdivsに適用するだけでよいのです。 センタリングに精通している人なら、上のコードが通常 wrapper divに加えるものであることにお気付きになるでしょう。クラスとしてCSSを設定すれば、それが適用される箇所での柔軟さとコントロールが確実になります。新しいHTMLはこのようになります。

詳細を読む »

:nth-childの使い方

この記事は、http://css-tricks.com/ の Chris Coyier の許可を得て、一部変更し、翻訳しています。オリジナルの記事はここよりご覧いただけます。 オリジナルの記事 :nth-child と :nth-of-type を完璧に使い分けれるのは、なかなか難しいですが、どんどん理解していくことで、CSSのプロに一歩近づけると思います。 今回、:nth-child を使って、何個か例をあげて説明して行こうと思います。 5個目だけのエレメントだけをセレクトする場合 かっこ内に特定の数字を入れることで、上の例で言うと5個目だのliを指定して、スタイルを当てれます。 5個目以降だけのエレメントだけをセレクトする場合 これでもし li が10個以上あったら、それらもすべて指定することになります。n は、0 から始まることを覚えといてください。 最初の5個だけのエレメントだけをセレクトする場合 n が 0 から始まって -1, -2, -3 となっていきますので、 5 番目より低いエレメントが選択できます。 1個目から始まって、4個ずつ飛ばして選択する場合 奇数を選択する場合 偶数選択する場合 最後のエレメントを選択する場合 10個のエレメントがあれば10個目を、100個あれば100個目を選択します。 最後から2個目のエレメントを選択する場合 nth に last を入れることで、最後から何個目かを選択することができます。もちろん 2n などを使うことで、後ろからの偶数でもOKです。 対応しているブラウザー 面白いことに :first-child は、インターネットエクスプロラー7(IE7) より対応していましたが、 それ以外のセレクターは IE9 になってからしか対応してません。 それ以外のブラウザーに関しては、特に心配することなく使えると思います。IEの対応が心配な方は、Selectivizrなどを使って補助もできます。

詳細を読む »
CSS
winmonaye

ウェブサイトを HTML&CSSに基礎から構築 〜 最終回 〜

デモへリンク 元ファイルダウンロード ウェブサイトの作り方を学ぶには、やはり、一からどう作っるか説明するのが一番学べると思います。 ということで、今回はクオリティの高いフォトショップのウェブデザインのコーディングを4回に分けて説明しています。 今回は、第4回目の最終回です。 そして、この最終回は、チュートリアルをビデオ録画して送りいたします。ビデオチュートリアルは、文書と違い、簡単に見たい所を飛ばすことや、飛ばし読みなどは難しいですが、実際にどんな用に作られたか目で見ながら学ぶことができるので、文書よりもっと簡単に学べるとおもいます。 過去のチュートリアルを見ていない方は、こちらよりどうぞ。 第1回: ウェブサイト作成の準備&ボディーのバックグラウンドイメージの設定 第2回: メニュー&ロゴ、ソーシャルリンクのCSS&HTML 第3回: jQueryを使ってイメージスライダーの設置 第4回: 最新のプロジェクトのCSS ビデオ講座 ビデオチュートリアルパート1 [youtube=http://www.youtube.com/watch?v=9Hye8gLzyWY&rel=0&w=590] ビデオチュートリアルパート2 [youtube=http://www.youtube.com/watch?v=6GU_TPJ4bUI&rel=0&w=590] ビデオチュートリアルパート3 [youtube=http://www.youtube.com/watch?v=rwwyTOLD_lI&rel=0&w=590] ビデオチュートリアルパート4 [youtube=http://www.youtube.com/watch?v=ddBiJFeL1h0&rel=0&w=590] 今回の分のHTML   今回の分のCSS

詳細を読む »

ウェブサイトを HTML&CSSに基礎から構築 〜 第 3 回 〜

ウェブサイトの作り方を学ぶには、やはり、一からどう作っるか説明するのが一番学べると思います。 ということで、今回はクオリティの高いフォトショップのウェブデザインのコーディングを4回に分けて説明しています。 これが今回のチュートリアルで作って出来上がったウェブサイトです。 完成したサイト 第1回: ウェブサイト作成の準備&ボディーのバックグラウンドイメージの設定 第2回: メニュー&ロゴ、ソーシャルリンクのCSS&HTML 第3回: jQueryを使ってイメージスライダーの設置 第4回: 最新のプロジェクトのCSS ビデオ講座 1.スライダー プラグインをダウンロード 画像を順番に表示させる、スライダー系のプラグイン色々とありますが、今回は、CSS Tricksの運営者Chris Coyierが初めて作って、その後数人のでプログラマーが参加し強化された、AnythingSliderを使いたいと思います。 AnythingSliderは、機能が豊富なのと、自分が好きな様にスタイルができるので、とても重宝すると思います。 それでは、早速ここからダウンロードしてください=>AnythingSlider ダウンロード 2.スラーダー用のファイルの設置 お決まりですが、とりあえずjQueryのスクリプトのリンクとAnythingSliderのスクリプトファイルと自分たちのスクリプットファイルをヘッダー内にリンクを挿入してください。 それと、AnythingSliderのCSSをリンクさせてください。これで、最低限必要なファイルは、全部OKです。 3.スライダー用にのHTMLマークアップ Anythingスライダーは、ul li を使いますので、一個一個のスライダーは必ず li の中に入れてください。今回は、li の中に入るのは、画像だけですので、とても単純に以下の様になります。 画像は、適当に用意いたしました。今回使う画像のサイズは、800×280 です。 4.Javascriptの設定 実際にスライダーを稼動させるには、Jqueryのいつもの $(document).ready(function(){}); のファンクション内にさっき程ulにつけたIDを指定して、anythingSliderのファンクションを付けます。 $(document) は、文字どうりドキュメントが、 .ready() で用意できたらー、となるので、訳すと”このファイルが全部ダウンロード完了したら” になります。 そして、.ready() 内に新しいファンクション function(){} を入れることで、実際にダウンロードが完了するとそのファンクションが稼動されます。いわゆる、callback ですね。 さて、今回のanythingSliderの設定は以下になります。 初心者でも理解出来る様に、上の各ラインが何しているか説明して行きたいと思います。 まず、DOM(簡単に言うとHTMLの各部分のことですが、詳しい説明は、WIKIでご覧ください。) を指定して、 これで、さっき程の ul で指定した ID をターゲット完了です。 そして、それに対して、anythingSlider のファンクションを発動させます。 これで、発動は完了です。 ただ、これでは、すべてのオプションがデフォルトのままになりますので、anythingSlider のファンクション内に、自分たちの好きなオプションを加えます。指定出来るオプションは、各ファンクションによって決まっています。anythingSlider のファンクションが指定できるオプションは、CSS TricksのスライダーのデモのページのDefault Optionのリストをご覧ください。 実際今回必要なのは、左と右の矢印だけなので、必要なオプションは、以下になります。 widthとheightで横幅と縦のサイズを指定して、buildNavigationをfalseで、ナビーゲーションの作成(スライダーの数や現在地の表示)は、なし に指定。 autoPlayLockedをTrueで、右クリックや左矢印を押しても、自動的にローテーションは止めない。enableKeyboardをfalseキーボードでのスライダーのコントロールは OFF にしてしました。 コンマ区切りでオプションを指定して、最後のオプションのコンマはいりません。すべてのオションは、javascriptのobject literalとしてファンクション内に指定しますので、 {} で閉じてください。 なので、最終的に全部をまとめると以下の用になります。 5.CSSの調整 あとは、自分のサイトのデザインに会う様に CSS でマークアップをしていきます。anythingslider.css 内のcssを変更してもいいのですが、新しいバージョンにアップデートした場合に、簡単に上書きできないので、すべてのCSSは、自分のサイトのメインのstyle.cssに入れていきましょう。 そんなに難しいCSSは入っていなので、説明ははぶいておきます。 なにか、分からないようなことが有れば、いつでもコメントを残してください。 これで、スライダーの完成です。必要があればスライダーのデモご覧になって遊んでみてください。 今回のチュートリアル分のデモ 第1回: ウェブサイト作成の準備&ボディーのバックグラウンドイメージの設定 第2回: メニュー&ロゴ、ソーシャルリンクのCSS&HTML 第3回: jQueryを使ってイメージスライダーの設置 第4回: 最新のプロジェクトのCSS ビデオ講座

詳細を読む »

ウェブサイトをHTML&CSSに基礎から構築 〜 第 2 回 〜

ウェブサイトの作り方を学ぶには、やはり、一からどう作っるか説明するのが一番学べると思います。 ということで、今回はクオリティの高いフォトショップのウェブデザインのコーディングを4回に分けて説明したいと思います。 これが今回のチュートリアルで作って出来上がったウェブサイトです。 完成したサイト 今回は第2回、メニューとロゴの部分をコーディングしたいと思います。 第1回: ウェブサイト作成の準備&ボディーのバックグラウンドイメージの設定 第2回: メニュー&ロゴ、ソーシャルリンクのCSS&HTML 第3回: jQueryを使ってイメージスライダーの設置 第4回: 最新のプロジェクトのCSS ビデオ講座 1.メニューの画像を用意する 今回は、普通のテキストでもメニューを作ることができますが、ウェブの標準フォントでないフォントを使いたい人の為に、画像を使ってコーディングを行いたいと思います。 それでは、以下の様に2個の画像を用意してください。一個目は、メニューの背景となる画像、2個目はメニューの文字とマウスがメニューの上に来た時とそのページが選択されているときの状態(HoverとActive 状態)の画像を用意します。 ちょっと前までは、各メニューの項目を一個ずつのイメージで作ってましたが、ほんの一年程前から、すべてを一つにまとめた方が、ホームページが早く表示されることが分かり、今ではすっかり定番となっている。 2.メニューのコーディング まずは、今回のコンテンツのサイズは、フォトショップから見ると950pxぐらいですので、まず、ヘッダー用にDIV(今回HTML5のHEADERを使いますが)を作って、その中にメニュー用のDIVの器を作ります。メニュー用のDIVは、950pxで指定して、いつでも中央に来る様に左右のマージンをAutoにします。この950pxと中央に来る様にしてするCSSは何度も使う予定なので、classを作っておきましょう。 次に実際のメニューのコーディングを行っていきます。htmlの方は、ul でリストを以下の様に作ります。 ulにさっき程一個目の画像を背景に指定します。ulのサイズは画像と同じサイズに指定して、上下のスペースをmarginで指定して, float:rightでul全体を右によせます。 ul をfloatしたけど、下のコンテンツを上に来てほしくないので、clearfixのcssをul の一個上のdiv に指定します。 3.フロート クリア フィックス (Float Clear Fix) Floatを指定してコンテンツの位置を調整することは、日常茶飯事です。それによって、したのコンテンツがあがってくることを防ぐ為の、以下のコードは色んなブログで紹介されていますので、スニペット(よく使うコード)として保存しておいてください。 4.メニューの項目をコーディング まず、a は、インラインタグなので、display blockを指定して、height と width を指定できる様にします。float leftを指定して、 a をすべて横に並べて、text-indent を -9999px に指定することで、テキストを見えなくします。次にすべての a に2個目のメニューの画像を指定して、そのあとに一個ずつBackground positionを利用して、位置を調整します。 li:nth-child はCSS3ですので、すべてのブラウザーに対応していません。とは言っても、今現在で対応してないメジャーブラザーはIEだけすけど。。(IE消えてくれないかな。。) IEに対応させる場合は、各 li にIDでも指定してください。 5.Logoの部分のコーディング これは、メニューの部分の繰り返しなので、特に説明する必要ないかと思いますが、何か分からないことがあればコメントを残してください。今回は、CSS3を使わずにやったので、メニューをIEに対応させたい人は、参考にしてください。 6.最終的なコード 最終的なコード以下とデモへのリンクです。 デモ style.css reset.css

詳細を読む »