●コンテンツをセンタリングするテクニック
作例では、ページのコンテンツ全体をセンタリングしている。ほとんどのサイトが、このように全体がセンタリングされるか、左寄せになっている。もしかしたら、右寄せにしたいという需要もあるかもしれない。このように、「コンテンツをどの方向に寄せるか」は、次のようなブロックレベル要素の左寄せ、センタリング、右寄せのしくみに基づいて決定される。
ブロックレベル要素の左寄せ
幅を指定して、「margin-right:auto;」を指定する
ブロックレベル要素のセンタリング
幅を指定して、「margin-right:auto; margin-left:auto;」を指定する
ブロックレベル要素の右寄せ
幅を指定して、「margin-left:auto;」を指定する
このように、寄せたい方向とは逆のマージンに「auto」と指定するのがポイント。センタリングについては、左右両方に「auto」と指定することで、結果的に中央に寄る事になる。
#header {
width: 424px;
margin: 0 auto; /* ボックスのセンタリング */
}
#container {
width: 376px;
margin: 0 auto; /* ボックスのセンタリング */
padding: 24px;
}
#footer {
width: 376px;
margin: 0 auto; /* ボックスのセンタリング */
padding: 0 24px 24px;
}
2カラムレイアウト
左にメイン部分、右にサイド部分を置く2カラムレイアウト。ブログ、コーポレートサイト、ニュースサイトなどあらゆるジャンルで広く利用されているレイアウト。基本的な段組みの方法と、positionプロパティの使いどころを押さえる。
●div要素の構造
div#headeer、div#container、div#footer
1カラムレイアウトと同じように、3つの主要部分による構成。1カラムレイアウトでは書籍にたとえて説明したが、Webサイトの構造にあわせて説明すると次のようになる。
div#header(ヘッダー)
コーポレートサイトロゴやサイトロゴ、キャッチコピーなど、アイデンティティを確立するうえで、重要なコンテンツなど、グローバルナビゲーションやサイト内検索など、Webサイトの機能性や利便性を支えるためのコンテンツを含めるのが一般的。
container(コンテナ)
メイン部分とサイド部分で構成されるのが一般的。
div#footer(フッター)
著作権表記や控えめなコーポレートロゴなどの運営情報や、個人情報保護方針や特定商取引法もとづく表記など、補足的な意味合いの強いコンテンツへのナビゲーションを含めるのが一般的。
div#global-nav、div#search、div#utility-nav
サイト内の回遊性を高めるための主な機能軍。デザインカンプでは上から「div#utility-nav」「div#search」「div#global-nav」という順番になっているが、グローバルナビゲーションはもっとも重要な目次であるため、補完的な意味合いの「サイト内検索」や「お問い合わせ・サイトマップ」よりも先に記述している。
このように、見た目の順序とXHTMLのソースコードの記述順序はいったん切り離して考え、「どのコンテンツが重要なのか、先に記述すべきか」を判断しながらXHTMLを制作することが大切。
div#section-lv1#primary-contents、div#secondary-contents
「div.structure#container」内で各カラムとなるdiv要素。本文を「#primary-contents」、サイドバーを「#secondary-contents」としている。
div.section-lv2、div.section-lv2#classroom
各カラム内での見出しごとの情報の固まり。1カラムレイアウトでも解説したように、「h2要素が出現する情報ブロックであること」を示すために、「.section-lv2」というクラスを指定している。また「div#primary-contents」につけている「.section-lv1」というクラスだが、第二階層以下のページ(カテゴリートップや個別ページ)では、h1要素が登場することを想定して指定している。
「div#secondary-contents」のなかで最初に出現するdiv要素には、「.section-lv2」というクラスと同時に「#classroom」というIDを指定しています。
●見出し要素の構造
1カラムレイアウトの見出し構造と同じ考え方でマークアップ。デザインカンプにはない、グローバルナビゲーションやフッターの見出しなども指定しておく。
●センターリングの一括適用
1カラムレイアウトでは、全体のセンタリングのために、「div#header」「div#container」
「div#footer」それぞれにスタイルの指定。(widthプロパティで幅を指定し、左右マージン「auto」でセンタリング)。
この作例でも同じように実現できますが、今回は「.structure」という共通のクラス指定しているので、センタリングのためのスタイルを一括適用できる。
.structure {
width: 740px;
margin: 0 auto; /* ボックスのセンタリング */
padding: 0 29px;
border-left: 1px solid #999;
background-color: #fff;
}
このように、必要に応じて汎用的なクラスでスタイルを管理することで、作業を効率化することができる。
●positionプロパティを利用した自由度の高いコンテンツ配置
「div#header」に含まれる「div#global-nav」「div#search」「div#utility-nav」は、positionプロパティで配置する。デザインカンプでの見た目を実現するために、「div#global-nav」と「div#utility-nav」の位置を逆転させなければならない。まずこれらを移動させるための基点を「div#header」にするために、ボックスのサイズと「position:relative;」を指定。
#header {
position: relative;
height: 390px;
background-image: url(../img/header/bgo1.jpg);
background-position: center bottom;
background-repeat: no-repeat;
}
つづいて、検索ボックスやユーティリティ、グローバルナビゲーションを移動される。それぞれに「position: absolute;」を指定し、あとは「div#header」の上下左右からの距離をtop、right、bottom、leftプロパティのいずれかで指定すれば、容易に配置できる。
#global-nav ul {
position: absolute;
top: 136px;
left: 53px;
}
#search {
position: absolute;
top: 84px;
left: 536px;
width: 228px;
}
#search li {
position: absolute;
top: 17px;
left: 182px;
}
#utility-nav {
position: absolute;
top: 24px;
right: 30px;
}
このようにpositionプロパティを利用することで自由度の高い。(XHTMLの構造にとらわれない)は位置が可能になる。
今日はここまで。
2011年10月28日金曜日
2011年10月22日土曜日
三十六日目!(~見出し構造、不可視化~)
続きいきます。
●見出し要素の構造
div#header
表紙や目次に相当する「div#header」部分では、まずロゴである「<img alt="BlueDrop-ns´s desing"・・・/>」をh1要素でマークアップ。デザインカンプにはないが、「div#global-nav」には「当サイトの主要コンテンツ」というh2要素を用意。
人が見ればグローバルナビゲーションであることがわかる情報でも、音声ブラウザなどの読み上げソフトを使用している人にも「どのような情報のかたまりなのか」がわかるように、このように見出しをつけておくとよい。通常のブラウザでは見えないように不可視化している。
div#new-entry、div#previous-enty
「div#new-enty」では、エントリー名をh2要素としている。「div#previous-entry」では「Previous entries・・・」をh2要素とし、エントリー名をそれぞれは一段階見出しレベルが低いh3要素でマークアップ。
すべてのエントリー名を同じ見出しレベルにしたいのであれば、「div#new-entry」に「最新のエントリー」というh2要素を追加してもよい。
div#other-contents
「About me・・・」「Archives・・・」「Category・・・」それぞれをh2要素としている。また「div#other-contents」の直下に「その他のコンテンツ」というh2要素を追加し、「About me・・・」「Archives・・・」「Category・・・」をそれぞれh3要素としてもよい。
ここでは「div#other-contents」より前までは、各種エントリーに関する内容であるのに対し、一転して「About me・・・」「Archives・・・」「Category・・・」といった情報が出現しますので、「その他コンテンツ」と見出しを追加するまでもなく、それまでの情報と質が変化しているのが明白と判断し、それぞれをh2要素でマークアップしている。
div#footer
書籍でいう著者・出版社情報などの奥付部分に相当する「div#footer」。デザインカンプでは著作権表記のみとなってるが、ここでは「当サイトの共通情報」というh2要素を追加し、何の情報であるかをしっかりと示している。
●内容を不可視化するテクニック
作例の中には、XHTMLに記述されているものの、ブラウザ上に表示されない内容がいくつかある。
具体的には次の内容。
・ 「div#global-nav」のh2要素
・ 「div.entry-footer dl dt」の一部
・ 「div#step-nav」のh3要素
・ 「div#footer」のh2要素
文書構造として必要な情報ではあるものの、人間の目で見た場合には、表示されていなくても直感的にわかるだろうという情報。CSS側で不可視化する指定をしなければ、当然画面にでてきてしまう。
以下、要素を不可視化するテクニック。状況に応じて使い分けるのが大切。
●一般的な不可視化テクニック
コンテント領域の大きさを「0」にして、はみ出した内容は消してしまうという一般的な方法。手順としては、まずwidth/heightプロパティの値を「0」とする。すると、内容がコンテント領域からはみ出してしまう。コンテント領域からはみ出した部分はoverflowプロパティで制御できるので、「hidden」という値を指定する。
#global-nav h2,
#step-nav h3,
#footer h2 {
width: 0;
height: 0;
overflow: hidden;
}
●positionプロパティを利用した不可視化テクニック
作例では「div.entry-footer dl dt」の一部を不可視化している。ここでは上記の方法ではなくpositionプロパティを利用して不可視化している。理由は、dt/dd要素に「display:inline;」を指定しているため。
インライン要素へのwidth/heightプロパティの値は無効になってしまうため、内容をはみ出させて「overflow:hidden;」で非表示にすることができない。
このような場合、positionプロパティを利用して不可視化する。「position:absolute;visibility:hidden;」と指定する。「visibility:hidden」でボックスを不可視化する。この時点で、ボックスが完全にいなくなったわけではなく、ボックスの範囲は確保される。なお、「position:absolute;」を指定された要素は、他の要素にとっては存在しないものとして配置が行われる(ボックスの範囲がなくなったように見せることができる)。
ただし、「visibility:hidden;」を指定された要素は、一部の音声ブラウザで読み上げられないという問題がある。したがって「visibility:hidden;」の代わりに「left:-9999px;」と指定し、画面外へ追いやる方法(オフレフト)が使われる。
.entry-footer dt.time,
.entry-footer dt.tag {
position: absolute;
left: -9999px;
}
●displayプロパティを利用した不可視化テクニック
不可視化テクニックには上記二つ以外にもある。もっとも簡単なのは「display:none;」を指定すること。難しいことを考えずに、実にあっさりと要素を消すことができる。しかし、一部の音声読み上げブラウザで読み上げられないという問題があるので、「display:none;」は利用しないのが一般的。
このように、一部の要素を不可視化するというひとつの目的を達成するうえでも、見た目だけを追及するのではなく、アクセシビリティなどの観点から考えて、よりよい判断ができるように努めるのが大切。
●定義リストの使いどころ
見た目ではわからないが、「div.entry-footer」のなかで「更新時間」「タグ」「コメント」「トラックバック」には定義リスト(dl要素)を利用し、ていないなマークアップを心がけている。「更新時間」「タグ」は、人が見れば情報の意味がわかるはずだが、文章構造を意識してそれぞれにdt要素を指定している。
このように、「○○は○○」(たとえば「更新時間は11:32」など)という関係が成立するものがいくつか並んでいる場合には、定義リストが利用できる。
今日はここまで。
●見出し要素の構造
div#header
表紙や目次に相当する「div#header」部分では、まずロゴである「<img alt="BlueDrop-ns´s desing"・・・/>」をh1要素でマークアップ。デザインカンプにはないが、「div#global-nav」には「当サイトの主要コンテンツ」というh2要素を用意。
人が見ればグローバルナビゲーションであることがわかる情報でも、音声ブラウザなどの読み上げソフトを使用している人にも「どのような情報のかたまりなのか」がわかるように、このように見出しをつけておくとよい。通常のブラウザでは見えないように不可視化している。
div#new-entry、div#previous-enty
「div#new-enty」では、エントリー名をh2要素としている。「div#previous-entry」では「Previous entries・・・」をh2要素とし、エントリー名をそれぞれは一段階見出しレベルが低いh3要素でマークアップ。
すべてのエントリー名を同じ見出しレベルにしたいのであれば、「div#new-entry」に「最新のエントリー」というh2要素を追加してもよい。
div#other-contents
「About me・・・」「Archives・・・」「Category・・・」それぞれをh2要素としている。また「div#other-contents」の直下に「その他のコンテンツ」というh2要素を追加し、「About me・・・」「Archives・・・」「Category・・・」をそれぞれh3要素としてもよい。
ここでは「div#other-contents」より前までは、各種エントリーに関する内容であるのに対し、一転して「About me・・・」「Archives・・・」「Category・・・」といった情報が出現しますので、「その他コンテンツ」と見出しを追加するまでもなく、それまでの情報と質が変化しているのが明白と判断し、それぞれをh2要素でマークアップしている。
div#footer
書籍でいう著者・出版社情報などの奥付部分に相当する「div#footer」。デザインカンプでは著作権表記のみとなってるが、ここでは「当サイトの共通情報」というh2要素を追加し、何の情報であるかをしっかりと示している。
●内容を不可視化するテクニック
作例の中には、XHTMLに記述されているものの、ブラウザ上に表示されない内容がいくつかある。
具体的には次の内容。
・ 「div#global-nav」のh2要素
・ 「div.entry-footer dl dt」の一部
・ 「div#step-nav」のh3要素
・ 「div#footer」のh2要素
文書構造として必要な情報ではあるものの、人間の目で見た場合には、表示されていなくても直感的にわかるだろうという情報。CSS側で不可視化する指定をしなければ、当然画面にでてきてしまう。
以下、要素を不可視化するテクニック。状況に応じて使い分けるのが大切。
●一般的な不可視化テクニック
コンテント領域の大きさを「0」にして、はみ出した内容は消してしまうという一般的な方法。手順としては、まずwidth/heightプロパティの値を「0」とする。すると、内容がコンテント領域からはみ出してしまう。コンテント領域からはみ出した部分はoverflowプロパティで制御できるので、「hidden」という値を指定する。
#global-nav h2,
#step-nav h3,
#footer h2 {
width: 0;
height: 0;
overflow: hidden;
}
![]() |
不可視化していない状態 |
●positionプロパティを利用した不可視化テクニック
作例では「div.entry-footer dl dt」の一部を不可視化している。ここでは上記の方法ではなくpositionプロパティを利用して不可視化している。理由は、dt/dd要素に「display:inline;」を指定しているため。
インライン要素へのwidth/heightプロパティの値は無効になってしまうため、内容をはみ出させて「overflow:hidden;」で非表示にすることができない。
このような場合、positionプロパティを利用して不可視化する。「position:absolute;visibility:hidden;」と指定する。「visibility:hidden」でボックスを不可視化する。この時点で、ボックスが完全にいなくなったわけではなく、ボックスの範囲は確保される。なお、「position:absolute;」を指定された要素は、他の要素にとっては存在しないものとして配置が行われる(ボックスの範囲がなくなったように見せることができる)。
ただし、「visibility:hidden;」を指定された要素は、一部の音声ブラウザで読み上げられないという問題がある。したがって「visibility:hidden;」の代わりに「left:-9999px;」と指定し、画面外へ追いやる方法(オフレフト)が使われる。
.entry-footer dt.time,
.entry-footer dt.tag {
position: absolute;
left: -9999px;
}
●displayプロパティを利用した不可視化テクニック
不可視化テクニックには上記二つ以外にもある。もっとも簡単なのは「display:none;」を指定すること。難しいことを考えずに、実にあっさりと要素を消すことができる。しかし、一部の音声読み上げブラウザで読み上げられないという問題があるので、「display:none;」は利用しないのが一般的。
このように、一部の要素を不可視化するというひとつの目的を達成するうえでも、見た目だけを追及するのではなく、アクセシビリティなどの観点から考えて、よりよい判断ができるように努めるのが大切。
●定義リストの使いどころ
見た目ではわからないが、「div.entry-footer」のなかで「更新時間」「タグ」「コメント」「トラックバック」には定義リスト(dl要素)を利用し、ていないなマークアップを心がけている。「更新時間」「タグ」は、人が見れば情報の意味がわかるはずだが、文章構造を意識してそれぞれにdt要素を指定している。
このように、「○○は○○」(たとえば「更新時間は11:32」など)という関係が成立するものがいくつか並んでいる場合には、定義リストが利用できる。
今日はここまで。
2011年10月20日木曜日
三十五日目!(CSSレイアウト)
●レイアウトの種類
Webデザインで一般に利用されるレイアウトパターンにはさまざまな種類があり、カラム(段組)数の違いで考えてみると、1カラムレイアウト、2カラムレイアウト、3カラムレイアウトが代表的。情報量の多いニュース系サイトなどでは、4カラム以上のレイアウトも。
次にコンテンツの幅に注目。ブラウザのウィンドウサイズや文字サイズを変更しても一定の幅を保ったままのソリッド(固定幅)レイアウト、ブラウザのウィンドウサイズにあわせて幅が変わるリキッド(変動幅)レイアウト、文字サイズにあわせて幅や高さが変わるエラスティックレイアウトの3つに大別できす。
また、キャンペーンサイトやディザーサイトなどのプロモーション重視のサイトでは、ブラウザを一枚の紙に見立てたようなDTP色の強いフリーレイアウトを多く採用される。
●1カラムレイアウト
個人ブログを想定した1カラムレイアウト。複雑な段組のテクニックがない。基本となるdiv要素の構造を押さえ、コンテンツのセンタリング手法や、一部の要素の不可視化方法など、あらゆるレイアウトに必須となるテクニックを学ぶ。
●div要素の構造
div#header、div#container、div#footer
body要素の直下に置く3つのdiv要素。書籍でいえば、次のように例えることができる。
・div#header(ヘッダー) ・・・・・・・・・・・ 表紙や目次に相当する部分
・div#container(コンテナ) ・・・・・・・・・ 各章の本文部分
・div#footer(フッター) ・・・・・・・・・・・・ 著作権情報など奥付部分
ID名はサイトごとに異なる場合もあるが、シンプルなWebサイトにもっとも多いパターン。
div#global-nav
サイト内の目次に相当するグローバルナビゲーション。div#headerのなかに、ロゴh1要素とともに含めている。「home」「bbs」「web」「design」「link」などのボタン画像でナビゲーションが構成される。空に雲が浮かんでいるキービジュアルは、情報ではなく、装飾の画像なので、img要素で埋め込まず、CSSでdiv#global-navの背景に設定し、表示させている。
div.article#new-entry
最新記事の表示エリア。「最新記事」であることを示す「id="new-entry"」と「記事」であることを示す「class="articles"」を指定している。トップページだけを見ればIDだけでもよいが、アーカイブページなど他のページで記事を複数表示させる場合がある。またサイト全体で記事には一定のスタイルを指定したい場合もあるので、クラスを指定することでメンテナンス性を高めている。
最新記事だけに必要なスタイルはIDセレクタで、サイト全体の記事すべてに必要なスタイルはクラスセレクタで適用することで、効率的なスタイル管理を行うことができる。
div.entry-header、div.entry-body、div.entry-footer
一般的に、ブログ記事は次の3つのエリアに分けられる。
・ エントリーのタイトルや日時など
・ エントリー本文
・ エントリーに対するコメントやトラックバックなど
さらに、記事が該当するカテゴリーや、付与したタグ(キーワード)などの情報も、上記の3つのどこかに入ってくる。シンプルな見た目ゆえに、ここまでdiv要素で構造化しなくてよい場合もある。
このサンプルでは「div.entry-footer」に、padding、background、font-size、text-alignプロパティを指定しているが、この指定を「div.entry-footer」ではなく、直接dl要素に対して行うことも可能。しかし、div要素で丁寧に構造化しておくことで、後々のデザインリニューアル時に、より複雑なデザインをXHTMLを実現することができる、というメリットがある。
div#previous-entry、div.article、div.step-nav
最近の記事4件と、その他の記事に移動するためのステップナビゲーション。「div.article」は「div.article#new-entry」でも出現しているが、「#previoous-entry.article{・・・}」と子孫セレクタを利用して、限定的なスタイルを適用している。
div#other-contents、div.section-lv2#about、div.section-lv2#archives、
div.section-lv2#category
記事内容とは直接関係はないが、各カテゴリーへのリンクなど、ブログとしては必要なコンテンツ群。青の背景色に白抜きの文字というスタイルは「div#about」「div#archives」「div#category」の3箇所に指定しても実現できるが、div要素それぞれに「class="section-lv2"」を指定して、クラスセレクタで一括管理している。ちなみに「class="section-lv2"」というクラス名は、「見出しレベル2(h2要素)が出現する情報ブロックです」という意味合いで指定している。
div#footer
サイトの著作権表記のエリア。内容をp要素でマークアップしている。「div.entry-footer」の部分と同じように、デザインを実現するためだけであればp要素のみでも可能だが、構造を明確にするために「div#footer」でマークアップしている。
今日はここまで。
Webデザインで一般に利用されるレイアウトパターンにはさまざまな種類があり、カラム(段組)数の違いで考えてみると、1カラムレイアウト、2カラムレイアウト、3カラムレイアウトが代表的。情報量の多いニュース系サイトなどでは、4カラム以上のレイアウトも。
次にコンテンツの幅に注目。ブラウザのウィンドウサイズや文字サイズを変更しても一定の幅を保ったままのソリッド(固定幅)レイアウト、ブラウザのウィンドウサイズにあわせて幅が変わるリキッド(変動幅)レイアウト、文字サイズにあわせて幅や高さが変わるエラスティックレイアウトの3つに大別できす。
また、キャンペーンサイトやディザーサイトなどのプロモーション重視のサイトでは、ブラウザを一枚の紙に見立てたようなDTP色の強いフリーレイアウトを多く採用される。
●1カラムレイアウト
個人ブログを想定した1カラムレイアウト。複雑な段組のテクニックがない。基本となるdiv要素の構造を押さえ、コンテンツのセンタリング手法や、一部の要素の不可視化方法など、あらゆるレイアウトに必須となるテクニックを学ぶ。
●div要素の構造
div#header、div#container、div#footer
body要素の直下に置く3つのdiv要素。書籍でいえば、次のように例えることができる。
・div#header(ヘッダー) ・・・・・・・・・・・ 表紙や目次に相当する部分
・div#container(コンテナ) ・・・・・・・・・ 各章の本文部分
・div#footer(フッター) ・・・・・・・・・・・・ 著作権情報など奥付部分
ID名はサイトごとに異なる場合もあるが、シンプルなWebサイトにもっとも多いパターン。
div#global-nav
サイト内の目次に相当するグローバルナビゲーション。div#headerのなかに、ロゴh1要素とともに含めている。「home」「bbs」「web」「design」「link」などのボタン画像でナビゲーションが構成される。空に雲が浮かんでいるキービジュアルは、情報ではなく、装飾の画像なので、img要素で埋め込まず、CSSでdiv#global-navの背景に設定し、表示させている。
div.article#new-entry
最新記事の表示エリア。「最新記事」であることを示す「id="new-entry"」と「記事」であることを示す「class="articles"」を指定している。トップページだけを見ればIDだけでもよいが、アーカイブページなど他のページで記事を複数表示させる場合がある。またサイト全体で記事には一定のスタイルを指定したい場合もあるので、クラスを指定することでメンテナンス性を高めている。
最新記事だけに必要なスタイルはIDセレクタで、サイト全体の記事すべてに必要なスタイルはクラスセレクタで適用することで、効率的なスタイル管理を行うことができる。
div.entry-header、div.entry-body、div.entry-footer
一般的に、ブログ記事は次の3つのエリアに分けられる。
・ エントリーのタイトルや日時など
・ エントリー本文
・ エントリーに対するコメントやトラックバックなど
さらに、記事が該当するカテゴリーや、付与したタグ(キーワード)などの情報も、上記の3つのどこかに入ってくる。シンプルな見た目ゆえに、ここまでdiv要素で構造化しなくてよい場合もある。
このサンプルでは「div.entry-footer」に、padding、background、font-size、text-alignプロパティを指定しているが、この指定を「div.entry-footer」ではなく、直接dl要素に対して行うことも可能。しかし、div要素で丁寧に構造化しておくことで、後々のデザインリニューアル時に、より複雑なデザインをXHTMLを実現することができる、というメリットがある。
div#previous-entry、div.article、div.step-nav
最近の記事4件と、その他の記事に移動するためのステップナビゲーション。「div.article」は「div.article#new-entry」でも出現しているが、「#previoous-entry.article{・・・}」と子孫セレクタを利用して、限定的なスタイルを適用している。
div#other-contents、div.section-lv2#about、div.section-lv2#archives、
div.section-lv2#category
記事内容とは直接関係はないが、各カテゴリーへのリンクなど、ブログとしては必要なコンテンツ群。青の背景色に白抜きの文字というスタイルは「div#about」「div#archives」「div#category」の3箇所に指定しても実現できるが、div要素それぞれに「class="section-lv2"」を指定して、クラスセレクタで一括管理している。ちなみに「class="section-lv2"」というクラス名は、「見出しレベル2(h2要素)が出現する情報ブロックです」という意味合いで指定している。
div#footer
サイトの著作権表記のエリア。内容をp要素でマークアップしている。「div.entry-footer」の部分と同じように、デザインを実現するためだけであればp要素のみでも可能だが、構造を明確にするために「div#footer」でマークアップしている。
今日はここまで。
2011年10月18日火曜日
三十四日目!(~フォームのスタイリング)
フォームのスタイリングの続きをやっていきます。
●ブログのコメント投稿フォームのリッチなスタイリング
テキストフィールドやボタン類であれば、背景画像を使ってデザインを忠実に再現できる。XHTMLの制作上注意しなければならない点は、お問い合わせフォームと同様。
XHTML
<h2><img src="comment.png" alt="Please Your Comments!" /></h2>
<p>この記事に関係の無い内容のコメントは削除させていただく場合があります。また、コメントに対するお返事は必ず行われるとは限りませんのでご了承ください。</p>
<form id="comments_form" method="post" action="comment.cgi">
<fieldset>
<legend>コメント投稿フォーム:</legend>
<dl>
<dt><label for="comment-author">お名前
<span class="note">(必須) </span></label></dt>
<dd><input type="text" id=comment-author" class="text" name="author"
size="30" value="" tabindex="1" /></dd>
<dt><label for="comment-email">E-mail
<span class="note">(必須ですが、公開されません) </span></label></dt>
<dd><input type="text" id="comment-email" class="text" name="email"
size="30" value="" tabindex="2" /></dd>
</dl>
・・・・中略・・・・
<div class="submit">
<input type="button" value="確認" name="preview" id="comment-preview"
class="submit" tabindex="6" />
<input type="submit" value="投稿" name="post" id="comment-post"
class="submit" tabindex="7" />
</div>
</fieldset>
</form>
フォームパーツの線をなくし、代わりに背景画像を指定する方法でスタイリングする。ただし、この方法ではCSSオン・画像表示オフのときフォームパーツがどこにあるのかわからなくなってしまう。この問題を最小限にとどめるために、親要素の背景色との差が認識でき、文字色がきちんと判別できる背景色をあわせて指定しておくか、画像のデザイン自体は枠線を含まないものにし、CSSでボーダーを指定するという解決策もある。
CSS
legend {
display: none; /* マークアップ的に必要でも視覚的には不要となるので非表示に */
}
input.text {
border: none; /* テキストボックスの線を消す */
color: #336581;
background: transparent url(textbox.png> no-repeat left top; /* テキストボックス用の背景画像を 指定 */
}
textarea {
border: none; /* テキストエリアの線を消す */
background: transparent url(textarea.png) no-repeat left top; /* テキストエリア用の背景画像を指定 */
}
input.submit {
padding: 4px 8px 0 8px;
height: 19px;
color: #fff;
background: transparent url(button.png) no-repeat left top; /* 送信ボタン用の背景画像を指定 */
}
●ブログのコメント投稿フォームのリッチなスタイリング
テキストフィールドやボタン類であれば、背景画像を使ってデザインを忠実に再現できる。XHTMLの制作上注意しなければならない点は、お問い合わせフォームと同様。
XHTML
<h2><img src="comment.png" alt="Please Your Comments!" /></h2>
<p>この記事に関係の無い内容のコメントは削除させていただく場合があります。また、コメントに対するお返事は必ず行われるとは限りませんのでご了承ください。</p>
<form id="comments_form" method="post" action="comment.cgi">
<fieldset>
<legend>コメント投稿フォーム:</legend>
<dl>
<dt><label for="comment-author">お名前
<span class="note">(必須) </span></label></dt>
<dd><input type="text" id=comment-author" class="text" name="author"
size="30" value="" tabindex="1" /></dd>
<dt><label for="comment-email">E-mail
<span class="note">(必須ですが、公開されません) </span></label></dt>
<dd><input type="text" id="comment-email" class="text" name="email"
size="30" value="" tabindex="2" /></dd>
</dl>
・・・・中略・・・・
<div class="submit">
<input type="button" value="確認" name="preview" id="comment-preview"
class="submit" tabindex="6" />
<input type="submit" value="投稿" name="post" id="comment-post"
class="submit" tabindex="7" />
</div>
</fieldset>
</form>
フォームパーツの線をなくし、代わりに背景画像を指定する方法でスタイリングする。ただし、この方法ではCSSオン・画像表示オフのときフォームパーツがどこにあるのかわからなくなってしまう。この問題を最小限にとどめるために、親要素の背景色との差が認識でき、文字色がきちんと判別できる背景色をあわせて指定しておくか、画像のデザイン自体は枠線を含まないものにし、CSSでボーダーを指定するという解決策もある。
CSS
legend {
display: none; /* マークアップ的に必要でも視覚的には不要となるので非表示に */
}
input.text {
border: none; /* テキストボックスの線を消す */
color: #336581;
background: transparent url(textbox.png> no-repeat left top; /* テキストボックス用の背景画像を 指定 */
}
textarea {
border: none; /* テキストエリアの線を消す */
background: transparent url(textarea.png) no-repeat left top; /* テキストエリア用の背景画像を指定 */
}
input.submit {
padding: 4px 8px 0 8px;
height: 19px;
color: #fff;
background: transparent url(button.png) no-repeat left top; /* 送信ボタン用の背景画像を指定 */
}
2011年10月17日月曜日
三十三日目!(フォームのスタイリング)
フォームのスタイリング
●フォームはユーザーが能動的に動く場所なので、気の利いたデザインになっているとサイト全体の印象アップにつながる。一方、項目数が多く、見た目が整理されていないフォームは逆に信頼感を大幅に低下させる。使いやすさはもちろんのこと、ユーザーに心地よく感じてもらえるインターフェイスを目指す。
フォームパーツの外観は、OSやブラウザの種類に依存。CSSを使ってもコントロールできるところとできないところがある。基本的には、フォームパーツはOSやブラウザが提供するユーザーインターフェースのデフォルトをそのまま利用し、幅や高さを調節する程度にするのが現実的。
●お問い合わせフォームのシンプルなスタイリング
XHTML
<h1>お問い合わせフォーム</h1>
<form method="post" action="contact.cgi">
<p>入力が完了したら、「送信する」ボタンを押してください。<span class="required"></span>
印は必須事項です。</p>
<fieldset><!-- 一つ目のフィールド -->
<legend>お客様の情報</legend>
<table>
<tr>
<th><label for="name">お名前<span class="required"></span></label></th>
<td><input type="text" id="name" class="text" tabindex="1" /></td>
</tr>
・・・・中略・・・・
<tr>
<th><label fot="tel">電話番号</label></th>
<td>
<input type="text" id="tel" class="text" tabindex="6" />
</td>
</tr>
</table>
</fieldset>
<fieldset><!-- 二つ目のフィールド -->
<legend>お問い合わせ内容<span class="required"></span></legend>
<textarea id="comment" rows="7" cols="40" tabindex="6" />
</fieldset>
<div class="submit"><!-- 送信ボタン -->
<input type="submit" class="submit" value="送信する" tabindex="8" />
</div>
</form>
※tabindex
キーボードのTabキーを使ってリンクやフォームパーツを選択することがあるが、その選択(フォーカス移動)の順番を指定するために、tabindex属性が利用できる。accesskey属性(ショートカットキーの指定)とあわせて、リンクやフォームのユーザビリティ向上のために利用される。
ただし、tabindex属性によって選択順がユーザーの意思に反してしまったり、accesskey属性で指定した値がブラウザのショートカットキーとバッティングし、有効に機能しないことで混乱が生じる場合もあるため、これらの属性の利用には注意が必要。
内容をfieldset要素で「お客様の情報」と「お問い合わせ内容」のふたつにグループ化する。CSSが適用されなくてもフォームの構造がわかりやすいようなマークアップを心がけるようにする。
このサンプルでは、フォームの内容はtable要素でマークアップしている。ユーザビリティの高いフォームにするため、それぞれのフォームパーツに対応するテキストをlabel要素でマークアップし、関連付けしておく。
CSS
/* フォームのスタイル */
form {
padding: 15px 15px 5px 15px;
border: 2px solid #c8eca6;
background: #e3f7bc url(bg.png) repeat-x top left; /* 背景用グラデーション画像を横方向にリ ピート */
}
fieldset {
margin: 0 0 20px 0;
padding: 0;
border: none; /* デフォルトで線が引かれるため非表示に */
font-size: 90%;
}
legend {
margin: 0;
padding: 0 0 10px 0;
font-weight: bold;
}
* html legend {
margin-left: -6px; /* Win IE6 でlegend要素が右によってしまうのを修正 */
}
*:first-chid+html legend {
margin-left: -6px; /* Win IE7 でlegend要素が右によってしまうのを修正 */
}
input.text,
textarea {
padding: 0.3em;
border: 1px solid #ccc;
width: 270px;
color: #666;
font-size: 100%;
}
textarea {
width: 420px;
}
/* フォームパーツ選択時のスタイル */
input.text:focus,
textarea:focus {
color: #000;
background: #fff8ee;
}
div.submit {
padding: 0.8em 0;
width: 500px;
}
input.submit {
padding: 0.3em 1em 0.3em 1.1em;
color: #fff;
background: #54af17;
letter-spacing: 0.1em;
font-size: 100%;
cursor: pointer; /* ボタンが押せることを認識しやすいように、ポインタ型カーソルを指定 */
}
input要素で指定できるtype属性の種類はテキストフィールド(text)、送信ボタン(submit)、リセットボタン(reset)、チェックボックス(checkbox)、ラジオボタン(radio)、汎用ボタン(button)、画像ボタン(image)、ファイル参照コントロール(file)、隠しフィールド(hidden)の9種類。
同じinput要素でありながら、type属性だけでそれぞれ機能や外観が大きく異なるため、CSSでスタイリングする際にセレクタ「input」とだけ指定すると、すべてのinput要素に同じスタイルが適用されてしまうことに注意。
種類ごとに違うスタイルを適用したい場合、属性セレクタを使って指定するのが理想的だが、IE6が対応していないため、現実的にはclass属性などを併用して指定。
フォームパーツに入力中であることがひと目でわかるように、:focus擬似クラスで通常時とは別の文字色と背景色を指定。通常時は濃いめのグレーの文字に白い背景となっているところを、入力中だけ文字色が黒、背景色が薄いクリーム色になるようにしている。コントラストがはっきりとして見やすいように、また入力の妨げにならない色を指定する。
なお、:focus擬似クラスはIE6/7がサポートしていないので、JavaScriptを併用するとベター。
今日はここまで。
●フォームはユーザーが能動的に動く場所なので、気の利いたデザインになっているとサイト全体の印象アップにつながる。一方、項目数が多く、見た目が整理されていないフォームは逆に信頼感を大幅に低下させる。使いやすさはもちろんのこと、ユーザーに心地よく感じてもらえるインターフェイスを目指す。
フォームパーツの外観は、OSやブラウザの種類に依存。CSSを使ってもコントロールできるところとできないところがある。基本的には、フォームパーツはOSやブラウザが提供するユーザーインターフェースのデフォルトをそのまま利用し、幅や高さを調節する程度にするのが現実的。
●お問い合わせフォームのシンプルなスタイリング
XHTML
<h1>お問い合わせフォーム</h1>
<form method="post" action="contact.cgi">
<p>入力が完了したら、「送信する」ボタンを押してください。<span class="required"></span>
印は必須事項です。</p>
<fieldset><!-- 一つ目のフィールド -->
<legend>お客様の情報</legend>
<table>
<tr>
<th><label for="name">お名前<span class="required"></span></label></th>
<td><input type="text" id="name" class="text" tabindex="1" /></td>
</tr>
・・・・中略・・・・
<tr>
<th><label fot="tel">電話番号</label></th>
<td>
<input type="text" id="tel" class="text" tabindex="6" />
</td>
</tr>
</table>
</fieldset>
<fieldset><!-- 二つ目のフィールド -->
<legend>お問い合わせ内容<span class="required"></span></legend>
<textarea id="comment" rows="7" cols="40" tabindex="6" />
</fieldset>
<div class="submit"><!-- 送信ボタン -->
<input type="submit" class="submit" value="送信する" tabindex="8" />
</div>
</form>
※tabindex
キーボードのTabキーを使ってリンクやフォームパーツを選択することがあるが、その選択(フォーカス移動)の順番を指定するために、tabindex属性が利用できる。accesskey属性(ショートカットキーの指定)とあわせて、リンクやフォームのユーザビリティ向上のために利用される。
ただし、tabindex属性によって選択順がユーザーの意思に反してしまったり、accesskey属性で指定した値がブラウザのショートカットキーとバッティングし、有効に機能しないことで混乱が生じる場合もあるため、これらの属性の利用には注意が必要。
内容をfieldset要素で「お客様の情報」と「お問い合わせ内容」のふたつにグループ化する。CSSが適用されなくてもフォームの構造がわかりやすいようなマークアップを心がけるようにする。
このサンプルでは、フォームの内容はtable要素でマークアップしている。ユーザビリティの高いフォームにするため、それぞれのフォームパーツに対応するテキストをlabel要素でマークアップし、関連付けしておく。
CSS
/* フォームのスタイル */
form {
padding: 15px 15px 5px 15px;
border: 2px solid #c8eca6;
background: #e3f7bc url(bg.png) repeat-x top left; /* 背景用グラデーション画像を横方向にリ ピート */
}
fieldset {
margin: 0 0 20px 0;
padding: 0;
border: none; /* デフォルトで線が引かれるため非表示に */
font-size: 90%;
}
legend {
margin: 0;
padding: 0 0 10px 0;
font-weight: bold;
}
* html legend {
margin-left: -6px; /* Win IE6 でlegend要素が右によってしまうのを修正 */
}
*:first-chid+html legend {
margin-left: -6px; /* Win IE7 でlegend要素が右によってしまうのを修正 */
}
input.text,
textarea {
padding: 0.3em;
border: 1px solid #ccc;
width: 270px;
color: #666;
font-size: 100%;
}
textarea {
width: 420px;
}
/* フォームパーツ選択時のスタイル */
input.text:focus,
textarea:focus {
color: #000;
background: #fff8ee;
}
div.submit {
padding: 0.8em 0;
width: 500px;
}
input.submit {
padding: 0.3em 1em 0.3em 1.1em;
color: #fff;
background: #54af17;
letter-spacing: 0.1em;
font-size: 100%;
cursor: pointer; /* ボタンが押せることを認識しやすいように、ポインタ型カーソルを指定 */
}
input要素で指定できるtype属性の種類はテキストフィールド(text)、送信ボタン(submit)、リセットボタン(reset)、チェックボックス(checkbox)、ラジオボタン(radio)、汎用ボタン(button)、画像ボタン(image)、ファイル参照コントロール(file)、隠しフィールド(hidden)の9種類。
同じinput要素でありながら、type属性だけでそれぞれ機能や外観が大きく異なるため、CSSでスタイリングする際にセレクタ「input」とだけ指定すると、すべてのinput要素に同じスタイルが適用されてしまうことに注意。
種類ごとに違うスタイルを適用したい場合、属性セレクタを使って指定するのが理想的だが、IE6が対応していないため、現実的にはclass属性などを併用して指定。
フォームパーツに入力中であることがひと目でわかるように、:focus擬似クラスで通常時とは別の文字色と背景色を指定。通常時は濃いめのグレーの文字に白い背景となっているところを、入力中だけ文字色が黒、背景色が薄いクリーム色になるようにしている。コントラストがはっきりとして見やすいように、また入力の妨げにならない色を指定する。
なお、:focus擬似クラスはIE6/7がサポートしていないので、JavaScriptを併用するとベター。
今日はここまで。
2011年10月15日土曜日
三十二日目!(テーブルのスタイリング)
XHTML+CSSの勉強ブログ更新はかなり久しぶりになりますが、続きやっていきます。
テーブルのスタイリング
table要素のスタイリングは、通常ボックスモデル以外にも、行や列のグループ化、セルの境界線など、テーブル特有のマークアップやスタイリングについて知っておく必要がある。
より魅力的なテーブルのスタイリング方法を解説。
●グラデーション背景と立体的に見せるテーブル
シンプルな役員一覧表をたたき台にして、グラデーション背景で立体的に見えるテーブルになるようにスタイリングする。
XHTMLでは構造に大きな特徴はないが、列グループを示す為のcolgroup要素、行グループを示すためのthead/tbody要素を利用し、項目名はth要素で、内容をtd要素でマークアップ。
HTML
<table summary="未来コーポレーション役員一覧">
<caption>役員一覧</caption>
<colgroup id="position"></colgroup>
<colgroup id="name"></colgroup>
<colgroup id="Introduce"></colgroup>
<thead>
<tr>
<th scope="col">役職 / 所属</th>
<th scope="col">氏名</th>
<th scope="col">簡単な自己紹介</th>
</tr>
</thead>
<tbody>
<tr>
<td>代表取締役</td>
<td>山田美子</td>
<td>32歳、主婦業と社長業の両立がんばっています。</td>
</tr>
・・・・・中略・・・・・
<tr>
<td>取締役</td>
<td>水野隆</td>
<td>CTO兼任です。</td>
</tr>
</tbody>
</table>
このデザインの場合、テーブルセルの境界線が重なり合わないため、CSSでborder-collapseプロパティを設定し、値を「separate」とする。
さらにtable要素にはテーブル全体の背景となるグラデーション画像を、th要素には濃いブルーのグラデーション画像を指定する。拡大画像をみると、セルボーダーの左側と上側に明るい色、右側と下側に濃い色を指定することで立体感を出している。
border-spacingプロパティはIE6/7では適用されない為、このデザインを忠実に実現すること優先する場合は、XHTMLのtable要素にcellspacing属性を「0」と指定することでこの問題が回避できる。
(<table cellspacing="0">)。ただし、cellspacing属性は見た目をコントロールする属性なので指定するのは望ましくないが、あくまでもIE6/7の問題を回避するためと考えて指定しておく。
CSS
table, th, td {
margin: 0;
padding: 0;
border-collapse: separate;
border: none;
border-spacing: 0; /* IE 6/7は未対応 */
}
table {
width: 500px;
border: 1px solid #eeeeee;
font-family: sans-serif;
background: #d9e7f6 url(bg-png) repeat-x bottom;
}
caption {
margin-bottom: 10px;
padding-left: 10px;
padding-bottom: 2px;
border-left: 6px solid #307bcf;
line-height: 1.8;
font-weight: bold;
text-align: left;
}
th {
padding: 0.8em 0.5em;
border-color: #629cdd #8db7e6 #629cdd #eeeeee; /* 立体的に見せる */
border-style: solid;
border-width: 1px;
color: #ffffff;
background: #629cdd url(th.png) repeat-x;
font-size: 100%;
text-align: left;
}
td {
padding: 0.8em 0.5em;
border-style: solid;
border-width: 1px;
border-color: #ffffff #81b0e4 #ffffff; /* 立体的に見せる */
font-size: 100%;
}
#position {
width: 100px;
}
#name {
width: 80px;
}
●列の一部をハイライト表示するテーブル
テーブルの列の一部をハイライト表示するには、列グループとしてマークアップしたcolgroup要素に対して背景を指定。
XHTMLで「プレミアム」の列に対して、<col span="1"id="premium"/>と指定し、列グループを示しておく。
ただし、これだけではプレミアム列の角丸を実現できない。あらかしめスライスした角丸上端用の画像を「プレミアム」というテキストが入ったth要素に背景として指定し、角丸下端用の画像を列の最後のセルの背景として指定。
XHTML
<table summary="料金プラン">
<caption>サービス料金プラン</caption>
<col span="1" id="tablehead" />
<col span="1" id="plana" />
<col span="1" id="planb" />
<col span="1" id="planc" />
<col span="1" id="premium" />
<thead>
<tr>
<th scope="col">項目</th><th scope="col">プランA</th><th scope="col">プラン</th>
<th scope="col>プランC</th><th scope="col" class="top">プレミアム</th>
</tr>
</thead>
<tbody>
<tr>
<th class="spec">容量</th>
<td>1GB</td><td>2GB</td><td>3GB</td><td>無制限</td>
</tr>
・・・・中略・・・・
<tr>
<th class="spec">サブドメイン</th>
<td>1つ</td><td>2つ</td><td>3つ</td><td class="bottom">無制限</td>
</tr>
</tbody>
</table>
CSSでは「#premium」に対してオレンジ色の背景を指定。
CSS
・・・・中略・・・・
#premium {
background: #f90; /* プレミアム列にオレンジ色の背景を指定 */
}
th.top {
width: 157px;
border: none;
background: url(top.png) no-repeat left top;
/* プレミアム列の上端に角丸上端背景画像 */
}
td.bottom {
background: url(bottom.png) no-repeat left bottom;
/* プレミアム列の下端に角丸下端背景画像 */
}
th.spec {
background: none;
border: none;
}
colを使ったりするテーブルはまだまだ理解ができにくい。。なにか実際に作ってみないとわかりにくいような気がする。
今日はここまで。
テーブルのスタイリング
table要素のスタイリングは、通常ボックスモデル以外にも、行や列のグループ化、セルの境界線など、テーブル特有のマークアップやスタイリングについて知っておく必要がある。
より魅力的なテーブルのスタイリング方法を解説。
●グラデーション背景と立体的に見せるテーブル
シンプルな役員一覧表をたたき台にして、グラデーション背景で立体的に見えるテーブルになるようにスタイリングする。
XHTMLでは構造に大きな特徴はないが、列グループを示す為のcolgroup要素、行グループを示すためのthead/tbody要素を利用し、項目名はth要素で、内容をtd要素でマークアップ。
HTML
<table summary="未来コーポレーション役員一覧">
<caption>役員一覧</caption>
<colgroup id="position"></colgroup>
<colgroup id="name"></colgroup>
<colgroup id="Introduce"></colgroup>
<thead>
<tr>
<th scope="col">役職 / 所属</th>
<th scope="col">氏名</th>
<th scope="col">簡単な自己紹介</th>
</tr>
</thead>
<tbody>
<tr>
<td>代表取締役</td>
<td>山田美子</td>
<td>32歳、主婦業と社長業の両立がんばっています。</td>
</tr>
・・・・・中略・・・・・
<tr>
<td>取締役</td>
<td>水野隆</td>
<td>CTO兼任です。</td>
</tr>
</tbody>
</table>
このデザインの場合、テーブルセルの境界線が重なり合わないため、CSSでborder-collapseプロパティを設定し、値を「separate」とする。
さらにtable要素にはテーブル全体の背景となるグラデーション画像を、th要素には濃いブルーのグラデーション画像を指定する。拡大画像をみると、セルボーダーの左側と上側に明るい色、右側と下側に濃い色を指定することで立体感を出している。
border-spacingプロパティはIE6/7では適用されない為、このデザインを忠実に実現すること優先する場合は、XHTMLのtable要素にcellspacing属性を「0」と指定することでこの問題が回避できる。
(<table cellspacing="0">)。ただし、cellspacing属性は見た目をコントロールする属性なので指定するのは望ましくないが、あくまでもIE6/7の問題を回避するためと考えて指定しておく。
CSS
table, th, td {
margin: 0;
padding: 0;
border-collapse: separate;
border: none;
border-spacing: 0; /* IE 6/7は未対応 */
}
table {
width: 500px;
border: 1px solid #eeeeee;
font-family: sans-serif;
background: #d9e7f6 url(bg-png) repeat-x bottom;
}
caption {
margin-bottom: 10px;
padding-left: 10px;
padding-bottom: 2px;
border-left: 6px solid #307bcf;
line-height: 1.8;
font-weight: bold;
text-align: left;
}
th {
padding: 0.8em 0.5em;
border-color: #629cdd #8db7e6 #629cdd #eeeeee; /* 立体的に見せる */
border-style: solid;
border-width: 1px;
color: #ffffff;
background: #629cdd url(th.png) repeat-x;
font-size: 100%;
text-align: left;
}
td {
padding: 0.8em 0.5em;
border-style: solid;
border-width: 1px;
border-color: #ffffff #81b0e4 #ffffff; /* 立体的に見せる */
font-size: 100%;
}
#position {
width: 100px;
}
#name {
width: 80px;
}
●列の一部をハイライト表示するテーブル
テーブルの列の一部をハイライト表示するには、列グループとしてマークアップしたcolgroup要素に対して背景を指定。
![]() |
プレミアムプランのみハイライトされた料金プラン |
ただし、これだけではプレミアム列の角丸を実現できない。あらかしめスライスした角丸上端用の画像を「プレミアム」というテキストが入ったth要素に背景として指定し、角丸下端用の画像を列の最後のセルの背景として指定。
XHTML
<table summary="料金プラン">
<caption>サービス料金プラン</caption>
<col span="1" id="tablehead" />
<col span="1" id="plana" />
<col span="1" id="planb" />
<col span="1" id="planc" />
<col span="1" id="premium" />
<thead>
<tr>
<th scope="col">項目</th><th scope="col">プランA</th><th scope="col">プラン</th>
<th scope="col>プランC</th><th scope="col" class="top">プレミアム</th>
</tr>
</thead>
<tbody>
<tr>
<th class="spec">容量</th>
<td>1GB</td><td>2GB</td><td>3GB</td><td>無制限</td>
</tr>
・・・・中略・・・・
<tr>
<th class="spec">サブドメイン</th>
<td>1つ</td><td>2つ</td><td>3つ</td><td class="bottom">無制限</td>
</tr>
</tbody>
</table>
CSSでは「#premium」に対してオレンジ色の背景を指定。
CSS
・・・・中略・・・・
#premium {
background: #f90; /* プレミアム列にオレンジ色の背景を指定 */
}
th.top {
width: 157px;
border: none;
background: url(top.png) no-repeat left top;
/* プレミアム列の上端に角丸上端背景画像 */
}
td.bottom {
background: url(bottom.png) no-repeat left bottom;
/* プレミアム列の下端に角丸下端背景画像 */
}
th.spec {
background: none;
border: none;
}
colを使ったりするテーブルはまだまだ理解ができにくい。。なにか実際に作ってみないとわかりにくいような気がする。
今日はここまで。
2011年10月10日月曜日
三十一日目!(番外編その2)
ブログ更新久しぶりです。
先週1週間は実際にクライアントさんから依頼を受けて作成しているHPのお手伝いをする機会を頂きまして、やっておりました。
そのHP自体は、ベースがかなり古くからあって更新やリニューアルを重ねているものだったので、このブログで勉強している「XHTML」や「CSS」とは少し違ったりもしたんですが、先週の実務作業のテーマとしては、
「Dreamweaver」「Fireworks」などのWeb作成ソフトになれよう!
という感じでした。
とはいえ、少し前のブログでも書いていたと思いますが、現在私が職場で使用しているPCはスペックも高くなく、上記の様な有料(結構高額)なソフトなど入っていませんので、htmlやcssを書くときは、テキストエディタで、画像はGinp2やペイントでやってました。
しかし、ほんとベタに「現代の技術はすごい!」とか思ったんですが、本社にWeb制作に欠かせないソフトが一通り揃った高性能なPCがあるのですが、それを離れた場所から遠隔で使用できるいう!ソフトはもちろん、性能もそのままなんですね。まったくびっくりです。
まずはDreamweaver、まだまだ使いこなせていないのですが、かなり便利だと思います。とにかく今までのテキストエディタのみで作成していくのが大変すぎだった。。というのもあるかもしれないですが、htmlソース、cssソース、実際のデザイン、ブラウザ表示などが簡単に確認できるので、それだけでもすごく便利でした。ソースなども途中まで入力したら、アシスト的に候補になりそうなものが、出てきたり、この間ブログで勉強していた「ロールオーバー」なんかも簡単に作成できたりするようです。
そしてFTPとか?(実はこのあたりまだちゃんと把握できていない・・)と繋がっているようで、既にUPされているHPからファイルを落としてきて、変更したり、追加したりして、またすぐにUPする作業が簡単にできました。
ただ思ったのが、最初からhtmlやcssのことを勉強するときにこのソフトを使わなくてよかったと思います。ある程度htmlやcssの知識を身につけてから使うソフトで、制作の効率や速度UPの手助けをしてくれるという感じ。「全くの初心者でもこれさえあればHP作成が簡単!」ではないとは思います。
Fireworksについてはこっちも全然使いこなせてないです。今回の作業ではサイズ変更と、画像の明るさなどの調節くらいしかやってないのでまだまだですね。
検索してみるとFireworksの使い方やコツなんかのブログはかなりたくさんあったので、そういうのを見ながら勉強していきたいと思います。
これでかなりWeb制作の環境は整ってきたので、ステップアップしていくために更に勉強を進めていきたいと思います。
今日はここまで。
先週1週間は実際にクライアントさんから依頼を受けて作成しているHPのお手伝いをする機会を頂きまして、やっておりました。
そのHP自体は、ベースがかなり古くからあって更新やリニューアルを重ねているものだったので、このブログで勉強している「XHTML」や「CSS」とは少し違ったりもしたんですが、先週の実務作業のテーマとしては、
「Dreamweaver」「Fireworks」などのWeb作成ソフトになれよう!
という感じでした。
とはいえ、少し前のブログでも書いていたと思いますが、現在私が職場で使用しているPCはスペックも高くなく、上記の様な有料(結構高額)なソフトなど入っていませんので、htmlやcssを書くときは、テキストエディタで、画像はGinp2やペイントでやってました。
しかし、ほんとベタに「現代の技術はすごい!」とか思ったんですが、本社にWeb制作に欠かせないソフトが一通り揃った高性能なPCがあるのですが、それを離れた場所から遠隔で使用できるいう!ソフトはもちろん、性能もそのままなんですね。まったくびっくりです。
まずはDreamweaver、まだまだ使いこなせていないのですが、かなり便利だと思います。とにかく今までのテキストエディタのみで作成していくのが大変すぎだった。。というのもあるかもしれないですが、htmlソース、cssソース、実際のデザイン、ブラウザ表示などが簡単に確認できるので、それだけでもすごく便利でした。ソースなども途中まで入力したら、アシスト的に候補になりそうなものが、出てきたり、この間ブログで勉強していた「ロールオーバー」なんかも簡単に作成できたりするようです。
そしてFTPとか?(実はこのあたりまだちゃんと把握できていない・・)と繋がっているようで、既にUPされているHPからファイルを落としてきて、変更したり、追加したりして、またすぐにUPする作業が簡単にできました。
ただ思ったのが、最初からhtmlやcssのことを勉強するときにこのソフトを使わなくてよかったと思います。ある程度htmlやcssの知識を身につけてから使うソフトで、制作の効率や速度UPの手助けをしてくれるという感じ。「全くの初心者でもこれさえあればHP作成が簡単!」ではないとは思います。
Fireworksについてはこっちも全然使いこなせてないです。今回の作業ではサイズ変更と、画像の明るさなどの調節くらいしかやってないのでまだまだですね。
検索してみるとFireworksの使い方やコツなんかのブログはかなりたくさんあったので、そういうのを見ながら勉強していきたいと思います。
これでかなりWeb制作の環境は整ってきたので、ステップアップしていくために更に勉強を進めていきたいと思います。
今日はここまで。
登録:
投稿 (Atom)