6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Compass で compressed 出力した BOM 付き css を単純結合するとスタイルが効かなくなる

Last updated at Posted at 2015-03-20

問題

Compass で output_style = :compressed で scss をコンパイルすると、@charset 指定が消されて BOM(Byte Order Mark)が付与される。これは Sass の仕様らしい(このへん)。

で、その css を単純に読みこむだけなら、困ることもないのだが、HTTP リクエスト数を減らす目的で、出力したファイル群を単純結合したりすると、ファイルの途中に BOM(U+FEFF) が含まれることになり、ブラウザ側でスタイルを解釈できないという問題がある。

bomcss2.png

bomcss.png

解決策

結合時にフィルタ処理などで冒頭以外の BOM を削除してやれば良い。
PHP だと以下のように書ける。

preg_replace('/(?<=.)\x{FEFF}/us', '', $combined_css);

状況によっては他の(UTF8 とか UTF16-LEとかの)BOM が付く場合もあるので、適当に対応してやる必要があるかも知れない。

参考

6
6
2

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
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?