先日 HTML5 + CSS3 で書かれた、素敵な雑誌の表紙みたいな Webサイトを見つけました。それ以来、CSS3 だったらコレもできそう ... アレもできるかも ... なんてことを、雑誌のデザインなどを見ながらひとり盛り上がってます w まだまだ IE では CSS3 が使えないけれど、今回はいくつか CSS3 のサンプル作りに挑戦してみました。
先日、とっても素敵な Webサイトを見つけました。
iamjamie.co.uk
HTML
<li>タグの中に<a>タグで囲んだ画像を入れただけの簡単なHTML。
2 | < li >< a href = "#" >< img class = "pic-1" src = "image01.jpg" alt = "" /></ a ></ li > |
3 | < li >< a href = "#" >< img class = "pic-2" src = "image02.jpg" alt = "" /></ a ></ li > |
4 | < li >< a href = "#" >< img class = "pic-3" src = "image02.jpg" alt = "" /></ a ></ li > |
5 | < li >< a href = "#" >< img class = "pic-2" src = "image02.jpg" alt = "" /></ a ></ li > |
CSS
padding
で写真の枠を付けて、ボックスシャドウで影を付けています。
4 | -moz-box-shadow: 0px 3px 3px rgba( 0 , 0 , 0 , . 4 ); |
5 | -webkit-box-shadow: 0px 3px 3px rgba( 0 , 0 , 0 , . 4 ); |
6 | box-shadow: 0px 3px 3px rgba( 0 , 0 , 0 , . 4 ); |
次に、個別に rotate
ファンクションで回転、z-index
で重なりを指定しています。
3 | -moz-transform: rotate( -10 deg); |
4 | -webkit-transform: rotate( -10 deg); |
5 | -o-transform: rotate( -10 deg); |
6 | transform: rotate( -10 deg); |
- 6.
transform: rotate(-10deg)
上の例では、反時計周りに10度、回転の中心はデフォルトのまま … 要素の中心になります。回転の中心をずらしたい場合は、transform-origin で指定できます。
transform-origin: x-offset y-offset;
例えば transform-origin: 0 100%;
で左下になります(X-offsett, Y-offset)。
上記のイメージギャラリーでは、画像ホバー時に z-index
を変更して、その要素が一番上にくるようにしているだけですけど、回転の角度を変えたりしてもおもしろいですね。
2. 回転で作る斜めのメニュー + 立体的な CSS リボン
CSS33 の transform
プロパティの rotate
ファンクション(さっきも使った回転)をつかって、斜めのメニューを作っています。
3D CSS Ribbon
これは CSS だけで表現する斜めのメニューや、立体的なリボンを設置するデモです。リボンの影の三角形も、CSS で作られています。斜めにする rotate
は、残念ながらIEでは表現できません …。
2.1. RGBa で色を透過できます!
まずは斜めのメニューの部分です。これはさっきと同じ、rotate
なので、難しくないですねー。ここでは色を透過させられる、RGBa
を見てみます。CSS3 では、色(今回は背景色)の指定を RGBa
で指定できますよね。メニューの部分はカラーを RGBa で指定したので、背景のテクスチャが透けて見えますねー。
CSS
2 | background : rgba( 255 , 105 , 180 , . 4 ); |
5 | background : rgba( 255 , 105 , 180 , . 75 ); |
R(レッド)、
G(グリーン)、
B(ブルー)はそれぞれ 0~255、
のアルファチャンネルは 0 ~ 1で指定して、0 が透明、1 が不透明となってます。0.5
などは、.5
と、省略して書けます。
RGBa の活用例としては、以下のような画像のキャプションなどにも利用できますね!
こんにちは ;D
Webデザインレシピの中のひと、高橋のりです!よろしくお願いします!
2.2. 立体的なリボン
今度は CSS での立体的なリボンの作り方です。でも実際は、画像を使った方がいいかも…と思ってたりしますけど、スマートフォンサイトなどではいいかもですね!リボンの折り返しの部分は、border
を使って三角形の部分を作ります。これは CSS3 じゃなくても OKですね!イメージは以下のような感じです。
四角形と三角形でリボンを作る
四角いボックスに、border を工夫して作った三角形を下に重ねます。
CSS
15 | border-color : transparent #7d90a3 transparent transparent ; |
三角形を作るには、高さと幅が 0 のボックスを作って、そこに太い border を指定します。そして 1辺を残して、他の辺の border の色を、透明色 transparent
を指定すれば OK です!CSS で三角形を作るトリックは、下記のリンクが分かり易いです。
z-index
プロパティと、position
プロパティで位置、重なりを調整すればリボンの出来上がりです。
3. スケールアップとアニメーションの組み合わせ表現
transition
プロパティと transform
プロパティを組み合わせて、マウスホバーでゆっくり拡大するバブルアップアイコンを表現できます!でも残念ながら Firefox ではアニメーションの再現できません … 画像のスケールアップはします。Safari、Chrome では、拡大するアイコンの動きを確認できると思います。
HTML
HTML は至って簡単です。<li> タグの中に画像を入れてるだけの横並びリストです。
2 | < li >< a href = "#" >< img src = "twitter.png" alt = "" /></ a ></ li > |
3 | < li >< a href = "#" >< img src = "facebook.png" alt = "" /></ a ></ li > |
4 | < li >< a href = "#" >< img src = "Google.png" alt = "" /></ a ></ li > |
CSS
画像にアニメーションの時間指定をします。
5 | -webkit-transition:-webkit-transform 0.3 s ease-in; |
7 | -o-transition:-o-transform 0.3 s ease-in; |
13 | -moz-transform:scale( 1.8 ); |
15 | -webkit-transform:scale( 1.8 ); |
17 | -o-transform:scale( 1.8 ); |
- 5.
-webkit-transition:-webkit-transform 0.3s ease-in
上記の部分で、アニメーションスピードを設定します。ホバー時は transform:scale(1.8)
で1.8倍にスケールアップします!
4. とってもうれしい CSS3 のマルチカラム
CSS3 のとっても嬉しい仕様のひとつ、マルチカラムレイアウト。今までラッピングして、フロートして、なんてしていましたが、CSS3 ではほんの数行で済んでしまいますし、HTMLもとってもクリーン!
退屈な Web の水平、垂直のレイアウトも、ロテーションさせるたりすると、雑誌の紙面のようなイメージも作れるかも。
I love wafer I love I love soufflé. I love I love cotton candy fruitcake faworki caramels. Cheesecake pie marzipan gingerbread danish chocolate bar I love. Donut topping bonbon applicake biscuit.
Carrot cake oat cake marzipan biscuit. I love soufflé jelly. Halvah dragée biscuit I love danish tootsie roll. Bonbon faworki macaroon.
Cupcake lollipop carrot cake tootsie roll topping caramels. Oat cake dragée dragée candy canes muffin caramels cake wypas. Jelly beans jelly beans tiramisu I love chupa chups.
HTML
HTMLは至ってクリーンです。
3 | I love wafer I love I love soufflé. I love I love cotton candy fruitcake faworki caramels. Cheesecake pie marzipan gingerbread danish chocolate bar I love. Donut topping bonbon applicake biscuit... |
CSS
CSSもとってもシンプルです。
3 | -webkit-column-count: 3 ; |
4 | -webkit-column-gap: 10px ; |
- 9.
column-count: 3;
- 10.
column-gap: 20px;
column-count
でカラム数、column-gap
でカラムの間隔を指定するだけです。
5. 丸角、グラデーション、シャドウの組み合わせでボタン
border-radius
と text-shadow
、box-shadow
、gradient
(グラデーション)を組み合わせると、こんな素敵なボタンができちゃいます。画像を使うより、色を変更すればいいだけなのでメンテナンス性はこっちの方が全然いいですね!
CSS Button
HTML
2 | < a class = "button blue" href = "example.com" >CSS Button</ a > |
4 | < input class = "button blue" type = "submit" name = "signin" value = "Signin" /> |
マークアップは至って普通です。
CSS
丸角、シャドウはすでに紹介しているので、CSS3 のグラデーションの書き方です。
1 | background : -webkit-gradient(linear, left top , left bottom , from( #00adee ), to( #0078a5 )); |
2 | background : -moz-linear-gradient( top , #00adee , #0078a5 ); |
mozilla系(Firefox)と webkit系(Safari、Chrome)と書き方が違うので注意が必要ですね。webkit系 は、left top
から、left bottom
といった感じで、グラデーションの向きを指定します。mozilla系ブラウザのグラデーションの方向の書き方は、以下のようになります。
- 2.
-moz-liner-gradient(
top,
#f0f0f0,
#ddd);
がグラデーションの向きです(下記参照)。
はグラデーションの開始色、
はグラデーションの終了色になります。
top
– 上から下
left
– 左から右
left top
– 左上から右下
6. サーチボックスもちょっと素敵に
検索フォーム(<input type=”text” など)だって、丸角やグラデーションを指定することができます。
CSS
3 | border-radius: 5px 0 0 5px ; |
4 | -moz-border-radius: 5px 0 0 5px ; |
5 | -webkit-border-radius: 5px 0 0 5px ; |
6 | text-shadow : 0 1px #fff ; |
7 | -moz-box-shadow: 0 1px 1px #fff ; |
8 | -webkit-box-shadow: 0 1px 1px #fff ; |
9 | box-shadow: 0 1px 1px #fff ; |
10 | background : -webkit-gradient(linear, left top , left bottom , from( #eee ), to( #fff )); |
11 | background : -moz-linear-gradient( top , #eee , #fff ); |
12 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr= '#eeeeee' , endColorstr= '#ffffff' ); |
上記は入力(テキストボックス)の方の CSS です。ボタンの方も基本的に同じで、色(グラデーション)だけ変更すればいいだけですね!
7. フォームって、フォーカス時にシャドウの色を変えたりすると素敵かも
テキストボックスやテキストエリア … フォーカスでシャドウを濃くしたり、シャドウの色を変更するという表現 …。ちょっとお洒落でいい感じですねー!
CSS
6 | -webkit-box-shadow: 0px 0px 6px rgba( 255 , 15 , 135 ,. 7 ); |
7 | -moz-box-shadow: 0px 0px 6px rgba( 255 , 15 , 135 ,. 7 ); |
8 | box-shadow: 0px 0px 6px rgba( 255 , 15 , 135 ,. 7 ); |
これは CSS3 ならではの発想ですね。ボックスシャドウを使って、ホバーしたときと、フォーカスしたときのスタイルを変更しています。画像でやろうとするとちょっと面倒ですけど、CSS3 ならとっても簡単ですね!
8. 丸角とシャドウでつくるタブ
丸角のタブも、今までは画像を使ってデザインしてました。CSS3 では画像を使わずに、丸角やグラデーション、ボックスシャドウなどを表現できるので、CSS のみで下記のようなタブができちゃうんですねー!
また、タブにマウスをのせると、ジワーっと背景色が変ります(Firefox 3.6、IE ではアニメーションは表現できません。Firefox 3.7 は大丈夫なようです。Safari、Chrome は OK です)。
CSS
実際のタブの数より <li> ダグがひとつ多いところに注意が必要ですねー。4つ目の空の <li> ダグでシャドウを表現しています。
2 | < li class = "one" >< a href = "#" >Tab 1</ a ></ li > |
3 | < li class = "two selected" >< a href = "#" >Tab 2</ a ></ li > |
4 | < li class = "three" >< a href = "#" >Tab 3</ a ></ li > |
5 | < li class = "shadow" ></ li > |
CSS
2 | -webkit-border-radius: 5px ; |
3 | -moz-border-radius: 5px ; |
9 | background-color : #fe2d96 ; |
10 | border : solid 1px #f9007c ; |
23 | -webkit-box-shadow: 0 -2px 6px rgba( 0 , 0 , 0 ,. 4 ); |
24 | -moz-box-shadow: 0 -2px 6px rgba( 0 , 0 , 0 ,. 4 ); |
25 | box-shadow: 0 -2px 6px rgba( 0 , 0 , 0 ,. 4 ); |
4つめのシャドウ用の <li> ダグは、position: absolute
で絶対配置するんですね!そして z-index
で重なり順もコントロールするのを忘れずに!今まで画像を使って表現していた丸角、グラデーションを使っていたタブも CSS3 ならとても簡単にできてしまいますね!
CSS3 はコーディングをとっても楽にしてくれて、表現の自由度を広げてくれます。これから色んなアイデアで、素敵なデザインがたくさん生まれてくると思うと、本当にわくわくします。そんなCSS3のアイデアをたくさん集めた、The Ultimate Roundup of 55+ CSS3 Tutorials からいくつかサンプルを紹介しました!
9. おまけ:IE 独自拡張 グラデーションの指定の仕方
3 | background : -moz-linear-gradient( top , #fff , #ddd ); |
4 | background : -webkit-gradient(linear, left top , left bottom , from( #fff ), to( #ddd )); |
6 | filter: progid: DXImageTransform.Microsoft.gradient |
7 | (GradientType= 0 , startColorstr= '#ffffff' , endColorstr= '#dddddd' ); |
- 1.
GradientType=0 or 1
… これは 0で縦方向、1で横方向のグラデーションです。
- 1.
startColorstr='#FFFFFF', endColorstr='#DDDDDD'
… 開始色と終了色の指定です。
Comments
Thank you for the comment.