動させることはできません 少し工夫が必要になります 元の画像を移動すれば反射画像 も一緒についてきますが 反射画像だけが移動するように見せたいので 元の画像の上に は黒色のボックスを覆い被せます ReflectAnime1 の説明 HTML の記述 (ReflectAnime1.html) id 属

Similar documents
1つ目は MASK という文字の下に楕円形のマスクイメージで その文字と楕円形の中に複数画像のスライドを表示するので id 属性 slide の div 要素の中に画像を5つ (images/dsc00203l.jpg images/dsc00027l.jpg images/dsc00092l.jp

<!DOCTYPE html> <html> <head> <title>titleanime01</title> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="titleanime01.css"> </hea

( 注 )Safari (webkit 系ブラウザ ) と Chrome(webkit にも対応 ) は テキストの輪郭や色を -webkit-text-stroke-width -webkit-text-stroke-color -webkit-text-fill-color のプロパティで描くこ

leaf2-h leaf2-v leaf2 images/leaf2.png leaf3-h leaf3-v leaf3 images/leaf3.png leaf4-h leaf4-v leaf4 images/leaf4.png leaf5-h leaf5-v leaf5 images/leaf

<!DOCTYPE html> <html> <head> <title>clipanime1</title> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="clipanime1.css"> </head> <

</div> </div> </body> </html> CSS の記述 (3DCubeAnime1.css) #stage ステージのスタイルを指定します 背景色を黒色で指定します 画像に軽く遠近感を出すために perspective: 1000px; と指定し perspective-orig

背景の線形グラデーションをアニメーションのように見せる方法は 前章の #div4 ボックスと同じ方法です ( 注 )Safari (webkit 系ブラウザ ) と Chrome(Webkit にも対応 ) は テキストの輪郭や色を -webkit-text-stroke-width -webkit

MovingTextsAnime1 の説明 HTML の記述 (MovingTextsAnime1.html) id 属性 stage の div 要素 ( アニメーションが動くステージ ) を作り その中にボックスやテキストを記述します id 属性 div1 のdiv 要素から id 属性 div

ように記述をします div1 要素 span 要素 2 個 div3 要素 span 要素 4 個 div5 要素 span 要素 1 個 div7 要素 span 要素 2 個 div2 要素 span 要素 1 個 div4 要素 span 要素 2 個 div6 要素 span 要素 2 個

1222-A Transform Function Order (trsn

Color Change

MorphAndTextAnime の説明 HTML の記述 (MorphAndTextAnime.html) id 属性 stage の div 要素を作り その中に div 要素でボックスを記述します id 属性 div1 の div 要素を記述し 中につぎの記述をします id 属性 div2

サンプル CSS OutlineAnimation.html の説明 HTML の記述 (OutlineAnimation.html) id 属性 stage の div 要素を作り その中に div 要素でボックスを記述します id 属性 div1 の div 要素を記述し 中にテキストで Out

Border Width と記述します id 属性 div3 の div 要素を記述し 中にテキストで Border Radius と記述します id 属性 div4 の div 要素を記述し 中に span 要素を1つ記述しその中にテキストで Border All<br />(Color,Widt

画像全体を左右反転させると 下の画像 ( 黄緑色の外枠に白い桜 ) は backface-visibility: visible; と指定してあるので裏側が表示されます 上の画像 ( 水色の外枠に紅葉 ) は backface-visibility: hidden; と指定してあるので裏側が表示され

サンプル CSS web ページを開くと同時にピエロの玉乗りが動き出すアニメーションを作ってみましょう AnimeAuto の説明 HTML の記述 (AnimeAuto.html) ピエロの画像に pierrot という id を 玉の画像に ball という id を付けておきます <!DOCT

<!DOCTYPE html> <html> <head> <title>spaceorbitanime</title> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="spaceorbitanime.css">

overflow プロパティの指定は 親ボックスのスタイルに記述します overflow プロパティは position プロパティ (position: static; 以外 ) の指定がされていなと適用されません ボックスの外にはみ出た部分を表示させたくないときに hidden を使用します サ

transform: skewx(x 軸の傾斜角度 ) transform: skewy(y 軸の傾斜角度 ) transform: skew(x 軸の傾斜角度, Y 軸の傾斜角度 ) skewx( ) は X 軸に沿って傾斜します skewy( ) は Y 軸に沿って傾斜します skew( ) は

をさせる ) ような場合に それぞれの要素に id 属性で id 名を指定している場合には CSS の id セレクタごとにアニメーションでプロパティを指定する必要があります class セレクタ.class 名 { プロパティ名 : 値 ; HTML 文書で class 属性 ( class="

1222-A Transform Function Order (trsn

transform: translatex(x 方向の移動距離 ) transform: translatey(y 方向の移動距離 ) transform: translate(x 方向の移動距離, Y 方向の移動距離 ) transform: translate 関数は 移動する位置ではなく 移動

子ボックスや孫ボックスなどに position: absolute; と指定すると それぞれ親ボックスに対する絶対位置で配置できるので親ボックスの上に複数の子ボックスや孫ボックスを重ねて配置することができます トランジションやアニメーションを作成するときに非常に便利なので覚えておきましょう top

Color Change

画像 images/ SpaceShuttle.png を指定します <!DOCTYPE html> <html> <head> <title>circleanime1</title> <meta charset="utf-8"> <link rel="stylesheet" type="text/

大メニューをマウスカーソルで hover すると 半透明の小メニューが上から伸びてきます 小メニューを hover すると メニューの背景色とテキストの色が変わります NaviMenuAnime01 の説明 HTML の記述 (NaviMenuAnime01.html) id 属性 menu-box

サンプル CSS1 入力フィールドの輪郭 (outline) のトランジション 入力フィールドをクリックすると変化します InputOutlineTransition の説明 HTML の記述 (InputOutlineTransition.html) id 属性 field の div 要素を作り

1222-B Transform Using Class And Tag (classセレクタと要素型セレクタ(Tag)を使用してスタイルを適用する)

トリガーをわかり易くする方法

1221 Transitionの指定項目

ボタンのトランジション 1 トランジションを利用して ボタンを作ってみましょう ボタンを工夫することでひときわ光る web ページにすることができます もう Illustrator や Photoshop でボタンの画像を作る必要はありません JavaScript でスクリプトを書く必

メニューのトランジション 1 (text-overflow) トランジションを利用して 面白い個性的なメニューを作ってみましょう web ページもぐっと引き立つでしょう ここで紹介するメニューも Illustrator や Photoshop でメニューの画像を作る必要はありません J

1221 Transitionの指定項目

images/dsc00092s.jpg images/dsc00131s.jpg images/dsc00149s.jpg images/dsc00203s.jpg <!DOCTYPE html> <html> <head> <title>roundphotogallery</title> <me

1222-A Transform Function Order (trsn

padding( パディング ) padding プロパティでボックスの内側の余白を指定します この部分の内側には背景 ( 背景色や背景画像 ) を表示できます border( ボーダー ) border プロパティでボックスの境界線を指定します ボーダーには色 太さ 線の種類を指定できます 画像で

Microsoft Word - 教材WebページのHTML5及びCSS3の解説

スタイルシートでデザインを整えよう

Web 設計入門

経営論集2011_07_小松先生.indd

Webデザイン論

第6回 CSS入門(つづき)

Moshimo Challenge Report

World Wide Web =WWW Web ipad Web Web HTML hyper text markup language CSS cascading style sheet Web Web HTML CSS HTML

extCountdown.pdf

Web 設計入門

ホームページ制作 基礎編 (HTML5 CSS3 コーディング )

id, クラスで指定 (#id 名,.class 名 ) 4. 様々なセレクタ a,b :a と b を指定 a b :a の下の階層の b を指定 a>b :a の直下の b を指定 a+b :a の次の b を指定 ab :a かつ b を指定 5. 属性セレクタ a[b] :a タグ内で b

PowerPoint プレゼンテーション

要素にフォーカスが当たったときは 例えば以下のように記述する input:focus{} 疑似要素 p:first-lin{ } 一行目だけ p:first-letter{} 最初の文字だけ要素の前や後に付け加えるには 以下のように記述する p:before{content:" 記号や文字 ";}

合宿事前講座 Web 開発の基本編その 2 情報研究会モブ 薗田海樹 The. H.30 情報研究会 1

07_経営論集2010 小松先生.indd


6 2 s µ µµµ µµµµ µ µ h µs µ µµµµ µ µ µ s mµµµµµ µµµ µµ µ u m µmµµµµµ µµ µ µ µ µ µ µ µ µ s 1

PowerPoint Presentation

インターネット社会の発展

about かみのごうや たいち 大阪府出身 東京都在中 28歳 うお座 O型 ゾウと写真が好き 2xup.org を管理

IBM Business Process Manager CSS による Coach レイアウト制御ガイド WebSphere 2014 IBM Corporation

SVG資料第6回目(その3) SVGとHTMLの間でデータを交換する

EC 千葉のホームページで使用している CSS CSSスタイルシート ( 外部記載 ) /* == 標示枠背景に壁紙設置 ( 全画面共通 )======= */ body { background-ima

演習室の PC のハードディスクには演習で作成したデータは保管できません 各 PC の ネットワーク接続 ショートカットからメディア情報センターのサーバーにアクセスしてください 演習名 使用するフォルダ 演習 1 Z: Web データ管理 演習 1 演習 2 Z: Web データ管

Microsoft PowerPoint - CSS(Cascading Style Sheets)の基本.pptx

PowerPoint Presentation

目次 はじめに... 1 CSS?... 3 CSS の例... 4 CSS の基本の形... 5 HTML で CSS を読み込む... 7 <link> タグを置く ( ファイルを読み込む )... 9 <style> タグを置く ( スタイルを直接埋め込む ) セレクタ... 11

JIS Web Web JIS JIS 5.1.a 5.1.b 5.2.a 5.2.b 5.2.c 5.2.d 5.2.e 5.2.f 5.2.g 5.3.a 5.3.b 5.3.c 5.3.d 5.3.e 5.3.f 5.3.g 5.3.h 5.3.i 5.4.a 5.4.b 5.4.c 5.4.

■新聞記事

6 2 1

~/WWW-local/compIID (WWW IID ) $ mkdir WWW-local $ cd WWW-local $ mkdir compiid 3. Emacs index.html n (a) $ cd ~/WWW/compIID

Web データ管理 HTML+CSS (3) (2 章 ) 2011/10/19( 水 ) 湘南工科大学講義資料 Web データ管理 (2011) 阿倍 1/23

ch31.dvi

1

<4D F736F F D A957A A A8FEE95F18F88979D DEC90AC E646F63>


この 講 座 で 学 ぶこと 3の 概 要 現 時 点 で 大 体 使 える 機 能 2

JavaScript 演習 2 1

Microsoft PowerPoint - css-3days.ppt [互換モード]

css.pdf

PowerPoint プレゼンテーション

Web09

Microsoft PowerPoint - css-3days 互換モード

Web プログラミング 1 HTML+CSS (3) (2 章 ) 2013/5/8( 水 ) 演習室の PC のハードディスクには演習で作成したデータは保管できません 各 PC の ネットワーク接続 ショートカットからメディア情報センターのサーバーにアクセスしてください (Z ドライブとして使用で

1/2

extChatText.pdf

超簡単にWebページを作成

Web データ管理 HTML+CSS (7) (2 章 ) 2011/11/16( 水 ) 湘南工科大学講義資料 Web データ管理 (2011) 阿倍 1/15

27短01研01斉藤.indd

_勉強会_丸山さつき_v3

Microsoft PowerPoint - css-3days 互換モード

(3) 本文を書く 実際にページを開いたときに表示される本文を書いてみましょう から の間に書きます <html > <head > <title > 武のホームページ </title > </head > </html > (4) ページを保存する ここで一度ページを保存してみましょう テキストエ

はじめに 本書の目的は 制作の効率化 クオリティの向上 各作業者間のスタイルの統一を 図る目安になることで 常にブラッシュアップを繰り返し 現時点での最適解の共 有に活用するものである 目次 基本仕様 ファイル ディレクトリ構成 画像ファイル 対応ブラウザ 品質管理 (X)HTML 制作 文字コード

Web

Network Computing の基礎

コンピュータ基礎実習 ( 上級 ) 第 13 週の例では <h1> タグが対象であることを意味します セレクタを変えることで見栄えを様々な対象に設定できます プロパティ (property) は設定する見栄え ( スタイル ) の種類のことです 値はプロパティに対する具体的な設定値です この例では文

( )

Taro-ホームページB5.jtd

! "#$%&'()*+,-. STUV WXYZ[\]^_`abcdefghijklmno pqrstuvwxyz{ }~ ƒ ˆ Š Œ Ž š œ žÿ ª«±²³ µ ¹º»¼½¾ ÀÁÂÃÄ ÅÆÇÈÉÊËÌÍÎÏÐ

2 / 16 HTML=HyperText Markup Language( ハイパーテキストマークアップランゲージ ) ブラウザ (Chrome) での表示 ソースの表示 ( メモ帳 /TeraPad) HTML <========= =========>

Sushi Web ページの編集 Card 1 of 10 3 パソコンの画面上で ブラウザとテキストエディタを横に並べます ブラウザ テキストエディタ 4 5 テキストエディタで 自分の自己紹介になるように変更します 変更したらテキストを保存します ( ファイル > 保存 ) 保存したら F5 を

HTML5 CSS


Transcription:

1333 Reflection の効果 -webkit-box-reflect プロパティをアニメーションに利用してみましょう Reflection は Safari (webkit 系ブラウザ ) と Chrome(webkit にも対応 ) のみで動かすことができます 2013 年 12 月現在 W3C で Reflection の仕様が Working Draft( 草案 ) となっています 近い将来 webkit 系以外のブラウザでも Reflection が使えるようになるでしょう サンプルCSSのスクリプトには box-reflect と-webkit-box-reflect を指定してありますが 現在のところ機能するのは-webkit-box-reflect の方だけです サンプル CSS1 上下左右の反射画像を移動させる (1) 注意 :Chrome と Safari だけの機能です (2015 年 12 月 5 日現在 ) 1 つの画像に反射画像は 1 方向にしか指定できません また -webkit-box-reflect プロパテ ィはアニメーションできないので 元の画像と反射画像の隙間の距離 の値を増減して移 1

動させることはできません 少し工夫が必要になります 元の画像を移動すれば反射画像 も一緒についてきますが 反射画像だけが移動するように見せたいので 元の画像の上に は黒色のボックスを覆い被せます ReflectAnime1 の説明 HTML の記述 (ReflectAnime1.html) id 属性 wrap の div 要素の中に div 要素を5つ指定し 1 番目から4 番目の div 要素の中には画像 images/dsc00203s.jpg と span 要素を指定します 5 番目の div 要素の中には画像 images/dsc00203s.jpg とだけを指定します <!DOCTYPE html> <html> <head> <title>reflectanime1</title> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="reflectanime1.css"> </head> <body> <p> 写像をアニメーションで動かす (1)</p> <div id="stage"> <div id="wrap"> <div> <img src="images/dsc00203s.jpg" alt="green road"><span></span> <div> <img src="images/dsc00203s.jpg" alt="green road"><span></span> <div> <img src="images/dsc00203s.jpg" alt="green road"><span></span> <div> <img src="images/dsc00203s.jpg" alt="green road"><span></span> <div> <img src="images/dsc00203s.jpg" alt="green road"> </body> </html> CSS の記述 (ReflectAnime1.css) #stage ステージのスタイルを指定します width: 600px; height: 500px; 背景に黒色を 指定します overflow: hidden; を指定しておきます 2

#stage { width: 600px; height: 500px; background-color: #000000; position: relative; overflow: hidden; 画像の位置の起点を指定します position は absolute 位置は top: 180px; left: 210px; (#stage ボックスの左上端を起点とした位置 ) で指定します #wrap { top: 180px; left: 210px; 画像と黒色のボックスを入れる div 要素の共通のスタイルを指定します この div 要素を 移動させると 反射画像も一緒について来ます #wrap > div { top: 0px; left: 0px; 1つ目の div 要素はアニメーション名を ref1anime 実行時間を 5s イージングを ease-in-out 開始待ち時間を 0s 繰り返しを infinite 実行方向は alternate で指定します アニメーション名 ref1anime に対応するタイムライン (@keyframes) を指定します top: -60px; で上方向へ 60px 移動させます #wrap > div:nth-child(1) { animation: ref1anime 5s ease-in-out 0s infinite alternate; -webkit-animation: ref1anime 5s ease-in-out 0s infinite alternate; @keyframes ref1anime { from { to { top: -60px; @-webkit-keyframes ref1anime { from { to { top: -60px; 3

2つ目の div 要素はアニメーション名を ref2anime 実行時間を 5s イージングを ease-in-out 開始待ち時間を 2.5s 繰り返しを infinite 実行方向は alternate で指定します アニメーション名 ref2anime に対応するタイムライン (@keyframes) を指定します left: 60px; で右方向へ 60px 移動させます #wrap > div:nth-child(2) { animation: ref2anime 5s ease-in-out 2.5s infinite alternate; -webkit-animation: ref2anime 5s ease-in-out 2.5s infinite alternate; @keyframes ref2anime { from { to { left: 60px; @-webkit-keyframes ref2anime { from { to { left: 60px; 3つ目の div 要素はアニメーション名を ref3anime 実行時間を 5s イージングを ease-in-out 開始待ち時間を 5s 繰り返しを infinite 実行方向は alternate で指定します アニメーション名 ref3anime に対応するタイムライン (@keyframes) を指定します top: 60px; で下方向へ 60px 移動させます #wrap > div:nth-child(3) { animation: ref3anime 5s ease-in-out 5s infinite alternate; -webkit-animation: ref3anime 5s ease-in-out 5s infinite alternate; @keyframes ref3anime { from { to { top: 60px; @-webkit-keyframes ref3anime { from { to { top: 60px; 4 つ目の div 要素はアニメーション名を ref4anime 実行時間を 5s イージングを ease-in-out 開始待ち時間を 7.5s 繰り返しを infinite 実行方向は alternate で指定 します アニメーション名 ref4anime に対応するタイムライン (@keyframes) を指定します left: 4

-60px; で左方向へ 60px 移動させます #wrap > div:nth-child(4) { animation: ref4anime 5s ease-in-out 7.5s infinite alternate; -webkit-animation: ref4anime 5s ease-in-out 7.5s infinite alternate; @keyframes ref4anime { from { to { left: -60px; @-webkit-keyframes ref4anime { from { to { left: -60px; 5 つ目の div 要素はアニメーションの指定はしません 中心に表示される画像になります #wrap > div:nth-child(5) { div 要素に入れる画像の共通のプロパティと値を指定します width: 180px; height: 135px; で指定します border-radius: 20px; で 4 隅を丸くします #wrap > div img { top: 0px; left: 0px; width: 180px; height: 135px; border-radius: 20px; 1つ目の画像の反射画像を指定します 上方向で 元の画像と反射画像の隙間の距離 が 2px の反射画像で 円形グラデーションの中心が画像の 50% 150%( 左右中央で上辺から下方向へ高さの 1.5 倍 ) の位置から円形グラデーションのマスクが掛かるように指定します ( 反射画像になると 見た目は上から下方向へ黒色が薄くなっていくグラデーションになります ) #wrap > div:nth-child(1) img { box-reflect: above 2px radial-gradient(circle at 50% 150%, transparent, transparent 60%, white); -webkit-box-reflect: above 2px -webkit-radial-gradient(50% 150%, circle, transparent, transparent 60%, white); 5

2つ目の画像の反射画像を指定します 右方向で 元の画像と反射画像の隙間の距離 が 2px の反射画像で 円形グラデーションの中心が画像の-50% 50%( 上下中央で左辺から左方向へ幅の 0.5 倍 ) の位置から円形グラデーションのマスクが掛かるように指定します ( 反射画像になると 見た目は右から左方向へ黒色が薄くなっていくグラデーションになります ) #wrap > div:nth-child(2) img { box-reflect: right 2px radial-gradient(circle at -50% 50%, transparent, transparent 60%, white); -webkit-box-reflect: right 2px -webkit-radial-gradient(-50% 50%, circle, transparent, transparent 60%, white); 3つ目の画像の反射画像を指定します 下方向で 元の画像と反射画像の隙間の距離 が 2px の反射画像で 円形グラデーションの中心が画像の 50% -50%( 左右中央で上辺から上方向へ幅の 0.5 倍 ) の位置から円形グラデーションのマスクが掛かるように指定します ( 反射画像になると 見た目は下から上方向へ黒色が薄くなっていくグラデーションになります ) #wrap > div:nth-child(3) img { box-reflect: below 2px radial-gradient(circle at 50% -50%, transparent, transparent 60%, white); -webkit-box-reflect: below 2px -webkit-radial-gradient(50% -50%, circle, transparent, transparent 60%, white); 4つ目の画像の反射画像を指定します 左方向で 元の画像と反射画像の隙間の距離 が 2px の反射画像で 円形グラデーションの中心が画像の 150% 50%( 上下中央で左辺から右方向へ幅の 1.5 倍 ) の位置から円形グラデーションのマスクが掛かるように指定します ( 反射画像になると 見た目は左から右方向へ黒色が薄くなっていくグラデーションになります ) #wrap > div:nth-child(4) img { box-reflect: left 2px radial-gradient(circle at 150% 50%, transparent, transparent 60%, white); -webkit-box-reflect: left 2px -webkit-radial-gradient(150% 50%, circle, transparent, transparent 60%, white); 6

div 要素の1 番目から4 番目に入れた画像の上に覆い被せる span 要素の共通のプロパティと値を指定します width: 180px; height: 135px; で指定します border-radius: 20px; で4 隅を丸くします 背景色を #stage の背景色 ( 黒色 ) に合わせて background-color: #000000; で指定します ( 反射画像だけが見えるように 元の画像に黒色の span 要素を覆い被せて見えなくします ) #wrap > div span { top: 0px; left: 0px; width: 180px; height: 135px; border-radius: 20px; background-color: #000000; サンプル CSS2 上下左右の反射画像を移動させる (2) サンプルCSS1と同じようなアニメーションは -webkit-box-reflect プロパティを使用して反射画像を表示する方法でなくても作ることができます このサンプルCSS2の方法は 反射画像ではなく 普通の画像を 180 度回転させて反射画像のように見せて その上にグラデーションを被せる方法ですが W3C 標準仕様のプロパティだけを使用するので Chrome Safari はもちろんのこと Firefox IE でも反射画像のアニメーションのように見せることができます ReflectAnime2 の説明 HTML の記述 (ReflectAnime2.html) 7

id 属性 wrap の div 要素の中に画像 images/dsc00203s.jpg を 5 つ指定し 1 番目から 4 番 目の画像には後ろに span 要素を指定します <!DOCTYPE html> <html> <head> <title>reflectanime2</title> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="reflectanime2.css"> </head> <body> <p> 写像をアニメーションで動かす (2)</p> <div id="stage"> <div id="wrap"> <img src="images/dsc00203s.jpg" alt="green road"><span></span> <img src="images/dsc00203s.jpg" alt="green road"><span></span> <img src="images/dsc00203s.jpg" alt="green road"><span></span> <img src="images/dsc00203s.jpg" alt="green road"><span></span> <img src="images/dsc00203s.jpg" alt="green road"> </body> </html> CSS の記述 (ReflectAnime2.css) #stage ステージのスタイルを指定します width: 600px; height: 500px; 背景に黒色を 指定します overflow: hidden; を指定しておきます #stage { width: 600px; height: 500px; background-color: #000000; position: relative; overflow: hidden; 画像の位置の起点を指定します position は absolute 位置は top: 180px; left: 210px; (#stage ボックスの左上端を起点とした位置 ) で指定します #wrap { top: 180px; left: 210px; サンプル CSS1 の ReflectAnime1.css と違う点は <img src="images/dsc00203s.jpg" 8

alt="green road"> の5 番目の画像を中心にして 1 番目から4 番目の画像を上下左右に反転させて反射画像のように見せるだけなので 1 番目から4 番目の反射画像には元の画像が必要ないというところです 1つ目の画像 #wrap img:nth-of-type(1) は上方の反射画像に相当します top: -137px; left: 0px; の位置 (#wrap を起点とした位置 ) で transform: rotatex(180deg); で X 軸の方向から見て 180 度回転 ( 反転 ) させます アニメーション名を ref1anime 実行時間を 5s イージングを ease-in-out 開始待ち時間を 0s 繰り返しを infinite 実行方向は alternate で指定します アニメーション名 ref1anime に対応するタイムライン (@keyframes) を指定します top: -137px; から top: -197px; で上方向へ 60px 移動させます #wrap img:nth-of-type(1) { top: -137px; left: 0px; transform: rotatex(180deg); -webkit-transform: rotatex(180deg); animation: ref1anime 5s ease-in-out 0s infinite alternate; -webkit-animation: ref1anime 5s ease-in-out 0s infinite alternate; @keyframes ref1anime { from { to { top: -197px; @-webkit-keyframes ref1anime { from { to { top: -197px; 2つ目の画像 #wrap img:nth-of-type(2) は右方の反射画像に相当します top: 0px; left: 182px; の位置 (#wrap を起点とした位置 ) で transform: rotatey(180deg); で Y 軸の方向から見て 180 度回転 ( 反転 ) させます アニメーション名を ref2anime 実行時間を 5s イージングを ease-in-out 開始待ち時間を 2.5s 繰り返しを infinite 実行方向は alternate で指定します アニメーション名 ref2anime に対応するタイムライン (@keyframes) を指定します left: 182px; から left: 242px; で右方向へ 60px 移動させます #wrap img:nth-of-type(2) { top: 0px; left: 182px; transform: rotatey(180deg); -webkit-transform: rotatey(180deg); animation: ref2anime 5s ease-in-out 2.5s infinite alternate; -webkit-animation: ref2anime 5s ease-in-out 2.5s infinite alternate; 9

@keyframes ref2anime { from { to { left: 242px; @-webkit-keyframes ref2anime { from { to { left: 242px; 3つ目の画像 #wrap img:nth-of-type(3) は上方の反射画像に相当します top: 137px; left: 0px; の位置 (#wrap を起点とした位置 ) で transform: rotatex(180deg); で X 軸の方向から見て 180 度回転 ( 反転 ) させます アニメーション名を ref3anime 実行時間を 5s イージングを ease-in-out 開始待ち時間を 5s 繰り返しを infinite 実行方向は alternate で指定します アニメーション名 ref3anime に対応するタイムライン (@keyframes) を指定します top: 137px; から top: 197px; で下方向へ 60px 移動させます #wrap img:nth-of-type(3) { top: 137px; left: 0px; transform: rotatex(180deg); -webkit-transform: rotatex(180deg); animation: ref3anime 5s ease-in-out 5s infinite alternate; -webkit-animation: ref3anime 5s ease-in-out 5s infinite alternate; @keyframes ref3anime { from { to { top: 197px; @-webkit-keyframes ref3anime { from { to { top: 197px; 4 つ目の画像 #wrap img:nth-of-type(4) は右方の反射画像に相当します top: 0px; left: -182px; の位置 (#wrap を起点とした位置 ) で transform: rotatey(180deg); で Y 軸の方向 から見て 180 度回転 ( 反転 ) させます アニメーション名を ref4anime 実行時間を 5s イージングを ease-in-out 開始待ち時間 を 7.5s 繰り返しを infinite 実行方向は alternate で指定します アニメーション名 ref4anime に対応するタイムライン (@keyframes) を指定します left: -182px; から left: -242px; で左方向へ 60px 移動させます 10

#wrap img:nth-of-type(4) { top: 0px; left: -182px; transform: rotatey(180deg); -webkit-transform: rotatey(180deg); animation: ref4anime 5s ease-in-out 7.5s infinite alternate; -webkit-animation: ref4anime 5s ease-in-out 7.5s infinite alternate; @keyframes ref4anime { from { to { left: -242px; @-webkit-keyframes ref4anime { from { to { left: -242px; 5 つ目の画像 #wrap img:nth-of-type(5) は中心に表示される画像になります top: 0px; left: 0px; の位置 (#wrap を起点とした位置 ) に置きます #wrap > img:nth-of-type(5) { top: 0px; left: 0px; 反射画像としての画像に被せるグラデーションを描く span 要素の共通のプロパティと値を 指定します width: 180px; height: 135px; で指定します border-radius: 20px; で 4 隅 を丸くします #wrap span { width: 180px; height: 135px; border-radius: 20px; 1 つ目の画像に被せるグラデーションを指定します top: -137px; left: 0px; の位置 (#wrap を起点とした位置 ) で 円形グラデーションの中心が画像の 50% -50%( 左右中央で上辺か ら上方向へ幅の 0.5 倍 ) の位置から円形グラデーションのマスクが掛かるように指定しま す アニメーションの指定は 1 つ目の画像 #wrap img:nth-of-type(1) と同じで アニメー ション名を ref1anime 実行時間を 5s イージングを ease-in-out 開始待ち時間を 0s 繰り返しを infinite 実行方向は alternate で指定します 11

#wrap span:nth-of-type(1) { top: -137px; left: 0px; background-image: radial-gradient(circle at 50% -50%, black, black 60%, transparent); background-image: -webkit-radial-gradient(50% -50%, circle, black, black 60%, transparent); animation: ref1anime 5s ease-in-out 0s infinite alternate; -webkit-animation: ref1anime 5s ease-in-out 0s infinite alternate; 2つ目の画像に被せるグラデーションを指定します top: 0px; left: 182px; の位置 (#wrap を起点とした位置 ) で 円形グラデーションの中心が画像の 150% 50%( 上下中央で左辺から右方向へ幅の 1.5 倍 ) の位置から円形グラデーションのマスクが掛かるように指定します アニメーションの指定は2つ目の画像 #wrap img:nth-of-type(2) と同じで アニメーション名を ref2anime 実行時間を 5s イージングを ease-in-out 開始待ち時間を 2.5s 繰り返しを infinite 実行方向は alternate で指定します #wrap span:nth-of-type(2) { top: 0px; left: 182px; background-image: radial-gradient(circle at 150% 50%, black, black 60%, transparent); background-image: -webkit-radial-gradient(150% 50%, circle, black, black 60%, transparent); animation: ref2anime 5s ease-in-out 2.5s infinite alternate; -webkit-animation: ref2anime 5s ease-in-out 2.5s infinite alternate; 3つ目の画像に被せるグラデーションを指定します top: 137px; left: 0px; の位置 (#wrap を起点とした位置 ) で 円形グラデーションの中心が画像の 50% 150%( 左右中央で上辺から下方向へ高さの 1.5 倍 ) の位置から円形グラデーションのマスクが掛かるように指定します アニメーションの指定は3つ目の画像 #wrap img:nth-of-type(3) と同じで アニメーション名を ref3anime 実行時間を 5s イージングを ease-in-out 開始待ち時間を 5s 繰り返しを infinite 実行方向は alternate で指定します #wrap span:nth-of-type(3) { top: 137px; left: 0px; background-image: radial-gradient(circle at 50% 150%, black, black 60%, transparent); background-image: -webkit-radial-gradient(50% 150%, circle, black, black 60%, transparent); animation: ref3anime 5s ease-in-out 5s infinite alternate; -webkit-animation: ref3anime 5s ease-in-out 5s infinite alternate; 12

4つ目の画像に被せるグラデーションを指定します top: 0px; left: -182px; の位置 (#wrap を起点とした位置 ) で 円形グラデーションの中心が画像の-50% 50%( 上下中央で左辺から左方向へ幅の 0.5 倍 ) の位置から円形グラデーションのマスクが掛かるように指定します アニメーションの指定は4つ目の画像 #wrap img:nth-of-type(4) と同じで アニメーション名を ref1anime 実行時間を 5s イージングを ease-in-out 開始待ち時間を 7.5s 繰り返しを infinite 実行方向は alternate で指定します #wrap span:nth-of-type(4) { top: 0px; left: -182px; background-image: radial-gradient(circle at -50% 50%, black, black 60%, transparent); background-image: -webkit-radial-gradient(-50% 50%, circle, black, black 60%, transparent); animation: ref4anime 5s ease-in-out 7.5s infinite alternate; -webkit-animation: ref4anime 5s ease-in-out 7.5s infinite alternate; 13

サンプル CSS3 -webkit-box-reflect を使わずにテキストの写像のように見せる技このサンプルCSS3もサンプルCSS2と同様にテキスト反射写像ではなく 普通のテキストを 180 度回転させて反射写像のように見せて その上にグラデーションを被せる方法ですが W3C 標準仕様のプロパティだけを使用するので Chrome Safari はもちろんのこと Firefox IE でも反射写像のアニメーションのように見せることができます ReflectAnime5 の説明 HTML の記述 (ReflectAnime5.html) id 属性 stage の div 要素を作り その中に div 要素でボックスを記述します id 属性 ref-text の div 要素を記述し 中に span 要素を3つ記述します 1つ目と2つ目の span 要素にはテキストで Reflection と記述します <!DOCTYPE html> <html> <head> <title>reflectanime5</title> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="reflectanime5.css"> </head> <body> <p> テキストの写像をアニメーションで動かす (5)</p> <div id="stage"> <div id="ref-text"> <span>reflection</span><span>reflection</span><span></span> </body> </html> 14

CSS の記述 (ReflectAnime5.css) #stage ステージのスタイルを指定します 背景色を background-color: #000000; で黒色に指定します 3 番目の span 要素が #stage からはみ出すので overflow: hidden; を指定します #stage { width: 700px; height: 420px; background-color: #000000; position: relative; overflow: hidden; テキストと写像を描く起点となる #ref-text ボックスのスタイルを指定します position は absolute 位置は top: 250px; left: 420px;(#stage ボックスの左上端を起点とした位 置 ) で指定します width と height は指定しないので大きさゼロのボックスになります /*********************************************************************/ /* ref-text については -webkit-box-reflect を使用していない ( 拡大 縮小 傾斜ができないため ) */ #ref-text { top: 250px; left: 420px; #ref-text > span:nth-child(1) 要素のスタイルを指定します テキスト文字 Reflection のスタイルになります position は absolute 位置は top: 0px; left: 0px; (#ref-text ボックスの左上端を起点とした位置 ) で指定します width は 230px height は 50px で指定します テキストのフォントなどの指定をします アニメーション名を ref3anime1 実行時間を 8s イージングを ease-in-out 開始待ち時間を 0s 繰り返しを infinite 実行方向は alternate で指定します #ref-text > span:nth-child(1) { top: 0px; left: 0px; width: 230px; height: 50px; text-align: center; font: bold 48px "MS P ゴシック ", Osaka, " ヒラギノ角ゴ Pro", Verdana; line-height: 66px; color: lightgray; 15

animation: ref3anime1 8s ease-in-out 0s infinite alternate; -webkit-animation: ref3anime1 8s ease-in-out 0s infinite alternate; #ref-text > span:nth-child(2) 要素のスタイルを指定します 写像のテキスト文字 Reflection のスタイルになります position は absolute 位置は top: 50px; left: 0px; (#ref-text ボックスの左上端を起点とした位置 ) で指定します width は 230px height は 50px で指定します テキストのフォントなどの指定をします line-height: 60px; にしているので注意してください transform: perspective(500px) rotatex(60deg) scale(1.1, -2.5); とし scale(1.1, -2.5) で横方向を 1.1 倍 縦方向を-2.5 倍に拡大させ テキスト文字を上下反転 ( 縦方向を-2.5 倍と負の数値にすることで上下反転します ) させます rotatex(60deg) で文字を傾け perspective(500px) で遠近感を出します アニメーション名を ref3anime2 実行時間を 8s イージングを ease-in-out 開始待ち時間を 0s 繰り返しを infinite 実行方向は alternate で指定します #ref-text > span:nth-child(2) { top: 50px; left: 0px; width: 230px; height: 50px; text-align: center; font: bold 48px "MS P ゴシック ", Osaka, " ヒラギノ角ゴ Pro", Verdana; line-height: 60px; color: lightgray; transform: perspective(500px) rotatex(60deg) scale(1.1, -2.5); -webkit-transform: perspective(500px) rotatex(60deg) scale(1.1, -2.5); animation: ref3anime2 8s ease-in-out 0s infinite alternate; -webkit-animation: ref3anime2 8s ease-in-out 0s infinite alternate; #ref-text > span:nth-child(3) 要素のスタイルを指定します 写像のテキスト文字に重ねるグラデーションになります position は absolute 位置は top: 50px; left: 0px; (#ref-text ボックスの左上端を起点とした位置 ) で指定します width は 230px height は 50px で指定します 背景色に 最上部が透明色で下へ向かって徐々に黒くなるようにグラデーションの指定をします 16

transform: perspective(500px) rotatex (60deg) scale(1.1, -2.5); とし scale(1.1, -2.5) で横方向を 1.1 倍 縦方向を-2.5 倍に拡大させ グラデーションを上下反転 ( 縦方向を-2.5 倍と負の数値にすることで上下反転します ) させます rotatex(60deg) でグラデーションを傾け perspective (500px) で遠近感を出します アニメーション名を ref3anime3 実行時間を 8s イージングを ease-in-out 開始待ち時間を 0s 繰り返しを infinite 実行方向は alternate で指定します #ref-text > span:nth-child(3) { top: 50px; left: 0px; width: 230px; height: 50px; background-image: linear-gradient(to top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.5) 30%, rgba(0, 0, 0, 0.8) 60%, rgba(0, 0, 0, 1)); background-image: -webkit-linear-gradient(bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.5) 30%, rgba(0, 0, 0, 0.8) 60%, rgba(0, 0, 0, 1)); transform: perspective(500px) rotatex(60deg) scale(1.1, -2.5); -webkit-transform: perspective(500px) rotatex(60deg) scale(1.1, -2.5); animation: ref3anime3 8s ease-in-out 0s infinite alternate; -webkit-animation: ref3anime3 8s ease-in-out 0s infinite alternate; アニメーション名 ref3anime1 に対応するタイムライン (@keyframes) を指定して テキス ト文字 Reflection を移動させます from から to の間に top: 0px; left: 0px; から top: -200px; left: -350px; へ変化させます @keyframes ref3anime1 { from { to { top: -200px; left: -350px; @-webkit-keyframes ref3anime1 { from { to { top: -200px; left: -350px; アニメーション名 ref3anime2 に対応するタイムライン (@keyframes) を指定して 写像の 17

テキスト文字 Reflection を変化させます from から to の間に top: 50px; left: 0px; から top: 70px; left: -350px; へ移動させ opacity: 0.2; で半透明にして scale(1.5, -4.5); で拡大し テキスト文字の色を color: dimgray;( 暗い灰色 ) にして 文字の周りに影をつけてぼかします @keyframes ref3anime2 { from { to { top: 70px; left: -350px; opacity: 0.2; transform: perspective(500px) rotatex(60deg) scale(1.5, -4.5); color: dimgray; text-shadow: 1px 1px 10px dimgray, -1px 1px 10px dimgray, 1px -1px 10px dimgray, -1px -1px 10px dimgray; @-webkit-keyframes ref3anime2 { from { to { top: 70px; left: -350px; opacity: 0.2; -webkit-transform: perspective(500px) rotatex(60deg) scale(1.5, -4.5); color: dimgray; text-shadow: 1px 1px 10px dimgray, -1px 1px 10px dimgray, 1px -1px 10px dimgray, -1px -1px 10px dimgray; アニメーション名 ref3anime3 に対応するタイムライン (@keyframes) を指定して グラデーションを変化させます from から to の間に top: 50px; left: 0px; から top: 70px; left: -370px; へ移動させ top: width: 230px; から width: 270px; へ変化させ scale(1.5, -4.5); で拡大します @keyframes ref3anime3 { from { to { top: 70px; left: -370px; width: 270px; transform: perspective(500px) rotatex(60deg) scale(1.5, -4.5); @-webkit-keyframes ref3anime3 { from { to { top: 70px; left: -370px; width: 270px; -webkit-transform: perspective(500px) rotatex(60deg) scale(1.5, -4.5); 18