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

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

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

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

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

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

サンプル 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

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

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

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

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

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

Color Change

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

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

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

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

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

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

1222-A Transform Function Order (trsn

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

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

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

Color Change

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

1222-A Transform Function Order (trsn

1221 Transitionの指定項目

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

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

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

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

1221 Transitionの指定項目

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

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

1222-A Transform Function Order (trsn

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

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

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

Web 設計入門

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

Web 設計入門

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

Webデザイン論

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

Moshimo Challenge Report

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

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

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

PowerPoint プレゼンテーション

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

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

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

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

第6回 CSS入門(つづき)

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

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.

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

css.pdf

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

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

■新聞記事

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


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

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

Microsoft PowerPoint _2b-DOM.pptx

6 2 1

2. 以下の設問に答えよ 第 11 問 アルファチャンネルの説明として適切なものを 以下より 1 つ選択しなさい 1. 画像の彩度を扱うためのデータ領域 2. 画像の透過度を扱うためのデータ領域 3. 画像の圧縮前のデータを保存した領域 4. 画像の圧縮後のデータを保存した領域 第 12 問 プロポ

1

ch31.dvi

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

HTML5 CSS

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

JavaScript 演習 2 1

PowerPoint Presentation

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

年刊EDP 2003

超簡単にWebページを作成

extCountdown.pdf

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

第2回 Web文書

立ち読みページ

Web09

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

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

8 7 + <div class='col-12 col-md-8'> 8 <%= item.description %> 9 </div> 10 </div> 11 <% end %> 12 </div> class container container-fluid PicoPlan

目次 概要... 2 フォームレイアウトデザイナー機能の設定... 3 設定したフォームレイアウトデザイナーの確認...14 その他スタイルの設定...15 フォームレイアウトデザイナーをエクスポート...17 フォームレイアウトデザイナーをインポート...18 インポート時の制限事項...19 リ


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

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

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

JavaScript演習

< F2D D834F834A E837D E6A7464>

Web概論

1/2

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

27短01研01斉藤.indd


フォームとインナー HTML を使って動的にページ内の文章を変更しよう 問題 1. つぎの指示と画面を参考に HTML を組みなさい 仕様 テキストボックスに任意の文字を入力し [ コメント ] ボタンをクリックすると 下部の文章がテキストボックスの内容に置き換わる フォーム名 : f1 テキストボ

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

Transcription:

1330-2 Radial Gradation のアニメーション (2) 背景 (background) を円形グラデーション (Radial Gradation) のアニメーションにして みましょう radial-gradient と repeating-radial-gradient の仕様は 別本 Transition を使いこな す編 の 1238-1 円形グラデーション Radial Gradation (radial-gradient) を参照し てください radial-gradient( ) 関数または repeating-radial-gradient( ) 関数は background-image プロパティ ( または background プロパティで一括指定した中の background-image) の値として指定します W3C 仕様では background-image プロパティはアニメーションできないようになっているので transition プロパティや animation プロパティでアニメーションにすることができません ( グラデーションのアニメーションは多用されそうですが 残念ですが現在の仕様ではできません 将来 仕様に取り込まれるかもしれませんが ) そこで どうしてもグラデーションのアニメーションを作りたいので 別の方法であたかもアニメーションのように見せることにします サンプル CSS1 テキストの背景を円形グラデーションにして変化させる (1) (webkit 仕様 ) (W3C 仕様 ) 1

( 注 )Safari (webkit 系ブラウザ ) と Chrome(webkit にも対応 ) は テキストの輪郭や色を -webkit-text-stroke-width -webkit-text-stroke-color -webkit-text-fill-color のプロパティで描くことができますが W3C 仕様には同様の機能がないので webkit 系以外のブラウザ (Firefox IE など ) はテキストの色を color プロパティで指定するだけになります 背景の円形グラデーションをアニメーションのように見せる方法は opacity プロパティを利用する方法です RadialGradAndTextAnime1 の説明 HTML の記述 (RadialGradAndTextAnime1.html) id 属性 stage の div 要素 ( アニメーションが動くステージ ) を作り その中にボックスや画像を記述します id 属性 div1 の div 要素の中に <span> タグで span 要素を6つ記述します id 属性 text1 の div 要素の中にテキスト文字を記述します <!DOCTYPE html> <html> <head> <title>radialgradandtextanime1</title> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="radialgradandtextanime1.css"> </head> <body> <p> 背景を円形グラデーションでアニメーションさせる (1)</p> <div id="stage"> <div id="div1"> <span></span><span></span><span></span><span></span><span></span><span></span> </div> <div id="text1">abc<br>defghij<br>klmnop<br>qrstuv<br>wxyz</div> </div> </body> </html> CSS の記述 (RadialGradAndTextAnime1.css) #stage ステージのスタイルを指定します #stage ステージは width: 550px; height: 550px; を指定します #stage { width: 550px; height: 550px; position: relative; 2

#div1 ボックスを記述します width は 550px height は 550px にします #div1 { top:0px; left: 0px; width: 550px; height: 550px; position: absolute; #div1 ボックスの子要素として6つの span 要素を記述しますが 各 span 要素に共通のプロパティをまとめて指定します top は 0px left は 0px で width は 550px height は 550px にします グラデーションの変化を opacity プロパティの値を変化させて行うので 値が 0と1の変化の途中で #div1 ボックスの黒い背景色が透けて見えて画像が暗くならないように background-color: white; で指定します position: absolute; で指定します opacity を opacity: 0.0; で指定します #div1 span { top: 0px; left: 0px; width: 550px; height: 550px; background-color: white; position: absolute; opacity: 0.0; 以降は 各 span 要素で異なるプロパティを指定します #div1 ボックスの子要素の1 番目の span 要素を記述します span 要素の background-image プロパティを radial-gradient( ) 関数を使用して farthest-corner at 50% 50%(webkit 系ブラウザは 50% 50%, farthest-corner) で span 要素の中心から4 隅の角に向かって紫色 (#FF00FF) 青色 (#0000FF) 水色 (#00FFFF) 緑色(#00FF00) 黄色 (#FFFF00) 赤色 (#FF0000) に指定します アニメーション名を grad1anime 実行時間を 10s イージングを linear 開始待ち時間を 0s 繰り返しを infinite 実行方向は normal で指定します #div1 > span:nth-child(1) { background-image: radial-gradient(farthest-corner at 50% 50%, #FF00FF, #0000FF, #00FFFF, #00FF00, #FFFF00, #FF0000); background-image: -webkit-radial-gradient(50% 50%, farthest-corner, #FF00FF, #0000FF, #00FFFF, #00FF00, #FFFF00, #FF0000); animation: grad1anime 10s linear 0s infinite normal; -webkit-animation: grad1anime 10s linear 0s infinite normal; 3

#div1 ボックスの子要素の2 番目から6 番目の span 要素は 1 番目の span 要素と background-image プロパティのグラデーションの色の順番とアニメーション名だけが違います 2 番目の span 要素を記述します グラデーションの色の順番は 1つ分ずらして赤色 (#FF0000) 紫色 (#FF00FF) 青色 (#0000FF) 水色(#00FFFF) 緑色 (#00FF00) 黄色 (#FFFF00) に指定します アニメーション名を grad2anime と指定します #div1 > span:nth-child(2) { background-image: radial-gradient(farthest-corner at 50% 50%, #FF0000, #FF00FF, #0000FF, #00FFFF, #00FF00, #FFFF00); background-image: -webkit-radial-gradient(50% 50%, farthest-corner, #FF0000, #FF00FF, #0000FF, #00FFFF, #00FF00, #FFFF00); animation: grad2anime 10s linear 0s infinite normal; -webkit-animation: grad2anime 10s linear 0s infinite normal; 3 番目の span 要素を記述します グラデーションの色の順番は さらに 1 つ分ずらして黄 色 (#FFFF00) 赤色 (#FF0000) 紫色 (#FF00FF) 青色 (#0000FF) 水色 (#00FFFF) 緑 色 (#00FF00) に指定します アニメーション名を grad3anime と指定します #div1 > span:nth-child(3) { background-image: radial-gradient(farthest-corner at 50% 50%, #FFFF00, #FF0000, #FF00FF, #0000FF, #00FFFF, #00FF00); background-image: -webkit-radial-gradient(50% 50%, farthest-corner, #FFFF00, #FF0000, #FF00FF, #0000FF, #00FFFF, #00FF00); animation: grad3anime 10s linear 0s infinite normal; -webkit-animation: grad3anime 10s linear 0s infinite normal; 4 番目の span 要素を記述します グラデーションの色の順番は さらに 1 つ分ずらして緑 色 (#00FF00) 黄色 (#FFFF00) 赤色 (#FF0000) 紫色 (#FF00FF) 青色 (#0000FF) 水 色 (#00FFFF) に指定します アニメーション名を grad4anime と指定します #div1 > span:nth-child(4) { background-image: radial-gradient(farthest-corner at 50% 50%, #00FF00, #FFFF00, #FF0000, #FF00FF, #0000FF, #00FFFF); background-image: -webkit-radial-gradient(50% 50%, farthest-corner, #00FF00, #FFFF00, #FF0000, #FF00FF, #0000FF, #00FFFF); animation: grad4anime 10s linear 0s infinite normal; -webkit-animation: grad4anime 10s linear 0s infinite normal; 4

5 番目の span 要素を記述します グラデーションの色の順番は さらに 1 つ分ずらして水 色 (#00FFFF) 緑色 (#00FF00) 黄色 (#FFFF00) 赤色 (#FF0000) 紫色 (#FF00FF) 青 色 (#0000FF) に指定します アニメーション名を grad5anime と指定します #div1 > span:nth-child(5) { background-image: radial-gradient(farthest-corner at 50% 50%, #00FFFF, #00FF00, #FFFF00, #FF0000, #FF00FF, #0000FF); background-image: -webkit-radial-gradient(50% 50%, farthest-corner, #00FFFF, #00FF00, #FFFF00, #FF0000, #FF00FF, #0000FF); animation: grad5anime 10s linear 0s infinite normal; -webkit-animation: grad5anime 10s linear 0s infinite normal; 6 番目の span 要素を記述します グラデーションの色の順番は さらに 1 つ分ずらして青 色 (#0000FF) 水色 (#00FFFF) 緑色 (#00FF00) 黄色 (#FFFF00) 赤色 (#FF0000) 紫 色 (#FF00FF) に指定します アニメーション名を grad6anime と指定します #div1 > span:nth-child(6) { background-image: radial-gradient(farthest-corner at 50% 50%, #0000FF, #00FFFF, #00FF00, #FFFF00, #FF0000, #FF00FF); background-image: -webkit-radial-gradient(50% 50%, farthest-corner, #0000FF, #00FFFF, #00FF00, #FFFF00, #FF0000, #FF00FF); animation: grad6anime 10s linear 0s infinite normal; -webkit-animation: grad6anime 10s linear 0s infinite normal; #text1 ボックスを記述します top は 0px left は 0px で width は 550px height は 520px にします テキスト文字を #div1 ボックスの中央に置きたいので 横方向は text-align: center; で中央に指定し 縦方向は span 要素のパディングを padding-top: 30px; で指定しています ( そのため height は 30px ずつ減らして #div1 ボックスの中央に収まるようにしています )-webkit-text-stroke-width: 3px; -webkit-text-stroke -color: white; -webkit-text-fill-color: black; で文字の輪郭を描いています ( これは Chrome と Safari だけの機能です 下の CSS には-webkit-の付いていない text-stroke-width: 3px; text-stroke-color: white; text-fill-color: black; も指定していますが 実際には機能しません W3C 仕様にも取り込んでほしい機能です ) #text1 { top: 0px; left: 0px; width: 550px; height: 520px; /* TEXT を中央に配置するため padding-top を 30px に指定しているので ボックスも下方向に 30px はみ出す為 height を 30px 減らしている */ 5

padding-top: 30px; text-align: center; font: bold 96px "MS P ゴシック ", Osaka, " ヒラギノ角ゴ Pro", Verdana; color: black; text-stroke-width: 3px; text-stroke-color: white; text-fill-color: black; -webkit-text-stroke-width: 3px; -webkit-text-stroke-color: white; -webkit-text-fill-color: black; position: absolute; アニメーション名 grad1anime から grad6anime に対応するタイムライン (@keyframes) を指定します タイムラインを6 分割 ( グラデーションの span の数 ) し grad1anime は6 分割の1 番目の時間で opacity: 1.0; にしてグラデーションが見えるようにします 次に grad2anime は6 分割の2 番目の時間で opacity: 1.0; にしてグラデーションが見えるようにします 同じように grad3anime から grad6anime も 6 分割の3 番目の時間から6 番目の時間で opacity: 1.0; にしてグラデーションが見えるようにします grad1anime と grad6anime は他タイムラインと少し違うところがあります grad1anime は タイムラインの6 番目の時間にも opacity: 1.0; にして 徐々に見えるようにします grad6anime は タイムラインの6 番目の時間を opacity: 0.0; にして 徐々に見えなくなるようにします これであたかもレインボーカラーが永久に繰り返すように見えます /* grad1anime ************************************************************/ @keyframes grad1anime { from { opacity: 1.0; 17% { opacity: 1.0; 34% { opacity: 0.0; 51% { opacity: 0.0; 68% { opacity: 0.0; 84% { opacity: 0.0; to { opacity: 1.0; @-webkit-keyframes grad1anime { from { opacity: 1.0; 17% { opacity: 1.0; 34% { opacity: 0.0; 51% { opacity: 0.0; 68% { opacity: 0.0; 84% { opacity: 0.0; to { opacity: 1.0; 6

/* grad2anime ************************************************************/ @keyframes grad2anime { from { opacity: 0.0; 17% { opacity: 1.0; 34% { opacity: 1.0; 51% { opacity: 0.0; 68% { opacity: 0.0; 84% { opacity: 0.0; to { opacity: 0.0; @-webkit-keyframes grad2anime { from { opacity: 0.0; 17% { opacity: 1.0; 34% { opacity: 1.0; 51% { opacity: 0.0; 68% { opacity: 0.0; 84% { opacity: 0.0; to { opacity: 0.0; /* grad3anime ************************************************************/ @keyframes grad3anime { from { opacity: 0.0; 17% { opacity: 0.0; 34% { opacity: 1.0; 51% { opacity: 1.0; 68% { opacity: 0.0; 84% { opacity: 0.0; to { opacity: 0.0; @-webkit-keyframes grad3anime { from { opacity: 0.0; 17% { opacity: 0.0; 34% { opacity: 1.0; 51% { opacity: 1.0; 68% { opacity: 0.0; 84% { opacity: 0.0; to { opacity: 0.0; /* grad4anime ************************************************************/ @keyframes grad4anime { from { opacity: 0.0; 17% { opacity: 0.0; 34% { opacity: 0.0; 51% { opacity: 1.0; 68% { opacity: 1.0; 84% { opacity: 0.0; to { opacity: 0.0; @-webkit-keyframes grad4anime { from { opacity: 0.0; 17% { opacity: 0.0; 7

34% { opacity: 0.0; 51% { opacity: 1.0; 68% { opacity: 1.0; 84% { opacity: 0.0; to { opacity: 0.0; /* grad5anime ************************************************************/ @keyframes grad5anime { from { opacity: 0.0; 17% { opacity: 0.0; 34% { opacity: 0.0; 51% { opacity: 0.0; 68% { opacity: 1.0; 84% { opacity: 1.0; to { opacity: 0.0; @-webkit-keyframes grad5anime { from { opacity: 0.0; 17% { opacity: 0.0; 34% { opacity: 0.0; 51% { opacity: 0.0; 68% { opacity: 1.0; 84% { opacity: 1.0; to { opacity: 0.0; /* grad6anime ************************************************************/ @keyframes grad6anime { from { opacity: 0.0; 17% { opacity: 0.0; 34% { opacity: 0.0; 51% { opacity: 0.0; 68% { opacity: 0.0; 84% { opacity: 1.0; to { opacity: 0.0; @-webkit-keyframes grad6anime { from { opacity: 0.0; 17% { opacity: 0.0; 34% { opacity: 0.0; 51% { opacity: 0.0; 68% { opacity: 0.0; 84% { opacity: 1.0; to { opacity: 0.0; 8

サンプル CSS2 テキストの背景を円形グラデーションにして変化させる (2) (webkit 仕様 ) (W3C 仕様 ) ( 注 )Safari (webkit 系ブラウザ ) と Chrome(webkit にも対応 ) は テキストの輪郭や色を -webkit-text-stroke-width -webkit-text-stroke-color -webkit-text-fill-color のプロパティで描くことができますが W3C 仕様には同様の機能がないので webkit 系以外のブラウザ (Firefox IE など ) はテキストの色を color プロパティで指定するだけになります 背景の円形グラデーションをアニメーションのように見せる方法は opacity プロパティを利用する方法です RadialGradAndTextAnime3 の説明 HTML の記述 (RadialGradAndTextAnime3.html) id 属性 stage の div 要素 ( アニメーションが動くステージ ) を作り その中にボックスや画像を記述します id 属性 div1 の div 要素の中に <span> タグで span 要素を6つ記述します id 属性 text1 の div 要素の中にテキスト文字を記述します <!DOCTYPE html> <html> <head> <title>radialgradandtextanime3</title> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="radialgradandtextanime3.css"> </head> <body> <p> 背景を円形グラデーションでアニメーションさせる (3)</p> 9

<div id="stage"> <div id="div1"> <span></span><span></span><span></span><span></span><span></span><span></span> </div> <div id="text1">abc<br>defghij<br>klmnopq<br>rstuvw<br>xyz</div> </div> </body> </html> CSS の記述 (RadialGradAndTextAnime3.css) #stage ステージのスタイルを指定します #stage ステージは width: 550px; height: 550px; を指定します #stage { width: 550px; height: 550px; position: relative; #div1 ボックスを記述します width は 550px height は 550px にします border-radius: 50%; と指定して円形にします #div1 { top: 0px; left: 0px; width: 550px; height: 550px; border-radius: 50%; position: absolute; #div1 ボックスの子要素の1 番目の span 要素を記述します top は 0px left は 0px で width は 550px height は 530px にします border-radius: 50%; と指定して円形にします span 要素の background-image プロパティを radial-gradient( ) 関数を使用して farthest-corner at 50% 50%(webkit 系ブラウザは 50% 50%, farthest-corner) で span 要素の中心から4 隅の角に向かって紫色 (#FF00FF) 青色 (#0000FF) 水色(#00FFFF) 緑色 (#00FF00) 黄色 (#FFFF00) 赤色 (#FF0000) に指定します opacity: 0.0; と指定して 見えないようにしておきます アニメーション名を grad1anime 実行時間を 10s イージングを linear 開始待ち時間を 0s 繰り返しを infinite 実行方向は normal で指定します 10

#div1 > span:nth-child(1) { top: 0px; left: 0px; width: 550px; height: 550px; border-radius: 50%; background-color: black; background-image: radial-gradient(farthest-side at 50% 50%, #FF00FF, #0000FF, #00FFFF, #00FF00, #FFFF00, #FF0000); background-image: -webkit-radial-gradient(50% 50%, farthest-side, #FF00FF, #0000FF, #00FFFF, #00FF00, #FFFF00, #FF0000); position: absolute; opacity: 0.0; animation: grad1anime 10s linear 0s infinite normal; -webkit-animation: grad1anime 10s linear 0s infinite normal; #div1 ボックスの子要素の2 番目から6 番目の span 要素は 1 番目の span 要素と background-image プロパティのグラデーションの色の順番とアニメーション名だけが違います 2 番目の span 要素を記述します グラデーションの色の順番は 1つ分ずらして赤色 (#FF0000) 紫色 (#FF00FF) 青色 (#0000FF) 水色(#00FFFF) 緑色 (#00FF00) 黄色 (#FFFF00) に指定します アニメーション名を grad2anime と指定します #div1 > span:nth-child(2) { background-image: radial-gradient(farthest-corner at 50% 50%, #FF0000, #FF00FF, #0000FF, #00FFFF, #00FF00, #FFFF00); background-image: -webkit-radial-gradient(50% 50%, farthest-corner, #FF0000, #FF00FF, #0000FF, #00FFFF, #00FF00, #FFFF00); animation: grad2anime 10s linear 0s infinite normal; -webkit-animation: grad2anime 10s linear 0s infinite normal; 3 番目の span 要素を記述します グラデーションの色の順番はさらに 1 つ分ずらして黄色 (#FFFF00) 赤色 (#FF0000) 紫色 (#FF00FF) 青色 (#0000FF) 水色 (#00FFFF) 緑色 (#00FF00) に指定します アニメーション名を grad3anime と指定します #div1 > span:nth-child(3) { background-image: radial-gradient(farthest-corner at 50% 50%, #FFFF00, #FF0000, #FF00FF, #0000FF, #00FFFF, #00FF00); 11

background-image: -webkit-radial-gradient(50% 50%, farthest-corner, #FFFF00, #FF0000, #FF00FF, #0000FF, #00FFFF, #00FF00); animation: grad3anime 10s linear 0s infinite normal; -webkit-animation: grad3anime 10s linear 0s infinite normal; 4 番目の span 要素を記述します グラデーションの色の順番は さらに 1 つ分ずらして緑 色 (#00FF00) 黄色 (#FFFF00) 赤色 (#FF0000) 紫色 (#FF00FF) 青色 (#0000FF) 水 色 (#00FFFF) に指定します アニメーション名を grad4anime と指定します #div1 > span:nth-child(4) { background-image: radial-gradient(farthest-corner at 50% 50%, #00FF00, #FFFF00, #FF0000, #FF00FF, #0000FF, #00FFFF); background-image: -webkit-radial-gradient(50% 50%, farthest-corner, #00FF00, #FFFF00, #FF0000, #FF00FF, #0000FF, #00FFFF); animation: grad4anime 10s linear 0s infinite normal; -webkit-animation: grad4anime 10s linear 0s infinite normal; 5 番目の span 要素を記述します グラデーションの色の順番は さらに 1 つ分ずらして水 色 (#00FFFF) 緑色 (#00FF00) 黄色 (#FFFF00) 赤色 (#FF0000) 紫色 (#FF00FF) 青 色 (#0000FF) に指定します アニメーション名を grad5anime と指定します #div1 > span:nth-child(5) { background-image: radial-gradient(farthest-corner at 50% 50%, #00FFFF, #00FF00, #FFFF00, #FF0000, #FF00FF, #0000FF); background-image: -webkit-radial-gradient(50% 50%, farthest-corner, #00FFFF, #00FF00, #FFFF00, #FF0000, #FF00FF, #0000FF); animation: grad5anime 10s linear 0s infinite normal; -webkit-animation: grad5anime 10s linear 0s infinite normal; 6 番目の span 要素を記述します グラデーションの色の順番は さらに 1 つ分ずらして青 色 (#0000FF) 水色 (#00FFFF) 緑色 (#00FF00) 黄色 (#FFFF00) 赤色 (#FF0000) 紫 12

色 (#FF00FF) に指定します アニメーション名を grad6anime と指定します #div1 > span:nth-child(6) { background-image: radial-gradient(farthest-corner at 50% 50%, #0000FF, #00FFFF, #00FF00, #FFFF00, #FF0000, #FF00FF); background-image: -webkit-radial-gradient(50% 50%, farthest-corner, #0000FF, #00FFFF, #00FF00, #FFFF00, #FF0000, #FF00FF); animation: grad6anime 10s linear 0s infinite normal; -webkit-animation: grad6anime 10s linear 0s infinite normal; #text1 ボックスを記述します top は 0px left は 0px で width は 550px height は 520px にします テキスト文字を # text1 ボックスの中央に置きたいので padding-top: 30px; を指定しています ( そのため height は 30px 減らして # text1 ボックスに収まるようにしています )-webkit-text-stroke-width: 3px; -webkit-text-stroke-color: white; -webkit-text-fill-color: black; で文字の輪郭を描いています ( これは Chrome と Safari だけの機能です 下の CSS には-webkit-の付いていない text-stroke-width: 3px; text-stroke-color: white; text-fill-color: black; も指定していますが 実際には機能しません W3C 仕様にも取り込んでほしい機能です ) #text1 { top: 0px; left: 0px; width: 550px; height: 520px; /* TEXT を中央に配置するため padding-top を 30px に指定しているので ボックスも下方向に 30px はみ出す為 height を 30px 減らしている */ padding-top: 30px; text-align: center; font: bold 96px "MS P ゴシック ", Osaka, " ヒラギノ角ゴ Pro", Verdana; color: black; text-stroke-width: 3px; text-stroke-color: white; text-fill-color: black; -webkit-text-stroke-width: 3px; -webkit-text-stroke-color: white; -webkit-text-fill-color: black; position: absolute; アニメーション名 grad1anime から grad6anime に対応するタイムライン (@keyframes) を 13

指定します タイムラインを6 分割 ( グラデーションの span の数 ) し grad1anime は6 分割の1 番目の時間で opacity: 1.0; にしてグラデーションが見えるようにします 次に grad2anime は6 分割の2 番目の時間で opacity: 1.0; にしてグラデーションが見えるようにします 同じように grad3anime から grad6anime も 6 分割の3 番目の時間から6 番目の時間で opacity: 1.0; にしてグラデーションが見えるようにします grad1anime と grad6anime は他タイムラインと少し違うところがあります grad1anime は タイムラインの6 番目の時間にも opacity: 1.0; にして 徐々に見えるようにします grad6anime は タイムラインの6 番目の時間を opacity: 0.0; にして 徐々に見えなくなるようにします これであたかもレインボーカラーが永久に繰り返すように見えます /* grad1anime ************************************************************/ @keyframes grad1anime { from { opacity: 1.0; 17% { opacity: 1.0; 34% { opacity: 0.0; 51% { opacity: 0.0; 68% { opacity: 0.0; 84% { opacity: 0.0; to { opacity: 1.0; @-webkit-keyframes grad1anime { from { opacity: 1.0; 17% { opacity: 1.0; 34% { opacity: 0.0; 51% { opacity: 0.0; 68% { opacity: 0.0; 84% { opacity: 0.0; to { opacity: 1.0; /* grad2anime ************************************************************/ @keyframes grad2anime { from { opacity: 0.0; 17% { opacity: 1.0; 34% { opacity: 1.0; 51% { opacity: 0.0; 68% { opacity: 0.0; 84% { opacity: 0.0; to { opacity: 0.0; @-webkit-keyframes grad2anime { from { opacity: 0.0; 17% { opacity: 1.0; 34% { opacity: 1.0; 51% { opacity: 0.0; 68% { opacity: 0.0; 84% { opacity: 0.0; to { opacity: 0.0; 14

/* grad3anime ************************************************************/ @keyframes grad3anime { from { opacity: 0.0; 17% { opacity: 0.0; 34% { opacity: 1.0; 51% { opacity: 1.0; 68% { opacity: 0.0; 84% { opacity: 0.0; to { opacity: 0.0; @-webkit-keyframes grad3anime { from { opacity: 0.0; 17% { opacity: 0.0; 34% { opacity: 1.0; 51% { opacity: 1.0; 68% { opacity: 0.0; 84% { opacity: 0.0; to { opacity: 0.0; /* grad4anime ************************************************************/ @keyframes grad4anime { from { opacity: 0.0; 17% { opacity: 0.0; 34% { opacity: 0.0; 51% { opacity: 1.0; 68% { opacity: 1.0; 84% { opacity: 0.0; to { opacity: 0.0; @-webkit-keyframes grad4anime { from { opacity: 0.0; 17% { opacity: 0.0; 34% { opacity: 0.0; 51% { opacity: 1.0; 68% { opacity: 1.0; 84% { opacity: 0.0; to { opacity: 0.0; /* grad5anime ************************************************************/ @keyframes grad5anime { from { opacity: 0.0; 17% { opacity: 0.0; 34% { opacity: 0.0; 51% { opacity: 0.0; 68% { opacity: 1.0; 84% { opacity: 1.0; to { opacity: 0.0; @-webkit-keyframes grad5anime { from { opacity: 0.0; 17% { opacity: 0.0; 34% { opacity: 0.0; 15

51% { opacity: 0.0; 68% { opacity: 1.0; 84% { opacity: 1.0; to { opacity: 0.0; /* grad6anime ************************************************************/ @keyframes grad6anime { from { opacity: 0.0; 17% { opacity: 0.0; 34% { opacity: 0.0; 51% { opacity: 0.0; 68% { opacity: 0.0; 84% { opacity: 1.0; to { opacity: 0.0; @-webkit-keyframes grad6anime { from { opacity: 0.0; 17% { opacity: 0.0; 34% { opacity: 0.0; 51% { opacity: 0.0; 68% { opacity: 0.0; 84% { opacity: 1.0; to { opacity: 0.0; サンプル CSS3 テキスト文字の中に背景の円形グラデーションを抜き出して変化させる (1) 注意 :Chrome Safari Microsoft Edge だけの機能です (2016 年 4 月 24 日現在 ) (webkit 仕様 ) (W3C 仕様 ) 16

Safari (webkit 系ブラウザ ) と Chrome(webkit にも対応 ) はテキストの輪郭や色を -webkit-text-stroke-width -webkit-text-stroke-color -webkit-text-fill-color のプロパティで描くことができますが W3C 仕様には同様の機能がないので webkit 系以外のブラウザ (Firefox IE など ) はテキストの色を color プロパティで指定するだけになります また webkit 系ブラウザは-webkit-text-fill-color に transparent( 透明 ) を指定して -webkit-background-clip プロパティの値に text を指定すると text 文字の形に合わせて背景を抜き出すことができますが webkit 系以外のブラウザは text の指定ができません Microsoft Edge は webkit 系ブラウザではありませんが -webkit-text-fill-color プロパティと-webkit-background-clip プロパティについては ベンダープリフィックスが -webkit-であるにも関わらず対応してくれているようです ですから-webkit-text-fill- color に transparent( 透明 ) を指定して -webkit-background-clip プロパティの値に text を指定すると text 文字の形に合わせて背景を抜き出すことができます ( やるじゃないですか Microsoft Edge) 背景の線形グラデーションをアニメーションのように見せる方法は opacity プロパティを 利用する方法です RadialGradInTextAnime1 の説明 HTML の記述 (RadialGradInTextAnime1.html) id 属性 stage の div 要素 ( アニメーションが動くステージ ) を作り その中にボックスや画像を記述します id 属性 div1 の div 要素の中に <span> タグで span 要素を6つ記述し それぞれの span 要素は 中にテキスト文字を記述します <!DOCTYPE html> <html> <head> <title>radialgradintextanime1</title> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="radialgradintextanime1.css"> </head> <body> <p> 文字の内容を 円形グラデーションでアニメーションさせる (1)</p> <div id="stage"> <div id="div1"> <span>abc<br>defghij<br>klmnop<br>qrstuv<br>wxyz</span> <span>abc<br>defghij<br>klmnop<br>qrstuv<br>wxyz</span> <span>abc<br>defghij<br>klmnop<br>qrstuv<br>wxyz</span> 17

<span>abc<br>defghij<br>klmnop<br>qrstuv<br>wxyz</span> <span>abc<br>defghij<br>klmnop<br>qrstuv<br>wxyz</span> <span>abc<br>defghij<br>klmnop<br>qrstuv<br>wxyz</span> </div> </div> </body> </html> CSS の記述 (RadialGradInTextAnime1.css) #stage ステージのスタイルを指定します #stage ステージは width: 450px; height: 550px; を指定します #stage { width: 450px; height: 550px; position: relative; #div1 ボックスを記述します width は 550px height は 550px にします background-color: black; を指定します #div1 { top: 0px; left: 0px; width: 550px; height: 550px; background-color: black; position: absolute; #div1 ボックスの子要素の 1 番目の span 要素を記述します top は 0px left は 0px で width は 420px height は 520px にします テキスト文字を #div1 ボックスの中央に置きた いので span 要素のパディングを padding: 30px 0px 0px 30px; で指定しています ( その ため width と height は 30px ずつ減らして #div1 ボックスに収まるようにしています ) span 要素の background-image プロパティを repeating-linear-gradient( ) 関数を使用し て上から下へ紫色 (#FF00FF) 青色 (#0000FF) 水色 (#00FFFF) 緑色 (#00FF00) 黄色 (#FFFF00) 赤色 (#FF0000) に指定します -webkit-text-stroke-width: 0px; -webkit-text-stroke-color: #000000; -webkit-text -fill-color: transparent; で文字を透明にして描き -webkit-background-clip: text; を 指定して文字の部分に背景のグラデーションを抜き出して表示させ #div1 ボックスに重ね ます ( これは Safari (webkit 系ブラウザ ) と Chrome(webkit にも対応 ) だけの機能で す 下の CSS には text-stroke-width: 0px; text-stroke-color: #000000; text-fill 18

-color: transparent; background-clip: text; を指定していますが 実際には機能しません W3C 仕様にも取り込んでほしい機能です ) アニメーション名を grad1anime 実行時間を 10s イージングを linear 開始待ち時間を 0s 繰り返しを infinite 実行方向は normal で指定します #div1 > span:nth-child(1) { top: 0px; left: 0px; width: 550px; height: 520px; /* TEXT を中央に配置するため padding-top を 30px に指定しているため グラデーションも 30px 下にずれる それを防ぐ為 height を 550px ではなく 520px で指定し グラデーションの中心を合わせている */ background-color: white; background-image: radial-gradient(farthest-corner at 50% 50%, #FF00FF, #0000FF, #00FFFF, #00FF00, #FFFF00, #FF0000); background-image: -webkit-radial-gradient(50% 50%, farthest-corner, #FF00FF, #0000FF, #00FFFF, #00FF00, #FFFF00, #FF0000); padding-top: 30px; text-align: center; font: bold 96px "MS P ゴシック ", Osaka, " ヒラギノ角ゴ Pro", Verdana; color: black; text-stroke-width: 0px; text-stroke-color: #000000; text-fill-color: transparent; background-clip: text; -webkit-text-stroke-width: 0px; -webkit-text-stroke-color: #000000; -webkit-text-fill-color: transparent; -webkit-background-clip: text; position: absolute; opacity: 0.0; animation: grad1anime 10s linear 0s infinite normal; -webkit-animation: grad1anime 10s linear 0s infinite normal; #div1 ボックスの子要素の2 番目から6 番目の span 要素は 1 番目の span 要素と background-image プロパティのグラデーションの色の順番とアニメーション名だけが違います 2 番目の span 要素を記述します グラデーションの色の順番は 1つ分ずらして赤色 (#FF0000) 紫色 (#FF00FF) 青色 (#0000FF) 水色(#00FFFF) 緑色 (#00FF00) 黄色 (#FFFF00) に指定します アニメーション名を grad2anime と指定します 19

#div1 > span:nth-child(2) { background-image: radial-gradient(farthest-corner at 50% 50%, #FF0000, #FF00FF, #0000FF, #00FFFF, #00FF00, #FFFF00); background-image: -webkit-radial-gradient(50% 50%, farthest-corner, #FF0000, #FF00FF, #0000FF, #00FFFF, #00FF00, #FFFF00); animation: grad2anime 10s linear 0s infinite normal; -webkit-animation: grad2anime 10s linear 0s infinite normal; 3 番目の span 要素を記述します グラデーションの色の順番はさらに 1 つ分ずらして黄色 (#FFFF00) 赤色 (#FF0000) 紫色 (#FF00FF) 青色 (#0000FF) 水色 (#00FFFF) 緑色 (#00FF00) に指定します アニメーション名を grad3anime と指定します #div1 > span:nth-child(3) { background-image: radial-gradient(farthest-corner at 50% 50%, #FFFF00, #FF0000, #FF00FF, #0000FF, #00FFFF, #00FF00); background-image: -webkit-radial-gradient(50% 50%, farthest-corner, #FFFF00, #FF0000, #FF00FF, #0000FF, #00FFFF, #00FF00); animation: grad3anime 10s linear 0s infinite normal; -webkit-animation: grad3anime 10s linear 0s infinite normal; 4 番目の span 要素を記述します グラデーションの色の順番は さらに 1 つ分ずらして緑 色 (#00FF00) 黄色 (#FFFF00) 赤色 (#FF0000) 紫色 (#FF00FF) 青色 (#0000FF) 水 色 (#00FFFF) に指定します アニメーション名を grad4anime と指定します #div1 > span:nth-child(4) { background-image: radial-gradient(farthest-corner at 50% 50%, #00FF00, #FFFF00, #FF0000, #FF00FF, #0000FF, #00FFFF); background-image: -webkit-radial-gradient(50% 50%, farthest-corner, #00FF00, #FFFF00, #FF0000, #FF00FF, #0000FF, #00FFFF); animation: grad4anime 10s linear 0s infinite normal; -webkit-animation: grad4anime 10s linear 0s infinite normal; 20

5 番目の span 要素を記述します グラデーションの色の順番は さらに 1 つ分ずらして水 色 (#00FFFF) 緑色 (#00FF00) 黄色 (#FFFF00) 赤色 (#FF0000) 紫色 (#FF00FF) 青 色 (#0000FF) に指定します アニメーション名を grad5anime と指定します #div1 > span:nth-child(5) { background-image: radial-gradient(farthest-corner at 50% 50%, #00FFFF, #00FF00, #FFFF00, #FF0000, #FF00FF, #0000FF); background-image: -webkit-radial-gradient(50% 50%, farthest-corner, #00FFFF, #00FF00, #FFFF00, #FF0000, #FF00FF, #0000FF); animation: grad5anime 10s linear 0s infinite normal; -webkit-animation: grad5anime 10s linear 0s infinite normal; 6 番目の span 要素を記述します グラデーションの色の順番は さらに 1 つ分ずらして青 色 (#0000FF) 水色 (#00FFFF) 緑色 (#00FF00) 黄色 (#FFFF00) 赤色 (#FF0000) 紫 色 (#FF00FF) に指定します アニメーション名を grad6anime と指定します #div1 > span:nth-child(6) { background-image: radial-gradient(farthest-corner at 50% 50%, #0000FF, #00FFFF, #00FF00, #FFFF00, #FF0000, #FF00FF); background-image: -webkit-radial-gradient(50% 50%, farthest-corner, #0000FF, #00FFFF, #00FF00, #FFFF00, #FF0000, #FF00FF); animation: grad6anime 10s linear 0s infinite normal; -webkit-animation: grad6anime 10s linear 0s infinite normal; アニメーション名 grad1anime から grad6anime に対応するタイムライン (@keyframes) を 指定します タイムラインを 6 分割 ( グラデーションの span の数 ) し grad1anime は 6 分 割の 1 番目の時間で opacity: 1.0; にしてグラデーションが見えるようにします 次に grad2anime は 6 分割の 2 番目の時間で opacity: 1.0; にしてグラデーションが見えるよう にします 同じように grad3anime から grad6anime も 6 分割の 3 番目の時間から 6 番目 の時間で opacity: 1.0; にしてグラデーションが見えるようにします grad1anime と grad6anime は他タイムラインと少し違うところがあります grad1anime は タイムラインの 6 番目の時間にも opacity: 1.0; にして 徐々に見えるようにします grad6anime は タイムラインの 6 番目の時間を opacity: 0.0; にして 徐々に見えなくな るようにします これでテキスト文字の中に あたかもレインボーカラーが永久に繰り返 21

すように見えます ( 注 : タイムラインを7 分割にしたり opacity の値を変えるタイミングをいろいろ試してみましたが 100% から 0% に戻るときにグラデーションが一瞬止まったりして 滑らかにグラデーションが変化しなかったので 上で記述した方法が比較的良いようです ) /* grad1anime ************************************************************/ @keyframes grad1anime { from { opacity: 1.0; 17% { opacity: 1.0; 34% { opacity: 0.0; 51% { opacity: 0.0; 68% { opacity: 0.0; 84% { opacity: 0.0; to { opacity: 1.0; @-webkit-keyframes grad1anime { from { opacity: 1.0; 17% { opacity: 1.0; 34% { opacity: 0.0; 51% { opacity: 0.0; 68% { opacity: 0.0; 84% { opacity: 0.0; to { opacity: 1.0; /* grad2anime ************************************************************/ @keyframes grad2anime { from { opacity: 0.0; 17% { opacity: 1.0; 34% { opacity: 1.0; 51% { opacity: 0.0; 68% { opacity: 0.0; 84% { opacity: 0.0; to { opacity: 0.0; @-webkit-keyframes grad2anime { from { opacity: 0.0; 17% { opacity: 1.0; 34% { opacity: 1.0; 51% { opacity: 0.0; 68% { opacity: 0.0; 84% { opacity: 0.0; to { opacity: 0.0; /* grad3anime ************************************************************/ @keyframes grad3anime { from { opacity: 0.0; 17% { opacity: 0.0; 34% { opacity: 1.0; 51% { opacity: 1.0; 22

68% { opacity: 0.0; 84% { opacity: 0.0; to { opacity: 0.0; @-webkit-keyframes grad3anime { from { opacity: 0.0; 17% { opacity: 0.0; 34% { opacity: 1.0; 51% { opacity: 1.0; 68% { opacity: 0.0; 84% { opacity: 0.0; to { opacity: 0.0; /* grad4anime ************************************************************/ @keyframes grad4anime { from { opacity: 0.0; 17% { opacity: 0.0; 34% { opacity: 0.0; 51% { opacity: 1.0; 68% { opacity: 1.0; 84% { opacity: 0.0; to { opacity: 0.0; @-webkit-keyframes grad4anime { from { opacity: 0.0; 17% { opacity: 0.0; 34% { opacity: 0.0; 51% { opacity: 1.0; 68% { opacity: 1.0; 84% { opacity: 0.0; to { opacity: 0.0; /* grad5anime ************************************************************/ @keyframes grad5anime { from { opacity: 0.0; 17% { opacity: 0.0; 34% { opacity: 0.0; 51% { opacity: 0.0; 68% { opacity: 1.0; 84% { opacity: 1.0; to { opacity: 0.0; @-webkit-keyframes grad5anime { from { opacity: 0.0; 17% { opacity: 0.0; 34% { opacity: 0.0; 51% { opacity: 0.0; 68% { opacity: 1.0; 84% { opacity: 1.0; to { opacity: 0.0; 23

/* grad6anime ************************************************************/ @keyframes grad6anime { from { opacity: 0.0; 17% { opacity: 0.0; 34% { opacity: 0.0; 51% { opacity: 0.0; 68% { opacity: 0.0; 84% { opacity: 1.0; to { opacity: 0.0; @-webkit-keyframes grad6anime { from { opacity: 0.0; 17% { opacity: 0.0; 34% { opacity: 0.0; 51% { opacity: 0.0; 68% { opacity: 0.0; 84% { opacity: 1.0; to { opacity: 0.0; サンプル CSS4 テキスト文字の中に背景の円形グラデーションを抜き出して変化させる (2) 注意 :Chrome Safari Microsoft Edge だけの機能です (2016 年 4 月 24 日現在 ) (webkit 仕様 ) (W3C 仕様 ) 24

Safari (webkit 系ブラウザ ) と Chrome(webkit にも対応 ) はテキストの輪郭や色を -webkit-text-stroke-width -webkit-text-stroke-color -webkit-text-fill-color のプロパティで描くことができますが W3C 仕様には同様の機能がないので webkit 系以外のブラウザ (Firefox IE など ) はテキストの色を color プロパティで指定するだけになります また webkit 系ブラウザは-webkit-text-fill-color に transparent( 透明 ) を指定して -webkit-background-clip プロパティの値に text を指定すると text 文字の形に合わせて背景を抜き出すことができますが webkit 系以外のブラウザは text の指定ができません Microsoft Edge は webkit 系ブラウザではありませんが -webkit-text-fill-color プロパティと-webkit-background-clip プロパティについては ベンダープリフィックスが -webkit-であるにも関わらず対応してくれているようです ですから-webkit-text-fill- color に transparent( 透明 ) を指定して -webkit-background-clip プロパティの値に text を指定すると text 文字の形に合わせて背景を抜き出すことができます ( やるじゃないですか Microsoft Edge) 背景の線形グラデーションをアニメーションのように見せる方法は opacity プロパティを 利用する方法です RadialGradInTextAnime4 の説明 HTML の記述 (RadialGradInTextAnime4.html) id 属性 stage の div 要素 ( アニメーションが動くステージ ) を作り その中にボックスや画像を記述します id 属性 div1 の div 要素の中に <span> タグで span 要素を6つ記述し それぞれの span 要素は 中にテキスト文字を記述します <!DOCTYPE html> <html> <head> <title>radialgradintextanime4</title> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="radialgradintextanime4.css"> </head> <body> <p> 文字の内容を 円形グラデーションでアニメーションさせる (4)</p> <div id="stage"> <div id="div1"> <span>abc<br>defghij<br>klmnop<br>qrstuv<br>wxyz</span> <span>abc<br>defghij<br>klmnop<br>qrstuv<br>wxyz</span> <span>abc<br>defghij<br>klmnop<br>qrstuv<br>wxyz</span> <span>abc<br>defghij<br>klmnop<br>qrstuv<br>wxyz</span> 25

<span>abc<br>defghij<br>klmnop<br>qrstuv<br>wxyz</span> <span>abc<br>defghij<br>klmnop<br>qrstuv<br>wxyz</span> </div> </div> </body> </html> CSS の記述 (RadialGradInTextAnime4.css) #stage ステージのスタイルを指定します #stage ステージは width: 550px; height: 550px; を指定します #stage { width: 550px; height: 550px; position: relative; #div1 ボックスを記述します width は 550px height は 550px にします border-radius: 50%; と指定して円形にします background-color: black; を指定します #div1 { top: 0px; left: 0px; width: 550px; height: 550px; border-radius: 50%; background-color: black; position: absolute; #div1 ボックスの子要素の 1 番目の span 要素を記述します top は 0px left は 0px で width は 550px height は 530px にします border-radius: 50%; と指定して円形にします テキスト文字を #div1 ボックスの中央に置きたいので span 要素のパディングを padding-top: 30px; で指定しています ( そのため height を 30px 減らして #div1 ボッ クスの中央に収まるようにしています ) span 要素の background-image プロパティを repeating-linear-gradient( ) 関数を使用し て上から下へ紫色 (#FF00FF) 青色 (#0000FF) 水色 (#00FFFF) 緑色 (#00FF00) 黄色 (#FFFF00) 赤色 (#FF0000) に指定します -webkit-text-stroke-width: 0px; -webkit-text-stroke-color: #000000; -webkit-text -fill-color: transparent; で文字を透明にして描き -webkit-background-clip: text; を 指定して文字の部分に背景のグラデーションを抜き出して表示させ #div1 ボックスに重ね 26

ます ( これは Safari (webkit 系ブラウザ ) と Chrome(webkit にも対応 ) だけの機能です 下の CSS には text-stroke-width: 0px; text-stroke-color: #000000; text-fill -color: transparent; background-clip: text; を指定していますが 実際には機能しません W3C 仕様にも取り込んでほしい機能です ) アニメーション名を grad1anime 実行時間を 10s イージングを linear 開始待ち時間を 0s 繰り返しを infinite 実行方向は normal で指定します #div1 > span:nth-child(1) { top: 0px; left: 0px; width: 550px; height: 520px; /* TEXT を中央に配置するため padding-top を 30px に指定しているため グラデーション 30px 下にずれる それを防ぐ為 height を 550px ではなく 520px で指定し グラデーションの中心を合わせている */ border-radius: 50%; background-color: white; background-image: linear-gradient(to bottom, #FF00FF, #0000FF, #00FFFF, #00FF00, #FFFF00, #FF0000); background-image: -webkit-linear-gradient(top, #FF00FF, #0000FF, #00FFFF, #00FF00, #FFFF00, #FF0000); padding-top: 30px; text-align: center; font: bold 96px "MS P ゴシック ", Osaka, " ヒラギノ角ゴ Pro", Verdana; color: black; text-stroke-width: 0px; text-stroke-color: #000000; text-fill-color: transparent; background-clip: text; -webkit-text-stroke-width: 0px; -webkit-text-stroke-color: #000000; -webkit-text-fill-color: transparent; -webkit-background-clip: text; position: absolute; opacity: 0.0; animation: grad1anime 10s linear 0s infinite normal; -webkit-animation: grad1anime 10s linear 0s infinite normal; #div1 ボックスの子要素の2 番目から6 番目の span 要素は 1 番目の span 要素と background-image プロパティのグラデーションの色の順番とアニメーション名だけが違います 2 番目の span 要素を記述します グラデーションの色の順番は 1つ分ずらして赤色 (#FF0000) 紫色 (#FF00FF) 青色 (#0000FF) 水色(#00FFFF) 緑色 (#00FF00) 黄色 (#FFFF00) に指定します アニメーション名を grad2anime と指定します 27

#div1 > span:nth-child(2) { background-image: radial-gradient(farthest-corner at 50% 50%, #FF0000, #FF00FF, #0000FF, #00FFFF, #00FF00, #FFFF00); background-image: -webkit-radial-gradient(50% 50%, farthest-corner, #FF0000, #FF00FF, #0000FF, #00FFFF, #00FF00, #FFFF00); animation: grad2anime 10s linear 0s infinite normal; -webkit-animation: grad2anime 10s linear 0s infinite normal; 3 番目の span 要素を記述します グラデーションの色の順番はさらに 1 つ分ずらして黄色 (#FFFF00) 赤色 (#FF0000) 紫色 (#FF00FF) 青色 (#0000FF) 水色 (#00FFFF) 緑色 (#00FF00) に指定します アニメーション名を grad3anime と指定します #div1 > span:nth-child(3) { background-image: radial-gradient(farthest-corner at 50% 50%, #FFFF00, #FF0000, #FF00FF, #0000FF, #00FFFF, #00FF00); background-image: -webkit-radial-gradient(50% 50%, farthest-corner, #FFFF00, #FF0000, #FF00FF, #0000FF, #00FFFF, #00FF00); animation: grad3anime 10s linear 0s infinite normal; -webkit-animation: grad3anime 10s linear 0s infinite normal; 4 番目の span 要素を記述します グラデーションの色の順番は さらに 1 つ分ずらして緑 色 (#00FF00) 黄色 (#FFFF00) 赤色 (#FF0000) 紫色 (#FF00FF) 青色 (#0000FF) 水 色 (#00FFFF) に指定します アニメーション名を grad4anime と指定します #div1 > span:nth-child(4) { background-image: radial-gradient(farthest-corner at 50% 50%, #00FF00, #FFFF00, #FF0000, #FF00FF, #0000FF, #00FFFF); background-image: -webkit-radial-gradient(50% 50%, farthest-corner, #00FF00, #FFFF00, #FF0000, #FF00FF, #0000FF, #00FFFF); animation: grad4anime 10s linear 0s infinite normal; -webkit-animation: grad4anime 10s linear 0s infinite normal; 28

5 番目の span 要素を記述します グラデーションの色の順番は さらに 1 つ分ずらして水 色 (#00FFFF) 緑色 (#00FF00) 黄色 (#FFFF00) 赤色 (#FF0000) 紫色 (#FF00FF) 青 色 (#0000FF) に指定します アニメーション名を grad5anime と指定します #div1 > span:nth-child(5) { background-image: radial-gradient(farthest-corner at 50% 50%, #00FFFF, #00FF00, #FFFF00, #FF0000, #FF00FF, #0000FF); background-image: -webkit-radial-gradient(50% 50%, farthest-corner, #00FFFF, #00FF00, #FFFF00, #FF0000, #FF00FF, #0000FF); animation: grad5anime 10s linear 0s infinite normal; -webkit-animation: grad5anime 10s linear 0s infinite normal; 6 番目の span 要素を記述します グラデーションの色の順番は さらに 1 つ分ずらして青 色 (#0000FF) 水色 (#00FFFF) 緑色 (#00FF00) 黄色 (#FFFF00) 赤色 (#FF0000) 紫 色 (#FF00FF) に指定します アニメーション名を grad6anime と指定します #div1 > span:nth-child(6) { background-image: radial-gradient(farthest-corner at 50% 50%, #0000FF, #00FFFF, #00FF00, #FFFF00, #FF0000, #FF00FF); background-image: -webkit-radial-gradient(50% 50%, farthest-corner, #0000FF, #00FFFF, #00FF00, #FFFF00, #FF0000, #FF00FF); animation: grad6anime 10s linear 0s infinite normal; -webkit-animation: grad6anime 10s linear 0s infinite normal; アニメーション名 grad1anime から grad6anime に対応するタイムライン (@keyframes) を 指定します タイムラインを 6 分割 ( グラデーションの span の数 ) し grad1anime は 6 分 割の 1 番目の時間で opacity: 1.0; にしてグラデーションが見えるようにします 次に grad2anime は 6 分割の 2 番目の時間で opacity: 1.0; にしてグラデーションが見えるよう にします 同じように grad3anime から grad6anime も 6 分割の 3 番目の時間から 6 番目 の時間で opacity: 1.0; にしてグラデーションが見えるようにします grad1anime と grad6anime は他タイムラインと少し違うところがあります grad1anime は タイムラインの 6 番目の時間にも opacity: 1.0; にして 徐々に見えるようにします grad6anime は タイムラインの 6 番目の時間を opacity: 0.0; にして 徐々に見えなくな 29

るようにします これでテキスト文字の中に あたかもレインボーカラーが永久に繰り返 すように見えます /* grad1anime ************************************************************/ @keyframes grad1anime { from { opacity: 1.0; 17% { opacity: 1.0; 34% { opacity: 0.0; 51% { opacity: 0.0; 68% { opacity: 0.0; 84% { opacity: 0.0; to { opacity: 1.0; @-webkit-keyframes grad1anime { from { opacity: 1.0; 17% { opacity: 1.0; 34% { opacity: 0.0; 51% { opacity: 0.0; 68% { opacity: 0.0; 84% { opacity: 0.0; to { opacity: 1.0; /* grad2anime ************************************************************/ @keyframes grad2anime { from { opacity: 0.0; 17% { opacity: 1.0; 34% { opacity: 1.0; 51% { opacity: 0.0; 68% { opacity: 0.0; 84% { opacity: 0.0; to { opacity: 0.0; @-webkit-keyframes grad2anime { from { opacity: 0.0; 17% { opacity: 1.0; 34% { opacity: 1.0; 51% { opacity: 0.0; 68% { opacity: 0.0; 84% { opacity: 0.0; to { opacity: 0.0; /* grad3anime ************************************************************/ @keyframes grad3anime { from { opacity: 0.0; 17% { opacity: 0.0; 34% { opacity: 1.0; 51% { opacity: 1.0; 68% { opacity: 0.0; 84% { opacity: 0.0; to { opacity: 0.0; 30

@-webkit-keyframes grad3anime { from { opacity: 0.0; 17% { opacity: 0.0; 34% { opacity: 1.0; 51% { opacity: 1.0; 68% { opacity: 0.0; 84% { opacity: 0.0; to { opacity: 0.0; /* grad4anime ************************************************************/ @keyframes grad4anime { from { opacity: 0.0; 17% { opacity: 0.0; 34% { opacity: 0.0; 51% { opacity: 1.0; 68% { opacity: 1.0; 84% { opacity: 0.0; to { opacity: 0.0; @-webkit-keyframes grad4anime { from { opacity: 0.0; 17% { opacity: 0.0; 34% { opacity: 0.0; 51% { opacity: 1.0; 68% { opacity: 1.0; 84% { opacity: 0.0; to { opacity: 0.0; /* grad5anime ************************************************************/ @keyframes grad5anime { from { opacity: 0.0; 17% { opacity: 0.0; 34% { opacity: 0.0; 51% { opacity: 0.0; 68% { opacity: 1.0; 84% { opacity: 1.0; to { opacity: 0.0; @-webkit-keyframes grad5anime { from { opacity: 0.0; 17% { opacity: 0.0; 34% { opacity: 0.0; 51% { opacity: 0.0; 68% { opacity: 1.0; 84% { opacity: 1.0; to { opacity: 0.0; /* grad6anime ************************************************************/ @keyframes grad6anime { from { opacity: 0.0; 17% { opacity: 0.0; 31

34% { opacity: 0.0; 51% { opacity: 0.0; 68% { opacity: 0.0; 84% { opacity: 1.0; to { opacity: 0.0; @-webkit-keyframes grad6anime { from { opacity: 0.0; 17% { opacity: 0.0; 34% { opacity: 0.0; 51% { opacity: 0.0; 68% { opacity: 0.0; 84% { opacity: 1.0; to { opacity: 0.0; 32