【コピペでOK】使いまわせるSCSS Mixinライブラリまとめ

SCSSでMixinが使えるようになれば…

コピペでOK。色々と使いまわしましょう。

・Mixinを作るときの決まりごと

Form

@mixin mainInputForm($width: 300px, $height: 40px) {
  width: $width;
  height: $height;
  color: rgba(#707070, 0.5);
  background-color: #fff;
  border: none;
  border-radius: 50px;
  box-shadow: 3px 3px 6px rgba(#000, 0.2);
  font-size: 16px;
  margin: 0 0 20px;
  padding: 0 20px;
  outline: none;
}


.form-box {
  width: 300px;
  height: 40px;
  color: rgba(112, 112, 112, 0.5);
  background-color: #fff;
  border: none !important;
  border-radius: 50px;
  box-shadow: 3px 3px 6px rgba(0, 0, 0, 0.2);
  font-size: 16px;
  margin: 0 0 20px;
  padding: 0 20px;
  outline: none;
}

DEMO::


Shadow

@mixin gradientShadow($bg: rgb(131,58,180), $shadow0: rgba(131,58,180,0.5), $shadow50: rgba(253,29,29,0.5), $shadow100: rgba(252,176,69,0.5)) {
  &::after {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 1;
    background: $bg;
    background: linear-gradient(90deg, $shadow0 0%, $shadow50 50%, $shadow100 100%);
  }
}
sample img
.sample {
  width: 100%;
  max-width: 500px;
  position: relative;
}
.sample img {
  width: 100%;
  height: 100%;
}
.sample::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
  background: #833ab4;
  background: linear-gradient(90deg, rgba(131, 58, 180, 0.5) 0%, rgba(253, 29, 29, 0.5) 50%, rgba(252, 176, 69, 0.5) 100%);
}

DEMO::
適用したい要素にposition: relative;が必要。

sample img

Header bottom line

@mixin linesBottom($front_line_width: 40%, $front_line_color: blue, $bg_line_color: #000) {
  &::before {
    content: "";
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 2px;
    background-color: $bg_line_color;
  }

  &::after {
    content: "";
    position: absolute;
    bottom: 0;
    left: 0;
    width: $front_line_width;
    height: 2px;
    background-color: $front_line_color;
  }
}

Sample header example

.sample_header h1 {
  position: relative;
}

.sample_header h1::before {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 2px;
  background-color: #000;
}

.sample_header h1::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  width: 40%;
  height: 2px;
  background-color: blue;
}

DEMO::
適用したい要素にposition: relative;が必要。

Sample header example

Mediaquery

$sp_width: 480px;
$tb_width: 768px;

@mixin mediaSP() {
  @media screen and (max-width: $sp_width) {
    @content;
  }
}

@mixin mediaTB() {
  @media screen and (max-width: $tb_width) {
    @content;
  }
}