• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
mocurot nort

mocurot nort

  • Contents
  • About
  • Contact

Sassで@mixin

2018-03-27 by mocurot 1 コメント

 @mixin(ミックスイン)を使えば、あるスタイルを定義したルールセットの内容を継承しつつ、新しいルールセットを作ることができる。
ここまでは@extendと同じだが、 @mixinは引数を指定して定義した @mixinの一部を変更して使うことができる。これにより、より柔軟な処理が可能になる。
※変数についてはこちらを参考に。

@mixinを使ってみる

@mixinを使って、文字を画像にリプレイス(置き換え)してみよう。
nirというミックスインにリプレイスに必要なプロパティを定義して、.logoからnirに必要な情報を引数として渡して継承する。

@import "compass";

@mixin nir ($img, $w, $h){
  width: $w
  height: $h;
  padding:0;
  margin:0;
  overflow: hidden;
  &:before{
    content:image-url($img);
    @include scale(.5);
    @include transform-origin(0, 0);
    display:inline-block;
    font-size:0;
    line-height:0;
  }
}

.logo {
  @include nir("logo.png", 80px, 80px);
}

↓ ↓ ↓ ↓コンパイル↓ ↓ ↓ ↓

.logo {
  width: 80px;
  height: 80px;
  padding: 0;
  margin: 0;
  overflow: hidden;
}
.logo:before {
  content: url('images/logo.png?1522126163');
  -moz-transform: scale(0.5, 0.5);
  -ms-transform: scale(0.5, 0.5);
  -webkit-transform: scale(0.5, 0.5);
  transform: scale(0.5, 0.5);
  -moz-transform-origin: 0 0;
  -ms-transform-origin: 0 0;
  -webkit-transform-origin: 0 0;
  transform-origin: 0 0;
  display: inline-block;
  font-size: 0;
  line-height: 0;
}

ミックスインとして定義したnirには、「$img 」(画像の名前)、「$w 」(画像の幅)、「$h 」(画像の高さ)を引数に持たせている。

次に.logoルールセットで@include nir("logo.png", 80px, 80px);として、nirに引数「logo.png 」(画像の名前)、「80px 」(画像の幅)、「80px 」(画像の高さ)を渡しつつインクルードしている。

※Retinaディスプレイ向けに画像の解像度を倍にするのでcompassでscale(.5);とtransform-origin(0, 0);をインクルードしている。


文字を画像にリプレイスすることが多いページを作る場合には、上記のようなミックスインを用意しておけば、画像の情報を渡してあげるだけで文字のリプレイスが完了してしまう。

アイデア次第で効率化できるルールセットもあるので、探してみると面白いかもしれない。


次回「 @content」

関連

Filed Under: Sass 関連タグ:SASS, SCSS

Reader Interactions

コメントを残す コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

最初のサイドバー

Author

NAME : mocurot
the mocuLogの管理人。フロントエンドエンジニア、バックエンドも少々。
Mac、iPhone、Kindle、Guitar、NINTENDO、SONY、FromSoftwareに関心を示します。

  • GitHub
  • RSS
  • Tumblr
  • Twitter
  • Youtube

Recommended Articles

  • input,textareaのCSSをリセット -iOS Safari -
    input,textareaのCSSをリセット -iOS Safari -
  • MacでVPN接続してもグローバルIPが変わらない時に見なおす設定
    MacでVPN接続してもグローバルIPが変わらない時に見なおす設定
  • Sassで@import
    Sassで@import
  • SassでFont Awesomeを使う
    SassでFont Awesomeを使う
  • CatalinaでEmacsのファイルアクセスを許可する方法
    CatalinaでEmacsのファイルアクセスを許可する方法
  • Sassでネスト
    Sassでネスト
  • ios safariでのスクロールバー表示について
    ios safariでのスクロールバー表示について
  • 6ヶ月プロテインダイエットをしてみて
    6ヶ月プロテインダイエットをしてみて

タグ

AMAZON ANKER APPLE APPLE WATCH APPS BLOOD BONE CAMERA CENT OS COMPASS CSS DARK SOULS DB DESIGN DIET EMMET GADGET GIT GITHUB GUITAR GULP HTML IPHONE KINDLE LEMP MAC MUSIC NGINX NINTENDO NODE.JS NOTE PHP PS4 PYTHON SASS SCSS SEKIRO SERVER SWICH WORDPRESS _s
プライバシーと Cookie: このサイトは Cookie を使用しています。このサイトの使用を継続することで、その使用に同意したとみなされます。
Cookie のコントロール方法を含む詳細についてはこちらをご覧ください。 Cookie ポリシー

Copyright © 2021 mocurot ・ ログイン