html2slimをついでに作った

Serverless Frameworkが有償化されるのでrailsに置き換えてみた - rochefort's blog
先日、html2slim を作り替えたという話をしたのですが、同じような実装なのでついでに slimに置換するHTML2SLIM を作ってみました。

ドメインは分けてnginxでそれぞれ受け付けて、1つのRails Applicationとして実装しています。

CSS周りが便利で新鮮でした

最近のcssはnestもできるし、変数も扱えるしで、scss/sass なくても十分使える印象です。 今回ベースカラーを変数を使って変更するようにしてみました。

やり方

Rails

Railsでbodyタグにカラーコードを埋め込むようにします。

<body style="--theme-color: #d47c00">

css

cssの方は、varを使って取り出すことができ、その値を変数としてセットすることができます。

/* bodyのstyle属性からtheme-colorを取得し、custom propertyにセット */
body {
  --base-color: var(--theme-color);
}

利用する側は、普通に変数として扱えます。

.header {
  background-color: var(--base-color);

ついでに

ベースカラーからちょっと色味を変えたいというような時も color-mix を使うことで実現できます。

  &:hover {
    color: color-mix(in srgb, var(--base-color) 30%, black);
  }

まとめると

cssではmbase-color変数を使った共通の定義だけしておいて、 あとはサーバーサイドでどの色を使うかというのをするだけで cssの設定を増やすことなく、複数パターンの出し分けができてしまいます。 めちゃ便利。