Closed akabekobeko closed 2 years ago
Frontmatter 刷新 #76 の際にルートへ定義する class
は <html>
のみを対象とし、<body>
は body
内の class
とすることになった。破壊的な変更であるがアルファ版のバージョン間なのでよしとした。
しかし Slack にて互換を維持したいという要望があり、対応もさほど難しくないので改めて body
側へも反映するように検討する。反映のルールについては class
と html
の関係を踏襲して以下のようにする予定。
class
が定義されていればそれを <body class="...">
へ指定class
が未定義、かつ body
内に class
が定義されていればそれを <body class="...">
へ指定つまりはルートを最優先とする。
HTMLのclass属性はスペースで区切って複数のクラス名を指定できるものなので、yamlのルート、html、bodyにそれぞれclassの指定があるとき次のようにHTMLに反映されることを期待します:
---
class: "mypage"
html:
class: "myroot"
body:
class: "mybody"
---
to
<html class="mypage myroot">
<body class="mypage mybody">
</body>
</html>
@MurakamiShinyu
既に実装済みの html
もそのようになっていません。よって新機能ですね。この案へ対応する場合、ルートの class
と html
、body
のものが同内容だった場合は
---
class: "mypage"
html:
class: "mypage"
body:
class: "mypage"
---
重複を判定しますか?
<html class="mypage">
<body class="mypage">
</body>
</html>
それともユーザーの自己責任ということで許容しますか?
<html class="mypage mypage">
<body class="mypage mypage">
</body>
</html>
HTMLで class="mypage mypage"
のようなclass属性の指定があっても class="mypage"
と指定されているのと同じく、CSSのセレクタ .mypage
で選択されるので、特に問題は起きません。
HTMLのvalidator https://validator.w3.org/ で class="mypage mypage"
のあるHTMLをチェックしても、特に警告も出ません。
重複除去の処理をしてもしなくてもどちらでもよいと思います。
私としては
ことから判定はせず単純に結合でよいと考えています。なお判定するとしてもスペース区切りで split して配列化してから重複除去するだけですので対応は容易です。
@MurakamiShinyu 重複しても問題ないとのことですので、単純なスペース区切りの結合にします。
本件は #120 により対応されたので close する。v1.0.0 に反映予定。
Goals
to
Prior Art
None
Discussion
Vivliostyle Slack's
#vfm
channel.