SCSS」カテゴリーアーカイブ

SCSS(カバースライド)

カバースライドアニメーションを作る

HTMLの記述

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <div id="container">
<!-- ホバーしたときに暗くする -->
    <!-- <div class="cover-slide hover-darken inview">
<img class="img-zoom" src="images/image-1.jpg" alt="">
  </div> -->
<!-- アス比を保ちたいときの設定 -->
  <div class="cover-slide hover-darken inview">
  <div class="bg-img-zoom img-bg50"></div>
  </div>
  </div>
</body>
</html>

mixinの記述

@mixin animation($name, $duration: 1s, $timing-function: ease, $delay: 0s, $iteration-count: 1, $direction: normal, $fill-mode: forwards) {
animation: {
name: $name;
duration: $duration;
timing-function: $timing-function;
delay: $delay;
iteration-count: $iteration-count;
direction: $direction;
fill-mode: $fill-mode;
 }
}

SCSSの記述

続きを読む

Text Animationを作る1(テキストアニメーション)

その4から続く

ボタンを押したら発火するシンプルなアニメーションを作ってみよう!

HTMLの記述

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible"content="IE=edge">
<meta name="viewport"content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet"href="style.css">
</head>
<body>
  <div id="container">
  <div class="animate-title">
    <spanclass="char">A</span>
    <spanclass="char">N</span>
    <spanclass="char">I</span>
    <spanclass="char">M</span>
    <spanclass="char">A</span>
    <spanclass="char">T</span>
    <spanclass="char">I</span>
    <spanclass="char">O</span>
    <spanclass="char">N</span>
  </div>
  <button onclick="document.querySelector('.animate-title').classList.toggle('inview');">Animation</button>
</button>
  </div>
  </body>
</html>

mixinの記述

@mixin animation(
  $name,
  $duration: 1s,
  $timing-function: ease,
  $delay: 0s,
  $iteration-count: 1,
  $direction: normal,
  $fill-mode: forwards
) {
animation: {
  name: $name;
  duration: $duration;
  timing-function: $timing-function;
  delay: $delay;
  iteration-count: $iteration-count;
  direction: $direction;
  fill-mode: $fill-mode;
 }
}

SCSSの記述

続きを読む

簡単なローダー(lorder)のつくりかた1.5(リファクタリング)

リファクタリングしてコード量を減らす

HTMLの記述

<head>
<meta charset="UTF-8">
<meta name="viewport"content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
 <link rel="stylesheet"href="loader.css">
</head> 
<body>
  <div class="three-dot-spinner">
 <div></div>
 <div></div>
 <div></div>
</div>
</body>

SCSSの記述

.three-dot-spinner {
   text-align: center;
 & div {
   display: inline-block;
   width: 18px;
   height: 18px;
   background-color: #904669;
   border-radius: 50%;
   animation: sk-bouncedelay 1.4s infinite;
   // 1から99までループしたいとき //
   @for $i from 1 to 100
   // 1から2までループしたいとき
   @for $i from 1 through 2 {
   &:nth-child(#{$i}) {
     animation-delay: -0.32s / $i;
  }
  }
  } 
 }
 @keyframes sk-bouncedelay {
 0% {
 transform: scale(0);
 }
 40% {
 transform: scale(1);
 } 80% {
 transform: scale(0);
 } 100% {
 transform: scale(0);
 }
}

※ポイント

@for $i from 1 through 2 {
 &:nth-child(#{$i}) {
 animation-delay: -0.32s / $i;

こうすることで2秒後-0.16s、3秒後-0.1sと設定できる(今回は2秒までです。)

簡単なローダー(lorder)のつくりかた1

ローダー(lorder)とは?

読込中に表示するものです。

HTMLの記述

<head>
 <meta charset="UTF-8">
 <meta http-equiv="X-UA-Compatible"content="IE=edge">
 <meta name="viewport"content="width=device-width, initial-scale=1.0">
 <link rel="stylesheet"href="loader.css">
</head>
<body> 
  <div class="three-dot-spinner"> 
  <div class="bounce1"></div> 
  <div class="bounce2"></div> 
  <div class="bounce3"></div>
 </div>
 </body>
</html>

SCSSの設定

.three-dot-spinner {
  text-align: center;
// ローダーの設定
  &div {
    display: inline-block;
    width: 18px;
    height: 18px;
    background-color: #904669;
// 丸くする
    border-radius: 50%;
// アニメーションの設定1.4秒かけて無限に繰り返す
    animation: sk-bouncedelay 1.4s infinite;
 }
// 一番左の●の設定で他よりも早くアニメーションされる
  &.bounce1 {
    animation-delay: -0.32s;
 }
  &.bounce2 {
    animation-delay: -0.16s;
 }
}
// ここにアニメーションの定義をする
@keyframes sk-bouncedelay {
 0% {
// 収縮させる(大きさが0%)
  transform: scale(0);
 }
// 拡大させる(大きさが100%)
 40% {
  transform: scale(1);
 }
 80% {
  transform: scale(0);
 }
 100% {
  transform: scale(0);
 }
}

フェードイン

ボタンを押したら発火するフェードインなどができるアニメーション

作成するもの

HTMLの記述

<!DOCTYPE html>
<html lang="en">
<head>
  <meta  charset="UTF-8">
  <meta name="viewport"content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible"content="ie=edge">
    <title>Document</title>
    <linkrel="stylesheet"href="style.css">
</head>
<body>
  <button onclick="document.querySelector('.appear').classList.toggle('inview');">
    appear
  </button>
  <div class="appear right">
   <div class="item"><img src="./images/image-1.jpg"></div>
   <div class="item"><img src="./images/image-1.jpg"></div>
   <div class="item"><img src="./images/image-1.jpg"></div>
   <div class="item"><img src="./images/image-1.jpg"></div>
   <div class="item"><img src="./images/image-1.jpg"></div>
   <div class="item"><img src="./images/image-1.jpg"></div>
   <div class="item"><img src="./images/image-1.jpg"></div>
   <div class="item"><img src="./images/image-1.jpg"></div>
  </div>
</body>
</html>

SCSSの記述

// ココに定義する
@import 'appear';
  img {
    max-width: 80%;
}

_appear.scssの記述

$pattern: (
  "up": translateY(6px),
  "down": translateY(-6px),
  "left": translateX(40px),
  "right": translateX(-40px)
);
  @each $key, $value in $pattern {
    .appear.#{$key} {
  &.item {
    transform: $value;
  }
 }
}

.appear {
  &.item {
    transition: all 0.8s;
// 初期状態は透明にする
    opacity: 0;
}
  &.inview {
  &.item {
// 発火したとき透明化を解除
    opacity: 1;
// 上で設定したtransformの値を初期化することでアニメーションを見せる
    transform: none;
// 1から10までの遅延の設定
  @for $i from 1 through 10 {
    &:nth-child(#{$i}) {
      transition-delay: $i * 0.1s;
  }
 }
}
}
}

色々なボタンのつくりかた

様々なボタンのつくりかたをまとめてみた

HTML部分

<body>
  <div id="container">
    <button class="btn float">Button</button>
    <button class="btn filled">Button</button>
    <button class="btn letter-spacing">Button</button>
    <button class="btn shadow">Button</button>
    <button class="btn solid">Button</button>
</body>

SCSSの部分

$cWhite: white;
$cBlack: black;
 &.btn {
     position: relative;
     display: inline-block;
     background-color: $cWhite;
     border: 1pxsolid$cBlack;
     font-weight: 600;
     padding: 10px40px;
     margin: 10pxauto;
     cursor: pointer;
     transition: all0.3s;
     color: $cBlack;
     text-decoration: none!important;
   &.float:hover {
     background-color: $cBlack;
     color: $cWhite;
     box-shadow: 5px5px10px0rgba(0, 0, 0, 0.5);
 }    &.filled {
     background-color: $cBlack;
     color: $cWhite;
      box-shadow: 5px5px10px0rgba(0, 0, 0, 0.5);
   &:hover {
     background-color: $cWhite;
     color: $cBlack;
     box-shadow: none;
 }
 }
   &.letter-spacing:hover {
     background-color: $cBlack;
     letter-spacing: 3px;
     color: $cWhite;
 }
   &.shadow {
     box-shadow: none;
   &:hover {
     transform: translate(-2px, -2px);
     box-shadow: 5px5px00$cBlack;
 }  }
   &.solid {
     box-shadow: 2px2px00$cBlack;
     border-radius: 7px;
   &:hover {
     transform: translate(2px, 2px);
     box-shadow: none;
   }
  }
 }

続きを読む

アニメーション付きのボタンを作る

1:様々なボタンを作る

HTMLの記述

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport"content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible"content="ie=edge">
  <title>Document</title>
  <link rel="stylesheet"href="style.css">
</head>
<body>
  <divid="container">
  <button class="btn slide-bg">Button</button>
 </div>
</body>
</html>

SCSSの記述

$cWhite: white;
$cBlack: black;

#container {
  text-align: center;
}

.btn {
  background-color: $cWhite;
  color: $cBlack;
  border: 1px solid $cBlack;
  padding: 10px 40px;
  margin: 50px 0;
  font-weight: 600;
  cursor: pointer;
  //0.3sかけてアニメーションをする
  transition: all 0.3s;

  &.slide-bg {
    position: relative;
//枠外を非表示
    overflow: hidden;
//前面にする
    z-index: 1;

  &::before {
// 疑似要素のために必要。空のspanを生成している。htmlタグにひとつだけつける
    content: '';
    display: inline-block;
    width: 100%;
    height: 100%;
    background-color: $cBlack;
    position: absolute;
    top: 0;
    left: 0;
    transform: translateX(-100%);
    transition: transform 0.3s;
//背面にする    
    z-index: -1;
   }

  &:hover {
   color: $cWhite;
  
  &::before {
   transform: none;
  }
 }
}
}

*ポイント

親要素slide-bgの

{ position: relative; overflow: hidden;z-index: 1;}

子要素&::beforeの

{content: ”; position: absolute;}

は重要なので意識しよう

続きを読む

css学習のまとめ5(ホバーで色や影の変わるボタンの作成)

1:ホバーで色が変わるボタンを作成する

HTML

<!DOCTYPE html>
 <html lang="en">
 <head>
 <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Document</title>
  <link rel="stylesheet" href="style.css">
 </head>
 <body>
 <div id="container">
   <button class="btn">Button</button>
 </div>
 </body>
 </html>

CSS

#container {
  text-align: center;
 }
 .btn {
  background-color: white;
  color: black;   border: 1px solid black;
  padding: 10px 40px 10px 40px;
  font-weight: 600;   cursor: pointer;
  margin: 50px 0;
  transition: color 0.3s ease 1s,
  background-color 0.3s ease 2s;  }  .btn:hover {
  background-color: black;
  color: white;
 }

※ポイント

transition: color 0.3s ease 1s,

background-color 0.3s ease 2s;

ここでアニメーションの指定をしている

続きを読む

SCSSの基本(変数とネスト)

SCSSでできること

共通の部分を変数で設定できて、変更する必要が出たときに共通部分が一括で変更できて便利

変数の設定方法の例:$cBlack: black;

$cBlack: black;

$cWhite: white;
.btn {

 background-color: $cWhite;

 color: $cBlack;

 border: 1pxsolid$cBlack;

 padding: 10px40px10px40px;

 font-weight: 600;

 cursor: pointer;

 margin: 50px0;

 transition: color0.3sease1s, background-color0.3sease2s;

&:hover {

 background-color: $cBlack;

 color: $cWhite;

 }

}

上のようにネストすることもできてコードが見やすくなる。