AI(ChatGPT)を使って半自動で月5万稼ぐ?
実際にやってみて結果・・ >>

filterとtransformで超動くCSSスライダーアニメーション4選【Web制作者必見】

今回はCSSだけで作るスライダーアニメーションを4つご紹介します。filterプロパティの応用transform:rotateの回転エフェクトとopacityで変化前後のスタイルを調整しtransitionで滑らかにスライドするアニメーションになります。
htmlとcssだけしか使っていません。
コードの説明や実際の動きも詳しくまとめてみたので自由にお使いください。

こちらのデザイン・コードはすべて完全オリジナルなのでコピペ大歓迎です。

 

1. 縦回転するシンプルなスライダーアニメーション【filter&transform:rotateX】

動きは下の画像のような感じになります

コードを見る
<div class="container">
  <div class="around-slider">
    <ul class="slider">
        <li>
            <input type="radio" id="image1" name="image" checked>
            <label for="image1"></label>
            <img src="https://images.unsplash.com/photo-1531913764164-f85c52e6e654?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1266&q=80" alt="image 1" style="width: 25em;height: 18.75em">
        </li>
        <li>
            <input type="radio" id="image2" name="image">
            <label for="image2"></label>
            <img src="https://images.unsplash.com/photo-1549834185-bd9f078a5dfe?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1650&q=80" alt="image 2" style="width: 25em;height: 18.75em">
        </li>
        <li>
            <input type="radio" id="image3" name="image">
            <label for="image3"></label>
            <img src="https://images.unsplash.com/photo-1542209784-f9702e6ade53?ixlib=rb-1.2.1&auto=format&fit=crop&w=2120&q=80" alt="image 3" style="width: 25em;height: 18.75em">
        </li>
        <li>
            <input type="radio" id="image4" name="image">
            <label for="image4"></label>
            <img src="https://images.unsplash.com/photo-1523895665936-7bfe172b757d?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=2850&q=80" alt="image 4" style="width: 25em;height: 18.75em">
        </li>
    </ul>
  </div>
</div>
.container {
  /* flexboxでcontainerの中身をど真ん中に設置 */
  display: flex;
  justify-content: center;
  align-items: center;
}
/* 額縁外側 */
.around-slider {
  background-color: #572500;
  width: 28em;
  height: 23em;
  display: block;
  top: 30%;
  position: absolute;
  border-radius: .2em;
  /* 額縁外の影 */
  box-shadow: 0 3px 10px 5px rgba(0,0,0,0.4);
}
.slider {
  display: block;
  /* スライダーの額縁内の位置指定 */
  top: 4%;
  left: 3.5%;
  background-color: #fff;
  height: 21em;
  width: 26em;
  padding: 0;
  margin: 0;
  position: absolute;
  /* .sliderに収まらない要素を隠すように指定 */
  overflow: hidden;
  border: 20px solid rgb(255, 211, 179);
  /* 内側の影を指定 */
  box-shadow: 0 2px 1px hsla(0,0%,0%,.4),
              0 -1px 1px 2px hsla(0,0%,0%,.5);
}
/* スライダー*/
.slider li {
  list-style:none;
  position: absolute;
}
.slider input {
  display: none;
}
/* スライダーナビゲーションボタン */
.slider label {
  background-color: #000000;
  border-radius: 100%;
  cursor: pointer;
  display: block;
  height: 1.0em;
  width: 1.0em;
  /* ボタンの位置を指定 */
  left: 12em;
  bottom: .5em;
  position: absolute;
  /* hover後にボタンが現れる速度を調整 */
  transition: .25s;
  z-index: 100;
  box-shadow: 0px 1px 5px 1px #fff;
}
.slider input:checked + label {
  /* クリックしたときのボタンの色を指定 */
  background-color: #fff;
}
.slider:hover li:nth-child(1) label {
  /* 1つ目のボタンの位置を指定 */
  left: 9.5em;
}
.slider:hover li:nth-child(2) label {
  /* 2つ目のボタンの位置を指定 */
  left: 11em;
}
.slider:hover li:nth-child(3) label {
  /* 3つ目のボタンの位置を指定 */
  left: 12.5em;
}
.slider:hover li:nth-child(4) label {
  /* 4つ目のボタンの位置を指定 */
  left: 14em;
}
/* 額内の写真 */
.slider img {
  opacity: 0;
  /* アニメーションの速度調整 */
  transition: 1.5s;
  filter: brightness(0%) saturate(0%) contrast(0%);
  /* 変化前の明るさ・彩度・コントラストの指定 */
  transform:rotateX(0deg);
  /* 回転角度を指定 */
}
.slider li input:checked ~ img {
  /* ボタンで選択後のスタイル指定 */
  opacity: 1;
  z-index: 10;
  filter: brightness(110%) saturate(210%) contrast(115%);
  /* 変化後の明るさ・彩度・コントラストの指定 */
  transform:rotateX(360deg);
  /* 回転角度を指定 */
}
ここがポイント!
  1. flexboxでcontainerの中身をど真ん中に設置
  2. .around-sliderで外側の額縁・.sliderで内側の額縁を指定
  3. スライダーのナビゲーションボタンを設置しボタンを押すと画像がスライドするように指定する
  4. .slider imgの変化前にopacityで不透明度、filter: brightness() saturate() contrast()で明るさ・彩度・コントラストを各々調整(filterの使い方については【filter完全網羅】hoverでボタンが動き出す!filterを網羅できるCSSボタンアニメーション15選)
  5. .slider imgの変化後も同じく調整
  6. hoverするとtransform:rotateXで背景画像がタテ回転するスライダーのマテリアルデザイン(transformの使い方については【transform完全網羅】hoverで動き出す!transformを網羅できるCSSボタンアニメーション16選)
  7. transitionプロパティを指定して開始から終了までの自然なアニメーションを実現

 

2. 滑らかに横回転するスライダーアニメーション【filter&transform:rotateY】

動きは下の画像のような感じになります

コードを見る
<div class="container">
  <div class="around-slider">
    <ul class="slider">
        <li>
            <input type="radio" id="image1" name="image" checked>
            <label for="image1"></label>
            <img src="https://images.unsplash.com/photo-1531913764164-f85c52e6e654?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1266&q=80" alt="image 1" style="width: 25em;height: 18.75em">
        </li>
        <li>
            <input type="radio" id="image2" name="image">
            <label for="image2"></label>
            <img src="https://images.unsplash.com/photo-1549834185-bd9f078a5dfe?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1650&q=80" alt="image 2" style="width: 25em;height: 18.75em">
        </li>
        <li>
            <input type="radio" id="image3" name="image">
            <label for="image3"></label>
            <img src="https://images.unsplash.com/photo-1542209784-f9702e6ade53?ixlib=rb-1.2.1&auto=format&fit=crop&w=2120&q=80" alt="image 3" style="width: 25em;height: 18.75em">
        </li>
        <li>
            <input type="radio" id="image4" name="image">
            <label for="image4"></label>
            <img src="https://images.unsplash.com/photo-1523895665936-7bfe172b757d?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=2850&q=80" alt="image 4" style="width: 25em;height: 18.75em">
        </li>
    </ul>
  </div>
</div>
.container {
  /* flexboxでcontainerの中身をど真ん中に設置 */
  display: flex;
  justify-content: center;
  align-items: center;
}
/* 額縁外側 */
.around-slider {
  background-color: #572500;
  width: 28em;
  height: 23em;
  display: block;
  top: 30%;
  position: absolute;
  border-radius: .2em;
  /* 額縁外の影 */
  box-shadow: 0 3px 10px 5px rgba(0,0,0,0.4);
}
.slider {
  display: block;
  /* スライダーの額縁内の位置指定 */
  top: 4%;
  left: 3.5%;
  background-color: #fff;
  height: 21em;
  width: 26em;
  padding: 0;
  margin: 0;
  position: absolute;
  /* .sliderに収まらない要素を隠すように指定 */
  overflow: hidden;
  border: 20px solid rgb(255, 211, 179);
  /* 内側の影を指定 */
  box-shadow: 0 2px 1px hsla(0,0%,0%,.4),
              0 -1px 1px 2px hsla(0,0%,0%,.5);
}
/* スライダー*/
.slider li {
  list-style:none;
  position: absolute;
}
.slider input {
  display: none;
}
/* スライダーナビゲーションボタン */
.slider label {
  background-color: #000000;
  border-radius: 100%;
  cursor: pointer;
  display: block;
  height: 1.0em;
  width: 1.0em;
  /* ボタンの位置を指定 */
  left: 12em;
  bottom: .5em;
  position: absolute;
  /* hover後にボタンが現れる速度を調整 */
  transition: .25s;
  z-index: 100;
  box-shadow: 0px 1px 5px 1px #fff;
}
.slider input:checked + label {
  /* クリックしたときのボタンの色を指定 */
  background-color: #fff;
}
.slider:hover li:nth-child(1) label {
  /* 1つ目のボタンの位置を指定 */
  left: 9.5em;
}
.slider:hover li:nth-child(2) label {
  /* 2つ目のボタンの位置を指定 */
  left: 11em;
}
.slider:hover li:nth-child(3) label {
  /* 3つ目のボタンの位置を指定 */
  left: 12.5em;
}
.slider:hover li:nth-child(4) label {
  /* 4つ目のボタンの位置を指定 */
  left: 14em;
}
/* 額内の写真 */
.slider img {
  opacity: 0;
  /* アニメーションの速度調整 */
  transition: 1.5s;
  filter: brightness(0%) saturate(0%) contrast(0%);
  /* 変化前の明るさ・彩度・コントラストの指定 */
  transform:rotateY(0deg);
  /* 回転角度を指定 */
}
.slider li input:checked ~ img {
  /* ボタンで選択後のスタイル指定 */
  opacity: 1;
  z-index: 10;
  filter: brightness(110%) saturate(210%) contrast(115%);
  /* 変化後の明るさ・彩度・コントラストの指定 */
  transform:rotateY(360deg);
  /* 回転角度を指定 */
}
ここがポイント!
  1. flexboxでcontainerの中身をど真ん中に設置
  2. .around-sliderで外側の額縁・.sliderで内側の額縁を指定
  3. スライダーのナビゲーションボタンを設置しボタンを押すと画像がスライドするように指定する
  4. .slider imgの変化前にopacityで不透明度、filter: brightness() saturate() contrast()で明るさ・彩度・コントラストを各々調整(filterの使い方については【filter完全網羅】hoverでボタンが動き出す!filterを網羅できるCSSボタンアニメーション15選)
  5. .slider imgの変化後も同じく調整
  6. hoverするとtransform:rotateYで背景画像が横回転するスライダーのマテリアルデザイン(transformの使い方については【transform完全網羅】hoverで動き出す!transformを網羅できるCSSボタンアニメーション16選)
  7. transitionプロパティを指定して開始から終了までの自然なアニメーションを実現

 

3. 平面回転するスタイリッシュなスライダーアニメーション【filter&transform:rotateZ】

動きは下の画像のような感じになります

コードを見る
<div class="container">
  <div class="around-slider">
    <ul class="slider">
        <li>
            <input type="radio" id="image1" name="image" checked>
            <label for="image1"></label>
            <img src="https://images.unsplash.com/photo-1531913764164-f85c52e6e654?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1266&q=80" alt="image 1" style="width: 25em;height: 18.75em">
        </li>
        <li>
            <input type="radio" id="image2" name="image">
            <label for="image2"></label>
            <img src="https://images.unsplash.com/photo-1549834185-bd9f078a5dfe?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1650&q=80" alt="image 2" style="width: 25em;height: 18.75em">
        </li>
        <li>
            <input type="radio" id="image3" name="image">
            <label for="image3"></label>
            <img src="https://images.unsplash.com/photo-1542209784-f9702e6ade53?ixlib=rb-1.2.1&auto=format&fit=crop&w=2120&q=80" alt="image 3" style="width: 25em;height: 18.75em">
        </li>
        <li>
            <input type="radio" id="image4" name="image">
            <label for="image4"></label>
            <img src="https://images.unsplash.com/photo-1523895665936-7bfe172b757d?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=2850&q=80" alt="image 4" style="width: 25em;height: 18.75em">
        </li>
    </ul>
  </div>
</div>
.container {
  /* flexboxでcontainerの中身をど真ん中に設置 */
  display: flex;
  justify-content: center;
  align-items: center;
}
/* 額縁外側 */
.around-slider {
  background-color: #572500;
  width: 28em;
  height: 23em;
  display: block;
  top: 30%;
  position: absolute;
  border-radius: .2em;
  /* 額縁外の影 */
  box-shadow: 0 3px 10px 5px rgba(0,0,0,0.4);
}
.slider {
  display: block;
  /* スライダーの額縁内の位置指定 */
  top: 4%;
  left: 3.5%;
  background-color: #fff;
  height: 21em;
  width: 26em;
  padding: 0;
  margin: 0;
  position: absolute;
  /* .sliderに収まらない要素を隠すように指定 */
  overflow: hidden;
  border: 20px solid rgb(255, 211, 179);
  /* 内側の影を指定 */
  box-shadow: 0 2px 1px hsla(0,0%,0%,.4),
              0 -1px 1px 2px hsla(0,0%,0%,.5);
}
/* スライダー*/
.slider li {
  list-style:none;
  position: absolute;
}
.slider input {
  display: none;
}
/* スライダーナビゲーションボタン */
.slider label {
  background-color: #000000;
  border-radius: 100%;
  cursor: pointer;
  display: block;
  height: 1.0em;
  width: 1.0em;
  /* ボタンの位置を指定 */
  left: 12em;
  bottom: .5em;
  position: absolute;
  /* hover後にボタンが現れる速度を調整 */
  transition: .25s;
  z-index: 100;
  box-shadow: 0px 1px 5px 1px #fff;
}
.slider input:checked + label {
  /* クリックしたときのボタンの色を指定 */
  background-color: #fff;
}
.slider:hover li:nth-child(1) label {
  /* 1つ目のボタンの位置を指定 */
  left: 9.5em;
}
.slider:hover li:nth-child(2) label {
  /* 2つ目のボタンの位置を指定 */
  left: 11em;
}
.slider:hover li:nth-child(3) label {
  /* 3つ目のボタンの位置を指定 */
  left: 12.5em;
}
.slider:hover li:nth-child(4) label {
  /* 4つ目のボタンの位置を指定 */
  left: 14em;
}
/* 額内の写真 */
.slider img {
  opacity: 0;
  /* アニメーションの速度調整 */
  transition: 1.5s;
  filter: brightness(0%) saturate(0%) contrast(0%);
  /* 変化前の明るさ・彩度・コントラストの指定 */
  transform:rotate(0deg);
  /* 回転角度を指定 */
}
.slider li input:checked ~ img {
  /* ボタンで選択後のスタイル指定 */
  opacity: 1;
  z-index: 10;
  filter: brightness(110%) saturate(210%) contrast(115%);
  /* 変化後の明るさ・彩度・コントラストの指定 */
  transform:rotate(360deg);
  /* 回転角度を指定 */
}
ここがポイント!
  1. flexboxでcontainerの中身をど真ん中に設置
  2. .around-sliderで外側の額縁・.sliderで内側の額縁を指定
  3. スライダーのナビゲーションボタンを設置しボタンを押すと画像がスライドするように指定する
  4. .slider imgの変化前にopacityで不透明度、filter: brightness() saturate() contrast()で明るさ・彩度・コントラストを各々調整(filterの使い方については【filter完全網羅】hoverでボタンが動き出す!filterを網羅できるCSSボタンアニメーション15選)
  5. .slider imgの変化後も同じく調整
  6. hoverするとtransform:rotateで背景画像が平面でクルクル回転するスライダーのマテリアルデザイン(transformの使い方については【transform完全網羅】hoverで動き出す!transformを網羅できるCSSボタンアニメーション16選)
  7. transitionプロパティを指定して開始から終了までの自然なアニメーションを実現

 

4. 超立体的に回転するスライダーアニメーション【filter&transform:rotate3d】

動きは下の画像のような感じになります

コードを見る
<div class="container">
  <div class="around-slider">
    <ul class="slider">
        <li>
            <input type="radio" id="image1" name="image" checked>
            <label for="image1"></label>
            <img src="https://images.unsplash.com/photo-1531913764164-f85c52e6e654?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1266&q=80" alt="image 1" style="width: 25em;height: 18.75em">
        </li>
        <li>
            <input type="radio" id="image2" name="image">
            <label for="image2"></label>
            <img src="https://images.unsplash.com/photo-1549834185-bd9f078a5dfe?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1650&q=80" alt="image 2" style="width: 25em;height: 18.75em">
        </li>
        <li>
            <input type="radio" id="image3" name="image">
            <label for="image3"></label>
            <img src="https://images.unsplash.com/photo-1542209784-f9702e6ade53?ixlib=rb-1.2.1&auto=format&fit=crop&w=2120&q=80" alt="image 3" style="width: 25em;height: 18.75em">
        </li>
        <li>
            <input type="radio" id="image4" name="image">
            <label for="image4"></label>
            <img src="https://images.unsplash.com/photo-1523895665936-7bfe172b757d?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=2850&q=80" alt="image 4" style="width: 25em;height: 18.75em">
        </li>
    </ul>
  </div>
</div>
.container {
  /* flexboxでcontainerの中身をど真ん中に設置 */
  display: flex;
  justify-content: center;
  align-items: center;
}
/* 額縁外側 */
.around-slider {
  background-color: #572500;
  width: 28em;
  height: 23em;
  display: block;
  top: 30%;
  position: absolute;
  border-radius: .2em;
  /* 額縁外の影 */
  box-shadow: 0 3px 10px 5px rgba(0,0,0,0.4);
}
.slider {
  display: block;
  /* スライダーの額縁内の位置指定 */
  top: 4%;
  left: 3.5%;
  background-color: #fff;
  height: 21em;
  width: 26em;
  padding: 0;
  margin: 0;
  position: absolute;
  /* .sliderに収まらない要素を隠すように指定 */
  overflow: hidden;
  border: 20px solid rgb(255, 211, 179);
  /* 内側の影を指定 */
  box-shadow: 0 2px 1px hsla(0,0%,0%,.4),
              0 -1px 1px 2px hsla(0,0%,0%,.5);
}
/* スライダー*/
.slider li {
  list-style:none;
  position: absolute;
}
.slider input {
  display: none;
}
/* スライダーナビゲーションボタン */
.slider label {
  background-color: #000000;
  border-radius: 100%;
  cursor: pointer;
  display: block;
  height: 1.0em;
  width: 1.0em;
  /* ボタンの位置を指定 */
  left: 12em;
  bottom: .5em;
  position: absolute;
  /* hover後にボタンが現れる速度を調整 */
  transition: .25s;
  z-index: 100;
  box-shadow: 0px 1px 5px 1px #fff;
}
.slider input:checked + label {
  /* クリックしたときのボタンの色を指定 */
  background-color: #fff;
}
.slider:hover li:nth-child(1) label {
  /* 1つ目のボタンの位置を指定 */
  left: 9.5em;
}
.slider:hover li:nth-child(2) label {
  /* 2つ目のボタンの位置を指定 */
  left: 11em;
}
.slider:hover li:nth-child(3) label {
  /* 3つ目のボタンの位置を指定 */
  left: 12.5em;
}
.slider:hover li:nth-child(4) label {
  /* 4つ目のボタンの位置を指定 */
  left: 14em;
}
/* 額内の写真 */
.slider img {
  opacity: 0;
  /* アニメーションの速度調整 */
  transition: 1.5s;
  filter: brightness(0%) saturate(0%) contrast(0%);
  /* 変化前の明るさ・彩度・コントラストの指定 */
  transform:rotate3d(0,0,0,0deg);
  /* 回転角度を指定 */
}
.slider li input:checked ~ img {
  /* ボタンで選択後のスタイル指定 */
  opacity: 1;
  z-index: 10;
  filter: brightness(110%) saturate(210%) contrast(115%);
  /* 変化後の明るさ・彩度・コントラストの指定 */
  transform:rotate3d(1,1,1,360deg);
  /* 回転角度を指定 */
}
ここがポイント!
  1. flexboxでcontainerの中身をど真ん中に設置
  2. .around-sliderで外側の額縁・.sliderで内側の額縁を指定
  3. スライダーのナビゲーションボタンを設置しボタンを押すと画像がスライドするように指定する
  4. .slider imgの変化前にopacityで不透明度、filter: brightness() saturate() contrast()で明るさ・彩度・コントラストを各々調整(filterの使い方については【filter完全網羅】hoverでボタンが動き出す!filterを網羅できるCSSボタンアニメーション15選)
  5. .slider imgの変化後も同じく調整
  6. hoverするとtransform:rotate3dで背景画像が超立体的に回転するスライダーのマテリアルデザイン(transformの使い方については【transform完全網羅】hoverで動き出す!transformを網羅できるCSSボタンアニメーション16選)
  7. transitionプロパティを指定して開始から終了までの自然なアニメーションを実現

【初心者向け】失敗しないプログラミングTIPS

そもそもWebデザインの基礎がわからない。。
そんなあなたには『Udemy』

ふたご


でもなあ、独学だと心配だしプログラミングスクールで学びたい!。かといってお金はかけたくないし。。
そんなあなたにはProEngineer

ふたご

完全無料で一人前のエンジニアになれるプログラミングスクール【ProEngineer】
  1. プログラミング学習&サポートが無料!
  2. 誰もが知っている超優良企業への就職サポート付き!
  3. 学習言語:Java、PHP、HTML、CSSなど

   話だけ聞いてみる