SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Yahoo! JAPANの制作チームによる、さまざまなWebサイト最適化手法

HTML5とCSS3を使ってスマートフォン向けサイトを構築
- iPhone版Yahoo!JAPANトップの開発事例紹介

Yahoo! JAPANの制作チームによる、さまざまなWebサイト最適化手法 第2回


  • X ポスト
  • このエントリーをはてなブックマークに追加

テキストシャドウ

 主にボタンなどで文字が刻印されているような表現に採用しています。文字色に白など明るい色を入れ、文字の上側に半透過の黒い影を入れています。

サンプル(テキストシャドウ)
text-shadow: rgba(0, 0, 0, 0.4) 0px -1px 0px;
図5 サンプル 実行結果
図5 サンプル 実行結果

 グラデーション、角丸、テキストシャドウを組み合わせて応用し、画像を一切使わずにiPhoneアプリのヘッダーのようなUIを表現することができます。

サンプル(iPhoneアプリ風ヘッダーUI)
<!DOCTYPE html>
<html>
<head>
<style>
html, body {
  margin:0;
  padding: 0;
}
header {
  position: relative;
  border-bottom: 1px solid #273750;
  border-top: 1px solid #ccd6e2;
  height: 42px;
  background: -webkit-gradient(linear, left top, left bottom,
    from(#b2bcc8),
    color-stop(0.48, #8a9bb5),
    color-stop(0.52, #8192ae),
    to(#73839c)
  );
}
h1 {
  position: absolute;
  top: 0;
  margin: 0;
  width: 100%;
  color: #fff;
  font-size: 20px;
  font-weight: bold;
  line-height: 42px;
  text-align: center;
  text-shadow: rgba(0, 0, 0, 0.4) 0 -1px 0;
}
.button {
  display: block;
  position: absolute;
  top: 6px;
  right: 5px;
  width: 46px;
  height: 28px;
  line-height: 28px;
  background: -webkit-gradient(linear, left top, left bottom,
    from(#6b89d1),
    color-stop(0.05, #809ee6),
    color-stop(0.48, #3c6ded),
    color-stop(0.52, #235fe1),
    color-stop(0.95, #2b63d2),
    to(#2b3d65)
  );
  border-color: #293647 #2f52a3 #124ab9;
  border-radius: 4px;
  border-style: solid;
  border-width: 1px 1px 0;
  font-size: 12px;
  font-weight: bold;
  color: #fff;
  text-align: center;
  text-shadow: rgba(0, 0, 0, 0.4) 0px -1px 0px;
  text-decoration: none;
}
/* ボタン下のハイライトの表現 */
.button:after {
  position: absolute;
  top: 0;
  left: 0;
  content: "";
  display: block;
  height: 100%;
  width: 100%;
  padding: 0 2px 1px 0;
  border-bottom: 1px solid #9aabc7;
  border-radius: 4px;
}
</style>
</head>
<body>
<header>
  <h1>メニュー</h1>
  <a class="button" href="#">完了</a>
</header>
</body>
</html>
図6 サンプル 実行結果
図6 サンプル 実行結果

CSSアニメーション

 スマートフォン版Yahoo! JAPANトップの「サービス一覧」「アプリ一覧」「設定」を押すと、それぞれのページが下からせり上がるように動いて表示されます。「CSSアニメーション」や「CSSトランスフォーム」といった機能を使用しています。CSSアニメーションはCSSのみの記述でアニメーションを表現できます。ただしそれだと実行のタイミングや、ユーザーの操作に合わせた細かい挙動を制御できないので、実際にはJavaScriptからCSSトランジションや、CSSトランスフォームなどの機能を呼び出しています。

 対象ブラウザをWebKitブラウザに限定すれば、クロスブラウザで動かすような複雑なJavaScriptや、重たいJavaScriptライブラリを使用しなくても動作可能です。またiPhoneに限って言えば、CSSプロパティのtop, leftなどの値をマイフレームごとに動かして作るアニメーションと比べ、CSSアニメーション・トランスフォームを使うと、デバイス自体のグラフィックエンジンが動き、ネイティブアプリケーションのような非常になめらかなアニメーションとして再生されます。このような機能がブラウザにまで開放されていることで、ウェブはもっとインタラクティブで面白いものになっていくでしょう。

 以下は、ボタンをクリックすると上下左右に回転しながらスライドアニメーションをするサンプルです。

サンプル(WebKit Transform)
<!DOCTYPE html>
<html>
<head>
<title>WebKit Transformサンプル</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=0"> 
<style>
#buttons {
  margin-bottom: 10px;
  text-align: center;
}
#block {
  width: 100px;
  height: 100px;
  background: red;
  -webkit-transition: -webkit-transform 1s ease-in-out;
}
</style>
</head>
<body>
<div id="buttons">
<input type="button" onclick="move(0, 0, 0)" value="左上へ">
<input type="button" onclick="move(205, 0, 90)" value="右上へ"><br>
<input type="button" onclick="move(0, 150, 180)" value="左下へ">
<input type="button" onclick="move(205, 150, 270)" value="右下へ">
</div>
<div id="block"></div>
<script>
var node = document.getElementById("block");
function move (x, y, r) {
    node.style.webkitTransform = 'translate3d(' + x + 'px,' + y + 'px,0) rotate(' + r + 'deg)';
}
</script>
</body>
</html>

 お手持ちのiPhoneや、iPod touch、iPadなどで見てみてください。ネイティブアプリケーションのように、なめらかに動いているのがわかると思います。

 さらにiPhone/Androidなどで実装されているタッチイベントを組み合わせることで、指のタッチした軌跡に沿って滑らかに動くコンテンツが作成できます。スマートフォン版Yahoo! JAPANトップでは、以下のような箇所で、今回紹介したCSSアニメーションの機能を使っており、ネイティブアプリケーションにも負けない表現をしています。

図7 左:写真ニュース 中央:設定画面(トグルスイッチ) 右:設定画面(ページ遷移)
図7 左:写真ニュース 中央:設定画面(トグルスイッチ) 右:設定画面(ページ遷移)

次のページ
WEBストレージ

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Yahoo! JAPANの制作チームによる、さまざまなWebサイト最適化手法連載記事一覧
この記事の著者

藤木 裕介(ヤフー株式会社)(フジキ ユウスケ)

ヤフー株式会社 R&D統括本部 制作本部 ウェブデベロップメント部 所属。1984年生まれ、神奈川県横浜市出身。美術大学にて情報デザイン等を学び、2007年にヤフー株式会社デザイナー職の新卒採用にて入社。同社では、スマートフォン版Yahoo! JAPANトップのマークアップを担当。HTML5...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5619 2011/06/08 09:53

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング