今回は【transform rotate(360deg)×flexbox】画像が回転+伸縮するCSSアニメーション3選をご紹介いたします。
シンプルかつ洗練されたデザイン。filterプロパティでエフェクト。アニメーションで複数の画像が動く。Web制作で使える。コピペOK。HTML, CSSだけです。動きを見ていただければ使いたくなること間違いなしです!
この記事の信頼性(ゆうけんブログの筆者はこんな人)
- 現役Webデザイナーが執筆
- 最高月収7桁超のフリーランス
- 完全未経験から独学でWeb制作スキルを習得
- Twitterフォロワー数2,000人超(→@twinzvlog_yk)
- Web制作のメンター経験多数
- 認定ランサー(ランサーズ最高ランク)
コードの説明や実際の動きも詳しくまとめてみたので自由にお使いください。
こちらのデザイン・コードはすべて完全オリジナルなのでコピペ大歓迎です。
1. 【縦回転】transform rotateX(360deg)×flexbox画像アニメーション
動きは下の画像のような感じになります
コードを見る
<div class="images">
<div class="image">
<img src="https://images.unsplash.com/photo-1532699123275-37b5a57561cf?ixlib=rb-1.2.1&auto=format&fit=crop&w=1650&q=80">
<span>Morning</span>
</div>
<div class="image">
<img src="https://images.unsplash.com/photo-1513543806865-85e29a7c0352?ixlib=rb-1.2.1&auto=format&fit=crop&w=2775&q=80">
<span>Day</span>
</div>
<div class="image">
<img src="https://images.unsplash.com/photo-1519221739757-4df89b4d0efe?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1650&q=80">
<span>Evening</span>
</div>
</div>
.images {
/* 子要素を横並びに配置する */
display: flex;
margin: auto;
width: 100%;
padding: 3% 2%;
box-sizing: border-box;
height: 50vh;
}
.image {
/* 要素位置の指定 */
flex: 1;
/* はみ出す箇所を隠す */
overflow: hidden;
/* アニメーション速度を指定 */
transition: .8s;
margin: 0 2%;
/* ボックスに影をつける(左から水平方向の長さ、垂直方向の長さ、ぼかしの長さ、色) */
box-shadow: 0 20px 30px rgba(0,0,0,.1);
/* 文字の高さを指定 */
line-height: 0;
}
.image > img {
/* デフォルトでの画像のズーム率を指定 */
width: 100%;
/* 文字背景の高さを指定 */
height: calc(100% - 5vh);
/* imgをimageの枠にトリミングしてはめ込む */
object-fit: cover;
/* アニメーション速度を指定 */
transition: .3s;
/* フィルタープロパティでぼやけ度合い・彩度・明るさ・コントラストを調整 */
filter: blur(.5px) saturate(100%) brightness(100%) contrast(100%);
}
.image > span {
font-size: 3vh;
display: block;
text-align: center;
/* 文字の高さを指定 */
line-height: 1.5;
}
.image:hover {
/* hover後の画像のサイズを指定 */
flex: 1 1 30%;
}
.image:hover > img {
width: 100%;
height: 100%;
/* フィルタープロパティでぼやけ度合い・彩度・明るさ・コントラストを調整 */
filter: blur(0px) saturate(240%) brightness(110%) contrast(110%);
/* 回転角度を調整 */
transform: rotateX(-360deg);
/* アニメーション速度を指定 */
transition: .8s;
}
ここがポイント!
- flexboxとmargin: auto;でど真ん中に設置
- overflow: hiddenで枠に収まらないサイズの要素は隠す
- box-shadowで奥行きをつけて立体感を演出
- object-fit: coverで画像が伸縮せずに滑らかに表示されるように指定
- transitionで開始から終了までの十分な時間を設定し滑らかなアニメーションを実現
- height: calcでimgの高さを詳細に指定
- flex: 1 1 30%+transform rotateで回転+ぎゅーっと伸縮するレイアウトを実現
2. 【横回転】transform rotateY(360deg)×flexbox画像アニメーション
動きは下の画像のような感じになります
コードを見る
<div class="images">
<div class="image">
<img src="https://images.unsplash.com/photo-1532699123275-37b5a57561cf?ixlib=rb-1.2.1&auto=format&fit=crop&w=1650&q=80">
<span>Morning</span>
</div>
<div class="image">
<img src="https://images.unsplash.com/photo-1513543806865-85e29a7c0352?ixlib=rb-1.2.1&auto=format&fit=crop&w=2775&q=80">
<span>Day</span>
</div>
<div class="image">
<img src="https://images.unsplash.com/photo-1519221739757-4df89b4d0efe?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1650&q=80">
<span>Evening</span>
</div>
</div>
.images {
/* 子要素を横並びに配置する */
display: flex;
margin: auto;
width: 100%;
padding: 3% 2%;
box-sizing: border-box;
height: 50vh;
}
.image {
/* 要素位置の指定 */
flex: 1;
/* はみ出す箇所を隠す */
overflow: hidden;
/* アニメーション速度を指定 */
transition: .8s;
margin: 0 2%;
/* ボックスに影をつける(左から水平方向の長さ、垂直方向の長さ、ぼかしの長さ、色) */
box-shadow: 0 20px 30px rgba(0,0,0,.1);
/* 文字の高さを指定 */
line-height: 0;
}
.image > img {
/* デフォルトでの画像のズーム率を指定 */
width: 100%;
/* 文字背景の高さを指定 */
height: calc(100% - 5vh);
/* imgをimageの枠にトリミングしてはめ込む */
object-fit: cover;
/* アニメーション速度を指定 */
transition: .3s;
/* フィルタープロパティでぼやけ度合い・彩度・明るさ・コントラストを調整 */
filter: blur(.5px) saturate(100%) brightness(100%) contrast(100%);
}
.image > span {
font-size: 3vh;
display: block;
text-align: center;
/* 文字の高さを指定 */
line-height: 1.5;
}
.image:hover {
/* hover後の画像のサイズを指定 */
flex: 1 1 30%;
}
.image:hover > img {
width: 100%;
height: 100%;
/* フィルタープロパティでぼやけ度合い・彩度・明るさ・コントラストを調整 */
filter: blur(0px) saturate(240%) brightness(110%) contrast(110%);
/* 回転角度を調整 */
transform: rotateY(-360deg);
/* アニメーション速度を指定 */
transition: .8s;
}
ここがポイント!
- flexboxとmargin: auto;でど真ん中に設置
- overflow: hiddenで枠に収まらないサイズの要素は隠す
- box-shadowで奥行きをつけて立体感を演出
- object-fit: coverで画像が伸縮せずに滑らかに表示されるように指定
- transitionで開始から終了までの十分な時間を設定し滑らかなアニメーションを実現
- height: calcでimgの高さを詳細に指定
- flex: 1 1 30%+transform rotateで回転+ぎゅーっと伸縮するレイアウトを実現
3. 【平面回転】transform rotateZ(360deg)×flexbox画像アニメーション
動きは下の画像のような感じになります
コードを見る
<div class="images">
<div class="image">
<img src="https://images.unsplash.com/photo-1532699123275-37b5a57561cf?ixlib=rb-1.2.1&auto=format&fit=crop&w=1650&q=80">
<span>Morning</span>
</div>
<div class="image">
<img src="https://images.unsplash.com/photo-1513543806865-85e29a7c0352?ixlib=rb-1.2.1&auto=format&fit=crop&w=2775&q=80">
<span>Day</span>
</div>
<div class="image">
<img src="https://images.unsplash.com/photo-1519221739757-4df89b4d0efe?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1650&q=80">
<span>Evening</span>
</div>
</div>
.images {
/* 子要素を横並びに配置する */
display: flex;
margin: auto;
width: 100%;
padding: 3% 2%;
box-sizing: border-box;
height: 50vh;
}
.image {
/* 要素位置の指定 */
flex: 1;
/* はみ出す箇所を隠す */
overflow: hidden;
/* アニメーション速度を指定 */
transition: .8s;
margin: 0 2%;
/* ボックスに影をつける(左から水平方向の長さ、垂直方向の長さ、ぼかしの長さ、色) */
box-shadow: 0 20px 30px rgba(0,0,0,.1);
/* 文字の高さを指定 */
line-height: 0;
}
.image > img {
/* デフォルトでの画像のズーム率を指定 */
width: 100%;
/* 文字背景の高さを指定 */
height: calc(100% - 5vh);
/* imgをimageの枠にトリミングしてはめ込む */
object-fit: cover;
/* アニメーション速度を指定 */
transition: .3s;
/* フィルタープロパティでぼやけ度合い・彩度・明るさ・コントラストを調整 */
filter: blur(.5px) saturate(100%) brightness(100%) contrast(100%);
}
.image > span {
font-size: 3vh;
display: block;
text-align: center;
/* 文字の高さを指定 */
line-height: 1.5;
}
.image:hover {
/* hover後の画像のサイズを指定 */
flex: 1 1 30%;
}
.image:hover > img {
width: 100%;
height: 100%;
/* フィルタープロパティでぼやけ度合い・彩度・明るさ・コントラストを調整 */
filter: blur(0px) saturate(240%) brightness(110%) contrast(110%);
/* 回転角度を調整 */
transform: rotateZ(-360deg);
/* アニメーション速度を指定 */
transition: .8s;
}
ここがポイント!
- flexboxとmargin: auto;でど真ん中に設置
- overflow: hiddenで枠に収まらないサイズの要素は隠す
- box-shadowで奥行きをつけて立体感を演出
- object-fit: coverで画像が伸縮せずに滑らかに表示されるように指定
- transitionで開始から終了までの十分な時間を設定し滑らかなアニメーションを実現
- height: calcでimgの高さを詳細に指定
- flex: 1 1 30%+transform rotateで回転+ぎゅーっと伸縮するレイアウトを実現
『絶対にリモートワーク!』という方におすすめの求人サイトをご紹介!
クラウドテック
この講座のポイント
対象
Webデザイナー・エンジニア・グラフィックデザイナー・PM・マーケター・ライター
公式サイト
クラウドテック公式ページ
特徴
- クラウドソーシング企業大手のクラウドワークスが運営する求人サイト
- 実務未経験者でもOK
- 登録社数14万社
- フリーランス・個人事業主向け案件がケタ違いに多い
- 報酬額や勤務地・職種など希望が通りやすい
- Web制作・コーディングの高単価案件が多い
- リモートワーク案件数は業界トップクラス
- 最短3日で案件を獲得できる
現役Webデザイナーの筆者イチオシの求人サイト!フリーランス向けWeb制作案件なら確実に業界トップクラス。営業かけずに案件に困らなくなる一番の近道です。
ふたご
無料で登録してみる >>
まとめ
HTMLとCSSを使うと今回紹介したようなことも簡単にできてしまうんです。
『CSSアニメーションやエフェクトだけではなくWebサイトをゼロから作って稼いでいきたい』
『3ヶ月くらいで最低でも月10万円は稼ぎたい』
『営業とかやったことないけどWeb制作だけで稼いでいきたい』
こんな方のためにWeb制作で月80万超稼ぐ筆者が自身の経験を踏まえて【失敗しない】Webデザイナー(Web制作)独学ロードマップを執筆しました。
少額の投資で3ヶ月後には月10〜30万稼げるよう設計してあります。
(学習教材やAdobeなど最低限のコストはかかります)
ロードマップの構成
- Web制作に特化した『確実に身に付く』学習方法
- Web制作会社が喰いつく理想的なポートフォリオの作成手順
- 返信率10%以上!Web制作会社へのメール営業
有料公開も考えましたが「Webデザイナー(Web制作)はまだまだ稼げることを証明したい!」という思いが強く、期間限定で無料公開をすることにしました。
2021年半ばまでは無料公開する予定ではありますが前倒しすることもあり得ますのでご興味ある方はお早めにどうぞ!