© 2016 電脳 Papa 1
1225-6 練習6 Overflow The Stage(overflow)
ピエロの玉乗りがステージの外から入って外へ出て行くトランジションを作ってみましょ う。 “Hover”ボタンの上をマウスポインター(カーソル)で hover すると、ピエロの玉乗りが ステージの外から入って外へ出て行きます。 〔動きの仕組み〕 このトランジションは、次の3つの動きの組み合わせで動きます。 ① ピエロとボールの横方向の動き・・・left プロパティを ease-in-out で動かすことに より、最初はゆっくりと、そして徐々に速度を増して動き、また徐々に速度を落とし、 最後はゆっくりと止まります。 ② ボールの回転・・・transform プロパティで rotateZ 関数を指定することにより、回 転させます。ease-in-out で動かすことにより、最初はゆっくりと、そして徐々に回 転速度を増して、また徐々に回転速度を落とし、最後はゆっくりと止まります。 ③ ステージからはみ出た部分を隠す・・・ステージに overflow プロパティで hidden を 指定することにより、ステージからはみ出た部分を見えなくします。 ■
overflow
ボックスの内容がボックスからはみ出た部分の表示の仕方を指定します。 値 説 明 visible はみ出た部分もそのまま表示される。(初期値) hidden はみ出た部分は表示されない。 scroll はみ出た部分はスクロールで見られるようになる。 auto ブラウザが自動処理する(一般的には scroll と同じ)。 プロパティ© 2016 電脳 Papa 2
overflow プロパティの指定は、親ボックスのスタイルに記述します。overflow プロパテ ィは position プロパティ(position: static;以外)の指定がされていなと適用されま せん。 ボックスの外にはみ出た部分を表示させたくないときに hidden を使用します。 【OverflowTheStage の説明】 〔HTML の記述 (OverflowTheStage.html)〕 id 属性 stage の div 要素(トランジションが動くステージ)を作り、その中にボックスや 画像を記述します。
id 属性 button の div 要素を作ります。これがボタン(親ボックス)になります。font1 ク ラスでフォントを指定し、“Hover”を記述します。
id 属性 pierrot の div 要素(子ボックス)の中に<img>タグで画像要素の記述をします。画 像は"images/ Pierrot.png"を指定します。
id 属性 ball の div 要素(子ボックス)の中に<img>タグで画像要素の記述をします。画像 は"images/ ColorWheel.png"を指定します。 hover でトランジションが開始されるようにするので、各要素には onClick などの記述はし ません。 サンプルCSS <!DOCTYPE html> <html> <head> <title>OverflowTheStage</title> <meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="OverflowTheStage.css"> </head>
<body>
<p>■ボタン(親ボックス)を hover して、ピエロの玉乗り(子ボックス)を 動かす。<br>ステージの外から入って、ステージの外へ出て行く。</p> <div id="stage">
<div id="button"><font class="font1">Hover</font>
<div id="pierrot"><img src="images/Pierrot.png" alt="Pierrot"></div> <div id="ball"><img src="images/ColorWheel.png" alt="Color Wheel"></div> </div>
</div> </body> </html>
© 2016 電脳 Papa 3
〔CSS の記述(OverflowTheStage.css)〕
先ず、トランジションが動く#stage の記述をします。そして、重要な点は overflow: hidden; と指定することです。ピエロの玉乗りがステージの外へ出たときに見えないようにするた めに overflow プロパティを hidden(隠す)にするのですが、overflow プロパティは position プロパティ(position: static;以外)の指定がされていなと適用されません。
ボタンとなる#button ボックス(親ボックス)を記述します。position は absolute にます。 角丸矩形のボタンにしたいので、border-radius プロパティでボックスの4隅の角丸の半径 を 10px で指定します。
画像(images/ Pierrot.png)を入れる#pierrot ボックス(子ボックス)を記述します。 position は absolute にして、位置は top 60px とステージボックスの外からスタートする ように left –560px(#button ボックスの左上端を基準とした位置)で指定します。 transition の記述をします。left プロパティを 5 秒、ease-in-out でトランジションする ように記述します。
#stage {
width: 600px; height: 300px; background-color: midnightblue; border: solid 1px black; position: relative; overflow: hidden; } #button { top: 10px; left: 460px; width: 120px; height: 50px; border: solid 1px black; border-radius: 10px; background-color: red; text-align: center; cursor: default; position: absolute; } #pierrot { top: 60px; left: -560px; width: 88px; height: 117px; position: absolute;
transition: left 5s ease-in-out;
-webkit-transition: left 5s ease-in-out; }
© 2016 電脳 Papa 4
画像(images/ ColorWheel.png)を入れる#ball ボックス(子ボックス)を記述します。 position は absolute にして、位置は top 172px とステージボックスの外からスタートする ように left –565px(#button ボックスの左上端を基準とした位置)で指定します。 transition の記述をします。left プロパティ、transform プロパティを 5 秒、ease-in-out でトランジションするように記述します。
#button ボックス(ボタン)を hover したら、#button ボックスの背景色を green に変化さ せます。
#button ボックス(ボタン)を hover した時の変化として、#pierrot ボックスに、ステー ジボックスの外に出るように left プロパティで 150px(#button ボックスの左上端を基準 とした位置)へ動かします。
同じように、# button ボックス(ボタン)を hover した時の変化として、#ball ボックス に transform プロパティで rotateZ(720deg) を指定し、時計回りで2回転しながら、ステ ージボックスの外に出るように left プロパティで 145px(#button ボックスの左上端を基 準とした位置)へ動かします。 #ball { top: 172px; left: -565px; width: 100px; height: 100px; position: absolute;
transition: left 5s ease-in-out, transform 5s ease-in-out;
-webkit-transition: left 5s ease-in-out, -webkit-transform 5s ease-in-out; } #ball img { top: 0px; left: 0px; width: 100%; height: 100%; position: absolute; } #button:hover { background-color: green; } #pierrot img { top: 0px; left: 0px; width: 100%; height: 100%; position: absolute; }
© 2016 電脳 Papa 5
最後にボタンに表示するテキストのフォントの指定をします。
.font1 { color: black;
font: bold 28px "MS Pゴシック", Osaka, "ヒラギノ角ゴ Pro", Verdana; line-height: 50px; } #button:hover div#pierrot { left: 150px; } #button:hover div#ball { left: 145px; transform: rotateZ(720deg); -webkit-transform: rotateZ(720deg); }