LoginSignup
2
4

More than 5 years have passed since last update.

フォルダ内の画像のパスと縦横サイズをSASSまたはLESSの変数やミックスインとして書き出すnpmモジュールを作った

Last updated at Posted at 2017-07-16

https://www.npmjs.com/package/bgi の紹介

これはなに?

画像の入ったフォルダで実行すると、画像名で画像のパス、width、heightがLESSまたはSASS形式の変数やミックスインとして書き出される

効果

コーディングがすげー早くなる。

使い方

SASSの場合

画像フォルダに移動して、bgi --pathVar imagepath --type sassを実行。
すると、

images.scss
$icon_Addlink-width:38px;
$icon_Addlink-height:37px;
$icon_Addlink-image:url("#{$imagepath}icon_Addlink.png");
@mixin icon_Addlink(){
  background-image:url("#{$imagepath}icon_Addlink.png");
  background-size:38px 37px;
}
@mixin icon_Addlink--block(){
  background-image:url("#{$imagepath}icon_Addlink.png");
  background-size:38px 38px;
  width:38px;
  height:37px;
}

こんな感じのファイルが出力される。

LESSの場合

画像フォルダに移動して、bgi --pathVar imagepathを実行。
すると、

images.less
@icon_Addlink-width:38px;
@icon_Addlink-height:37px;
@icon_Addlink-image:url("@{imagepath}icon_Addlink.png");
.icon_Addlink(){
  background-image:url("@{imagepath}icon_Addlink.png");
  background-size:38px 37px;
}
.icon_Addlink--block(){
  background-image:url("@{imagepath}icon_Addlink.png");
  background-size:38px 37px;
  width:38px;
  height:37px;
}

こんな感じのファイルが出力される。

使用例

SASSの場合

main.scss
$imagepath:"../img/mypage/";
@import "#{$imagepath}images.scss";
div.icon--addlink{
  @include icon_Addlink--block();
}
span.icon--addlink{
  @include icon_Addlink();
}

LESSの場合

main.less
@imagepath:"../img/mypage/";
@import "@{imagepath}images.less";
div.icon--addlink{
    .icon_Addlink--block();
}
span.icon--addlink{
    .icon_Addlink();
}

変数を指定することも出来るが、ショートハンドとして用意されている関数/ミックスインを使うのが楽
例えばセンタリングしたい場合など高さのみ使いたいときは個別に変数を用いれば良い

背景

Webサイトのコーディングしてると、殆どデザインの画像を切り貼りしてるだけ、って事がよくあります(よね?)。
このとき、imgタグを使うならHTMLに書くわけですが、CSSで書くならbackground-imageを使うことになります。
こんなかんじ。

main.css
div.icon--addlink {
  background-image: url("../img/mypage/icon_Addlink.png");
  background-size: 38px 37px;
  width: 38px;
  height: 37px;
}
span.icon--addlink {
  background-image: url("../img/mypage/icon_Addlink.png");
  background-size: 38px 37px;
}

しかし、ファイル名を書くだけならまだしも切り出し画像のwidthとheightを取るのにいちいちファイルを右クリックしたり、その数値をCSSに書き込んだりするのが非常に面倒くさい
Cocos2d-jsでゲーム作るときはファイル名だけでプリロードしてsprite初期化すればwidthもheightも取れるのに!
でも考えてみればLESSやSASSなら変数定義ができるんだから同じことが出来る筈、ということで作った。

詳細

hadakadenkyu / bgi — Bitbucket
https://bitbucket.org/hadakadenkyu/bgi/overview

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4