Bootstrapに様々なPlugin、テーマを追加したKickstrap
Twitter Bootstrapに機能を追加したKickstrapというツール?フレームワーク?の中身を色々みてみました。
https://github.com/ajkochanowicz/Kickstrap
$ git clone https://github.com/ajkochanowicz/Kickstrap.git
$ cd Kickstrap
$ open index.html
これで一応どんなサイトを作れるかをみることができます
構成
KickstrapはTwitter Bootstrapのフォークです。
追加されている機能はextrasフォルダにぶちこんであります。
extras ├── animate ├── chosen ├── css ├── fontawesome ├── h5bp ├── icomoon ├── jgrowl ├── prettify ├── settings └── themes
settings/以下にoverrides.lessというファイルがあり、これがless/bootstrap.lessの最後に@importされるようになってます。
後述するテーマ変更にはsettings/theme.lessを編集します。
make bootstrap が動かない
トップにMakefileがありますが、make bootstrapはエラーになります。
$ make bootstrap mkdir -p bootstrap/img mkdir -p bootstrap/css mkdir -p bootstrap/js cp img/* bootstrap/img/ lessc ./less/bootstrap.less > bootstrap/css/bootstrap.css lessc --compress ./less/bootstrap.less > bootstrap/css/bootstrap.min.css lessc ./less/responsive.less > bootstrap/css/bootstrap-responsive.css NameError: .input-block-level is undefined in /Users/yuhei/Downloads/Kickstrap/less/responsive.less:185:4 184 .uneditable-input { 185 .input-block-level(); 186 }
responsive.lessのコンパイルでエラーになります。
中身を見てみるとless/responsive.lessはv2.0.2で、@importされているless/mixins.lessは古いバージョン(v2.0.1?)みたいです。
responsive.lessについてはmixins.lessに合致するバージョンがextras/settings/overrides.lessに直接記述されているので、
less/responsive.lessのコンパイルは必要ないんですね。
前述したようにoverrides.lessはbootstrap.lessの最後で@importされてます。
このあたりはごちゃごちゃしてますが、そのうち整理されるんじゃないでしょうか?
いまのところMakefileはTwitter bootstrapのファイルがそのまま置いてあるだけで、更新されておらず、.gitignoreの対象になってます。
https://github.com/ajkochanowicz/Kickstrap/issues/11
responsive.lessのコンパイルをコメントアウトすれば一応動かせます
# # BUILD SIMPLE BOOTSTRAP DIRECTORY # lessc & uglifyjs are required # bootstrap: mkdir -p bootstrap/img mkdir -p bootstrap/css mkdir -p bootstrap/js cp img/* bootstrap/img/ lessc ${BOOTSTRAP_LESS} > bootstrap/css/bootstrap.css lessc --compress ${BOOTSTRAP_LESS} > bootstrap/css/bootstrap.min.css #lessc ${BOOTSTRAP_RESPONSIVE_LESS} > bootstrap/css/bootstrap-responsive.css #lessc --compress ${BOOTSTRAP_RESPONSIVE_LESS} > bootstrap/css/bootstrap-responsive.min.css cat js/bootstrap-transition.js js/bootstrap-alert.js js/bootstrap-button.js js/bootstrap-carousel.js js/bootstrap-collapse.js js/bootstrap-dropdown.js js/bootstrap-modal.js js/bootstrap-tooltip.js js/bootstrap-popover.js js/bootstrap-scrollspy.js js/bootstrap-tab.js js/bootstrap-typeahead.js > bootstrap/js/bootstrap.js uglifyjs -nc bootstrap/js/bootstrap.js > bootstrap/js/bootstrap.min.js
テーマを切り替える
extras/settings/theme.lessの適用したいテーマの行をコメントアウトしてから、less/bootstrap.lessをコンパイルします。
lessc less/bootstrap.less > css/bootstrap.css
コメントにもありますが、@importしていいのはひとつだけです。
extras/settings/theme.less
//THEME //----- // Switch to a theme by uncommenting [remove the '/'s from] the @import lines. // (one and only one line!) // A more user-friendly way to do this is coming :) // Thanks to bootswatch for the themes: http://bootswatch.com/ // CERULEAN // @import "../themes/cerulean/less/cerulean.less"; // SLATE // @import "../themes/slate/less/slate.less"; // SPRUCE // @import "../themes/spruce/less/spruce.less"; // CYBORG // @import "../themes/cyborg/less/cyborg.less"; // AMELIA // @import "../themes/amelia/less/amelia.less"; // SIMPLEX // @import "../themes/simplex/less/simplex.less"; // JOURNAL // @import "../themes/journal/less/journal.less"; // READABLE // @import "../themes/readable/less/readable.less"; // SANDRA @import "../themes/sandra/less/sandra.less"; // SPACELAB // @import "../themes/spacelab/less/spacelab.less"; // SUPERHERO // @import "../themes/superhero/less/superhero.less"; // UNITED // @import "../themes/united/less/united.less"; //-------- //END THEME
感想
Twitter Bootstrapのバージョンが微妙に古い、themeの切り替えがちょっと面倒、makeが動かない、あたりが気になりますが、構成がわかってればそれなりに対処できます。
追加されてる機能については、「へー、こんなのあったんだ」と思うのもあったりして、面白かったです。
あと、html5boilerplateは、もともとtwitter bootstrapと一緒に使いたいと思ってたので、最初っから一緒になってるのは面倒がなくていいと思いました。
[おまけ]追加されている機能のメモ
- Animate.css
class指定でアニメーションが使用できるスタイルシート
- Font Awesome
http://fortawesome.github.com/Font-Awesome/
商用無料のアイコン用のWebフォント
- IcoMoon
これもアイコン用のフォント
- HTML5 Boilerplate
HTML5でweb開発をする上で必要な数多くの機能強化を他のベスト・プラクティスの数々と組み合わせ
index.htmlのサンプル、JQuery、Modernizrなど
- Chosen
http://harvesthq.github.com/chosen/
jsでフォームのselect要素を機能追加
- jGrowl
http://archive.plugins.jquery.com/project/jGrowl
jsでGrowl風の通知を行う
- テーマ機能
Bootswatchのテーマを切り替えられます
http://bootswatch.com/
- One Line CSS Grid
http://adamkochanowicz.com/oneline.html
twitter bootstrapが用意しているグリッドとは別にもうひとつグリッド機能を追加
- その他いろいろ
IE6への対応とかも追加されているらしい