0.1.11 • Published 5 years ago

stylus-helpers v0.1.11

Weekly downloads
2
License
MIT
Repository
github
Last release
5 years ago

stylus helpers

npm version

これは何をするものですか

media queryやよくあるCSSルールの組み合わせをバカ正直に書くのが面倒くさいというズボラな人のための、stylus mixin集です。

.hoge
  // 透過方式で書いています
  sz 50
  sz-xs(30, 20)
.hoge {
  width: 50px;
  height: 50px;
}

@media (max-width: 767px) {
  .hoge {
    width: 30px;
    height: 20px;
  }
}

このようにコンパイルされます。

コンパイルに際してはお好きな方法でどうぞ。

インストールと使い方

インストール

npm からインストールしてください。

$npm i -D stylus-helpers

使い方

使用したいstylusファイルの先頭で @import するのが簡単でいいと思います。

@import "path/node_modules/stylus-helpers/helper"

ブレークポイント・閾値の設定

デフォルトで 4段階のmedia queryを採用しています。

  • xs : 0 - 767.98px
  • sm : 768px - 991.98px
  • md : 992px - 1199.98px
  • lg : 1200px -

これをたとえば、bootstrap4.x にあわせた5段階のmedia queryにする場合、 _shBreakPointの名前でhashでそれぞれの識別子に対応する上限値を指定し、 helper.styl ミックスインをインポートする前に指定します。

_shBreakPoint = {
  xs: 576
  sm: 768
  md: 992
  lg: 1200
  xl: Infinity
}
@import "path/node_modules/stylus-helpers/helper"

また、現在最大値は次段階の下限値から0.02pxを差し引いたものになっていますが、これをbootstrap3.xに合わせて1px差にする場合、 _shThreshold の名前で数値を設定します。

_shThreshold = 1
@import "path/node_modules/stylus-helpers/helper"

現在、xs ~ xl の5段階にしか対応していません。

主な機能

略記

よく使うcssルールの組み合わせを略記できます。

source

.hoge
  db()
  flr()
  por()

yield

.hoge {
  display: block;
  float: right;
  position: relative;
}

値指定略記

数値などを指定するルールを簡単に書けます。

source

.hoge
  h 20
  w 40%
  m()

yield

.hoge {
  height: 20px;
  width: 40%;
  margin: auto;
}

cssルールによっては単位やキーワードが補完されます。

media queryの略記

上記の略記ルールに、media queryの識別子(xs / sm / md / lg / (xl))をpostfixとして組み合わせて使います。

source

.hoge
  t 50
  t-sm 20

yield

.hoge {
  top: 50px;
}

@media (min-width:768px) and (max-width: 991px) {
  .hoge {
    top: 20px;
  }
}

media query を Block mixins として使用

stylus の標準記法 Block mixins としてmedia queryを使用できます。

source

.hoge
  width 100px  
  +xs()
    width 50px

yield

.hoge {
  width: 100px;
}

@media (max-width: 767px) {
  .hoge {
    width: 50px;
  }
}

Block mixins として使用する場合、media queryを組み合わせて上限・下限を指定することもできます。

source

.hoge
  // (下限)-(上限)で指定します
  +sm-md()
    width 100px

yield

.hoge {
  width: 100px;
}

@media (min-width:768px) and (max-width: 1199px) {
  .hoge {
    width: 100px;
  }
}

その他のmixin

bg(x, y, color) / bg-[xs|sm|md|lg|xl](x, y, color)

background-repeatno-repeat に設定し、 background-color background-position を同時に指定します。

/* Default */
background-color: transparent; /* color */
background-repeat: no-repeat;
background-position: 50% 50%; /* x y */

br-medias()

各メディアクエリに対応した汎用 .br-** クラスを指定します。 <br> タグ専用です。

/*
  br-medias()
*/
br.br-lg,
br.br-md,
br.br-sm,
br.br-xs {
  display: none;
}
@media (min-width: 1200px) and (max-width: 1599.98px) {
  br.br-lg {
    display: block;
  }
}
@media (min-width: 992px) and (max-width: 1199.98px) {
  br.br-md {
    display: block;
  }
}
@media (min-width: 768px) and (max-width: 991.98px) {
  br.br-sm {
    display: block;
  }
}
@media (max-width: 767.98px) {
  br.br-xs {
    display: block;
  }
}

cf() / cf-[xs|sm|md|lg|xl]()

clearfixとなるCSSコードを生成します。

ellips() / ellips-[xs|sm|md|lg|xl]()

省略文字を表示するCSSコードを生成します。

fvc(align-item-keyword, flex flug) / fvc-[xs|sm|md|lg|xl](align-item-keyword, flex flug)

flexコンテナを作り、内容物を天地中央に配置します。 align-item-keyword を指定することで内容物の位置も指定できます。 第2引数にfalseを指定するとdisplay: inline-flexになります。デフォルト(無指定)はdisplay: flexです。

highlighter(color, breadth, base-color) / highlighter-[xs|sm|md|lg|xl](color, breadth, base-color)

ブロック・インラインブロック下部に蛍光ペンで引いたようなアンダーラインをつけます。 background-image: linear-gradient() を使用しているので、併用はできません。

color にはカラーコードを指定します。デフォルトで lightgreen が指定されます。
breadth には線の太さを1 - 10の数値で指定します。デフォルトで 1(10%) が指定されます。
base-color には線以外の「地色」を指定します。デフォルトで transparent が指定されます。

lhx(fontSize, lineHeight) / lhx-[xs|sm|md|lg|xl](fontSize, lineHeight)

カンプ内でフォントサイズと、行間がともにピクセルなどで指定されているときにline-heightを算出します。

メディアクエリを表す接尾辞をつけることもできます。

source
.hoge
  // 単位は無視されますが、計算上揃える必要があります。
  lhx-xs(24px, 40px)
yield
@media (max-width: 767.98px) {
  .hoge {
    line-height: 1.67;
  }
}

ratio(width, h, v) / ratio-[xs|sm|md|lg|xl](width, h, v)

横幅( width デフォルトで 100% )と縦横比( h:v )を指定することで長方形(デフォルトで h = v 正方形)を作ります。
擬似要素 ::after のパディングを使って無理やり高さを出すやり方ですので、 ::after とは併用できません。

参考: レスポンシブデザインで要素の縦横比を固定する 可変幅で正方形

position: relative; が指定されます。内容物に position: absolute; などを指定して使用します。

.hd
  // ブラウザ横幅いっぱいで、レスポンシブな 16:9 の長方形を作ります
  ratio(100vw, 16, 9)
.square
  // レスポンシブな正方形を作ります
  ratio()

rfz(baseFontSize, baseWindowWidth) / rfz-[xs|sm|md|lg|xl](baseFontSize, baseWindowWidth)

特定のウインドウサイズ(=baseWindowWidth)におけるフォントサイズ(=baseFontSize)を指定することで、画面サイズの変更にあわせてほぼ同じ見た目で表示するvw単位指定でのフォントサイズに変換します。

メディアクエリを表す接尾辞をつけることもできます。

source
.hoge
  // iPhone6サイズのカンプで20pxで指定されていたフォント
  rfz-xs(20, 375)
yield
@media (max-width: 767.98px) {
  .hoge {
    font-size: 5.3vw;
  }
}

sz(width, height) / sz-[xs|sm|md|lg|xl](width, height)

width height 領域を指定します。 width のみの指定で正方形の領域を指定します。デフォルトで auto になります。

trbl0() / trbl0-[xs|sm|md|lg|xl]()

box内の天地左右中央に配置される position: absolute のボックスを生成します。別途 width height の指定が必要です。

略記一覧

引数の指定 () の前にmedia queryを示す接尾辞 -xs -sm -md -lg (-xl) をつけることで、それぞれ対応する条件にのみ適用されるようになります。

値固定

略記プロパティ
aib()align-itemsbaseline
aic()align-itemscanter
aifs()align-itemsflex-start
ais()align-itemsflex-start
aife()align-itemsflex-end
aie()align-itemsflex-end
bdn()bordernone
bdtn()border-topnone
bdrn()border-rightnone
bdbn()border-bottomnone
bdln()border-leftnone
bgn()backgroundnone
bgrn()background-repeatnone
bgszc()background-sizecover
clb()clearboth
clr()clearright
cll()clearleft
cln()clearnone
db()displayblock
df()displayflex
di()displayinline
dib()displayinline-block
dif()displayinline-flex
dli()displaylist-item
dn()displaynone
dtb()displaytable
dtbc()displaytable-cell
dtbcl()displaytable-column
dtbr()displaytable-row
flr()floatright
fll()floatleft
fln()floatnone
fxdc()flex-directioncolumn
fxdcr()flex-directioncolumn-reverse
fxdr()flex-directionrow
fxdrr()flex-directionrow-reverse
fxwn()flex-wrapnowrap
fxww()flex-wrapwrap
fxwwr()flex-wrapwrap-reverse
fwb()font-weightbold
fwn()font-weightnormal
jcc()justify-contentcenter
jcfe()justify-contentflex-end
jcfs()justify-contentflex-start
jcsa()justify-contentspace-around
jcsb()justify-contentspace-between
lisn()list-stylenone
oln()outlinenone
offl()object-fitfill
ofcn()object-fitcontain
ofcv()object-fitcover
ofn()object-fitnone
ofsd()object-fitscale-down
ova()overflowauto
ovh()overflowhidden
ovs()overflowscroll
ovv()overflowvisible
ovxa()overflow-xauto
ovxh()overflow-xhidden
ovxs()overflow-xscroll
ovxv()overflow-xvisible
ovya()overflow-yauto
ovyh()overflow-yhidden
ovys()overflow-yscroll
ovyv()overflow-yvisible
poa()positionabsolute
pof()positionfixed
por()positionrelative
pos()positionstatic
poen()pointer-eventsnone
tac()text-aligncenter
tal()text-alignleft
tar()text-alignright
tdl()text-decorationline-through
tdn()text-decorationnone
tdo()text-decorationoverline
tdu()text-decorationunderline
vasup()vertical-alignsuper
vat()vertical-aligntop
vatt()vertical-aligntext-top
vam()vertical-alignmiddle
vabl()vertical-alignbaseline
vab()vertical-alignbottom
vatb()vertical-aligntext-bottom
vasub()vertical-alignsub
vh()visibilityhidden
vv()visibilityvisible
wsn()white-spacenormal
wsnw()white-spacenowrap
wsp()white-spacepre

値指定

略記プロパティデフォルト自動単位
bgsz(args)background-sizeautopx
bgc(color)background-colortransparent
bgi(image)background-image
bgp(args)background-potion50% 50%
fz(n)font-sizepx
c(color)color
ls(n)letter-spacingpx
lh(n)line-height
cnt(content)contentnone
m(args)marginautopx
mt(n)margin-topautopx
mr(n)margin-rightautopx
mb(n)margin-bottomautopx
ml(n)margin-leftautopx
mx(n)margin-rightautopx
margin-leftautopx
pd(args)**paddingpx
p-[xssmmdlgxl](args)**paddingpx
pt(n)padding-toppx
pr(n)padding-rightpx
pb(n)padding-bottompx
pl(n)padding-leftpx
px(n)padding-rightpx
padding-leftpx
t(n)topautopx
r(n)rightautopx
b(n)bottomautopx
l(n)leftautopx
trbl(args)top: args0autopx
right: args1autopx
bottom: args2autopx
left: args3autopx
w(n)widthautopx
h(n)heightautopx
bdrs(args)border-radius0px
bd(args)border
bdw(n)border-widthpx
bds(keyword)border-stylesolid
bdc(color)border-color
bdt(n)border-top
bdtw(n)border-top-widthpx
bdts(keyword)border-top-stylesolid
bdtc(color)border-top-color
bdr(n)border-right
bdrw(n)border-right-widthpx
bdrst(keyword)border-right-stylesolid
bdrc(color)border-right-color
bdb(n)border-bottom
bdbw(n)border-bottom-widthpx
bdbs(keyword)border-bottom-stylesolid
bdbc(color)border-bottom-color
bdl(n)border-left
bdlw(n)border-left-widthpx
bdls(keyword)border-left-stylesolid
bdlc(color)border-left-color
maw(n)max-widthnonepx
mah(n)max-heightnonepx
miw(n)min-widthpx
mih(n)min-heightpx
trf(args)transform
trfr(args)transform: rotate(args)*
trfrx(d)transform: rotateX(d)deg
trfry(d)transform: rotateY(d)deg
trfrz(d)transform: rotateZ(d)deg
trfsc(args)transform: scale(args)*
trfscx(n)transform: scaleX(n)
trfscy(n)transform: scaleY(n)
trfscz(n)transform: scaleZ(n)
trfsk(args)transform: skew(args)*
trfskx(d)transform: skewX(d)deg
trfsky(d)transform: skewY(d)deg
trft(args)transform: translate(args)*
trftx(val)transform: translateX(val)px
trfty(val)transform: translateY(val)px
trftz(val)transform: translateZ(val)px
fx(args)flex1
  • カンマ区切り3値または2値で指定する。1値のみの場合は同じ値が第1値第2値に適用される。 ** p() がbuiltin-functionとかぶっていたので変更 p- はメディアクエリ修飾子との組み合わせのみ使用可能
0.1.11

5 years ago

0.1.10

5 years ago

0.1.9

5 years ago

0.1.8

5 years ago

0.1.7

5 years ago

0.1.5

5 years ago

0.1.4

5 years ago

0.1.3

5 years ago

0.1.2

5 years ago

0.0.18

6 years ago

0.0.17

6 years ago

0.0.16

6 years ago

0.0.14

6 years ago

0.0.12

6 years ago

0.0.11

6 years ago

0.0.10

6 years ago

0.0.9

7 years ago

0.0.8

7 years ago

0.0.7

7 years ago

0.0.6

7 years ago

0.0.5

7 years ago

0.0.4-b

7 years ago

0.0.4

7 years ago

0.0.3

7 years ago

0.0.2

7 years ago

0.0.1

7 years ago