vivliostyle / themes

💅 Beautifully crafted CSS themes.
https://vivliostyle.github.io/themes/
Other
30 stars 10 forks source link

言語別のCSS変数設定は `:lang(ja) { … }` は `:root:lang(ja) { … }` のほうがよくないか #126

Closed MurakamiShinyu closed 2 months ago

MurakamiShinyu commented 2 months ago

:root { … } で定義したCSS変数に対して、言語別のCSS変数の値が :lang(ja) { … } のようなルールで定義されています。

例えば、Vivliostyle Base Themeの次のところ:

https://github.com/vivliostyle/themes/blob/ebf926f25ccec72fc01bf7f27cad6dcac4af9273/packages/%40vivliostyle/theme-base/css/partial/section.css#L24-L32

このほか、以下の箇所も同様:

https://github.com/vivliostyle/themes/blob/ebf926f25ccec72fc01bf7f27cad6dcac4af9273/packages/%40vivliostyle/theme-base/css/partial/crossref.css#L37

https://github.com/vivliostyle/themes/blob/ebf926f25ccec72fc01bf7f27cad6dcac4af9273/packages/%40vivliostyle/theme-academic/theme.css#L76

https://github.com/vivliostyle/themes/blob/ebf926f25ccec72fc01bf7f27cad6dcac4af9273/packages/%40vivliostyle/theme-bunko/theme.css#L64

これらの :lang(ja) { … }:root:lang(ja) { … } に修正した方がよいのではないでしょうか? 以下の理由です。

もしも、ルート要素だけでなく、文書の途中での lang 属性での言語指定にも対応する必要があるのならば :lang(ja) { … } ではなくて [lang|="ja"] { … } のような属性セレクタを使うのがよいと思います。

spring-raining commented 2 months ago

確かに :lang(ja) よりも :root:lang(ja) によるセレクタのほうが良さそうです。

もしも、ルート要素だけでなく、文書の途中での lang 属性での言語指定にも対応する必要があるのならば :lang(ja) { … } ではなくて [lang|="ja"] { … } のような属性セレクタを使うのがよいと思います。

このような意図はありませんでした。ただ、文章内で lang 属性を指定するようなケースは少ないと思うので、Vivliostyle themesとしてはそこまではサポートせず :root:lang(ja) の指定が良いかと思います。