CSSで大白を描く(●ー●)
10172 ワード
今回はCSSを使って、超エネルギー陸戦隊の中の白い顔写真を描きます.
私たちのやり方は一つの要素にCSSを用いて背景図の位置を動的に変え,いくつかの線形効果を加えたものである.
See the Pen Baymax face-Hero Number 6 by Dnovan Hutchison(@donovanh)on CodePen.
単一要素
疑似クラスを使うことで、一つの元素を通して顔の部分を描くことができます.
効果をよりクールにするために、私達はbodyに
問題は今の元素は容器の中点から始まりますが、中間位置からではありません.
相殺するために、私達は
そして口の位置はこうです.
目を追加
私たちは
低電力量
映画の中の面白いシーンです.電気がなくなって、上下まぶたが喧嘩しています.色勾配背景と動画を使って実現できます.
まず背景の二つの色をあげます.黒は目を開けた状態を見せます.白は目を細めます.白い部分は最初は目の外に位置して、動画を使って目の顔を下垂させます.
背景があったら、私たちは
ここでは50%から85%の時間でまばたき動画を作ります.
次は偽類にこのアニメを実行するように教えます.
また、効果をよりリアルにするために、私たちは
ブラウザ対応
この例では、ブラウザの互換性のあるものは省略しました.
共有gifバージョン
ここにgifバージョンがあります.インターネットで自由に共有できます.
この文章は@cssanimationによって翻訳されていますが、全体の訳文には私なりの理解と意味があります.この訳文を転載するなら、英語の出所を明記してください.https://cssanimation.rocks/baymax/
訳文の出所:http://helkyle.com/2015/05/30/Baymax/
私たちのやり方は一つの要素にCSSを用いて背景図の位置を動的に変え,いくつかの線形効果を加えたものである.
See the Pen Baymax face-Hero Number 6 by Dnovan Hutchison(@donovanh)on CodePen.
単一要素
疑似クラスを使うことで、一つの元素を通して顔の部分を描くことができます.
<div class="baymax">div>
スタイルレンダリング効果をよりクールにするために、私達はbodyに
radial-gradient
を使用して、微妙な色勾配変化を追加しました.body {
background: radial-gradient(center, #fff, #fff 50%, #aaa);
background-size: 100%;
background-repeat: no-repeat;
height: 100vh;
}
次に顔の位置を決めます.口は黒い線だけです.border
を使って実現します..baymax {
border-bottom: 1.5em solid #000;
position: absolute;
top: 50%;
left: 50%;
width: 50%;
transform: translate(-50%, -40%);
}
最初の属性は幅1.5em
の辺を描きました.absolute
を使用して位置を特定し、容器(body)の中点に位置を定め、ここの50%は容器の大きさに関連している.問題は今の元素は容器の中点から始まりますが、中間位置からではありません.
相殺するために、私達は
transform
を使って元素を幅の50%、高さの40%によってそれぞれ左に移動します.そして口の位置はこうです.
目を追加
私たちは
before
、after
の疑似クラスを使って目を実現します.これは余分なHTMLを必要とせず、CSSを完全に使えばいいです..baymax::before {
background: #000;
border-radius: 50%;
content: "";
position: absolute;
width: 12em;
height: 12em;
left: -9em;
top: -6em;
transform: skewX(-4deg);
}
.baymax::after {
background: #000;
border-radius: 50%;
content: "";
position: absolute;
width: 12em;
height: 12em;
right: -9em;
top: -6em;
transform: skewX(4deg);
}
各疑似クラスには黒い背景があり、50%のborder-radius
があり、口の端に位置しています.最後にskew
を使って変換して、目を中間に近づけて、結果はこうなります.低電力量
映画の中の面白いシーンです.電気がなくなって、上下まぶたが喧嘩しています.色勾配背景と動画を使って実現できます.
まず背景の二つの色をあげます.黒は目を開けた状態を見せます.白は目を細めます.白い部分は最初は目の外に位置して、動画を使って目の顔を下垂させます.
.baymax::before {
background: linear-gradient(to bottom, #efefef, #efefef 50%, #000 50%, #000);
background-position: 0 -100%;
background-size: 200%;
...
}
.baymax::after {
background: linear-gradient(to bottom, #efefef, #efefef 50%, #000 50%, #000);
background-position: 0 -100%;
background-size: 200%;
...
}
線形勾配の背景を加えて,その高さを容器の二倍にし,上部を容器の外に位置決めした.背景があったら、私たちは
keyframes
アニメーションを通して動作全体を制御できます.@keyframes blink {
0%, 50% {
background-position: 0 100%;
}
85%, 95% {
background-position: 0 75%;
}
100% {
background-position: 0 100%;
}
}
keyframes
アニメーションは、いくつかの列フレームをパーセンテージで定義しています.パーセンテージはアニメーション実行時間に関係していますので、50%はアニメーションの半分の時間を表しています.ここでは50%から85%の時間でまばたき動画を作ります.
次は偽類にこのアニメを実行するように教えます.
animation
属性を追加します..baymax::before {
animation: blink 6s infinite;
...
}
.baymax::after {
animation: blink 6s 0.1s infinite;
...
}
上のコードは実行時間を6秒として設定し、常にループします.また、効果をよりリアルにするために、私たちは
after
の疑似類を0.1 sの遅延を加えました.だから、第二の目は少し遅くなり、もっと萌えたように見えます.ブラウザ対応
この例では、ブラウザの互換性のあるものは省略しました.
-webkit
、-moz
などです.動画はブラウザの互換性を考慮する必要があります.ここではAutoprefixerのようなツールを使うことをオススメします.共有gifバージョン
ここにgifバージョンがあります.インターネットで自由に共有できます.
この文章は@cssanimationによって翻訳されていますが、全体の訳文には私なりの理解と意味があります.この訳文を転載するなら、英語の出所を明記してください.https://cssanimation.rocks/baymax/
訳文の出所:http://helkyle.com/2015/05/30/Baymax/