gulpとsassを使って、olリストのアイコンを連番の丸数字にするcssを作成しようと考えています。
下記のようなリストです。
① 項目1 ② 項目2 ③ 項目3
これを実現するために以下のようなhtmlとgulpfileとsassを作成しました。
なお、sassからcssに変換するために使用しているプラグインは、gulp-sassです。
coffeescript
1# gulpfile.coffee 2gulp = require("gulp") 3plugins = require("gulp-load-plugins")() 4 5gulp.task "sass", -> 6 gulp.src("**.sass") 7 .pipe plugins.plumber 8 errorHandler: plugins.notify.onError("Error: <%= error.message %>") 9 .pipe plugins.sourcemaps.init() 10 .pipe plugins.sass 11 outputStyle: 'expanded' 12 .pipe plugins.autoprefixer() 13 .pipe plugins.sourcemaps.write "./" 14 .pipe gulp.dest("./") 15 16gulp.task "default", -> 17 gulp.watch "**/*.sass", ["sass"]
html
1<ol class="list"> 2 <li class="item">項目1</li> 3 <li class="item">項目2</li> 4 <li class="item">項目3</li> 5</ol>
scss
1//拡張子はscssではなくsassです。 2.list 3 list-style-type: none 4.item 5 @for $i from 1 through 3 6 $counter: 2459 + $i 7 &:nth-of-type(#{$i}) 8 &:before 9 content: "\0#{$counter}"
contentに直接丸数字を入れるのではなく、数値文字参照を入れている理由としては、liが増減したときに、forのカウントだけ変えれば済むようにしたかったためです。
\02460が①を表し、今回はliの数が3つなので数値文字参照は\02460~\02462、つまりブラウザ上では①~③が出力されるはずです。
(環境によってはバックスラッシュが円マークになりますが、以下バックスラッシュで呼びます)
しかし、実際にgulpを立ち上げ、sassを保存してcssに変換させると、下記の出力結果になりました。
css
1.list { 2 list-style-type: none; 3} 4 5.item:nth-of-type(1):before { 6 content: "\\02460"; 7} 8 9.item:nth-of-type(2):before { 10 content: "\\02461"; 11} 12 13.item:nth-of-type(3):before { 14 content: "\\02462"; 15}
それぞれバックスラッシュを一つしか入れていないのに、バックスラッシュが二つ出力されてしまいました。
また、いちおうブラウザで表示してみると、下記のような結果になり、望んでいたものとは異なります。
\02460 項目1 \02461 項目2 \02462 項目3
このままだと、sassを保存する度に、cssからバックスラッシュを一つ取り除く作業をしなければいけないので、非常に困ります。
どうしたらバックスラッシュを二つにすることなくcssを出力できるようになるのでしょうか?

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。