提问人:NemuLumeN 提问时间:11/6/2023 最后编辑:NemuLumeN 更新时间:11/8/2023 访问量:27
如何防止@media破坏某些 Kobo EPUB 阅读器上对 CSS 文件的解析?
How to prevent @media from breaking the parsing of the CSS file on some Kobo EPUB readers?
问:
我正在研究 EPUB 3 文件的样式。
我有一个包含查询的CSS。@media
@media (min-width: 460pt) {
aside {
float: right;
max-width: 40%;
margin: 10pt 0 10pt 15pt;
}
}
在浏览器上下文或 Calibre 中呈现时,它会按预期工作。但是在 Kobo Clara HD 上,这会破坏 CSS 文件;规则根本不加载。
删除查询后,CSS 文件将再次工作。因此,问题仅限于此功能。@media
我试图将 放入另一个文件中并使用 .结果:主CSS不再被破坏;但问题是,在有效的上下文中,规则的顺序不正确,因此应用的规则不是我想要的规则。换句话说,该规则必须介于我想要设置样式的元素的主要规则之间,但由于该规则必须首先根据 CSS 规范定义,因此它不符合我的要求。@media
@import
@media
@media
@import
- 好吧,理论上我可以将我的主 CSS 文件解构为 3 个文件(开头、媒体、其余文件),每个文件都用 ,但这似乎太过分了;我需要在添加规则的任何地方破坏主CSS文件。
@import
@media
- 我不能使用 ,因为主文件中的后续规则会重置媒体中的某些规则。
!important
关于,我没有找到任何检查规则是否受支持的规则。我尝试了以下方法:@supports
@supports
@media
@supports selector(div) {
/* The same rules from the previously shown code block. */
}
它使主要的 CSS 文件工作,因为现在(2023 年 11 月)仍处于实验阶段,并且在我的 Kobo 上不受支持。但它所展示的是:我们可以有一种方法可以禁用规则块。@supports selector(...)
@media
@supports
有什么解决方法吗?
答:
这是因为,对于 Kobo 电子阅读器,高级 CSS 功能是为文件而不是文件加载的。这些文件是用一个破碎的(或简单的)CSS实现来呈现的。.kepub.epub
.epub
.epub
只需将文件的扩展名更改为 ,样式表就不会因 而失败。.kepub.epub
@media
不要使用 Calibre 传输文件;否则 Calibre 会将扩展名改回 ,因此最好将文件直接复制到存储中。如果您真的想使用 Calibre,请安装 Calibre 的第三方扩展 KoboTouchExtended。.epub
此更改后,其他不受支持的 CSS 功能也将开始工作,例如 和 / 。这也将使脚注预览正常工作(只要文件中的实现是正确的)。:not
::before
::after
要区分 Kobo Clara HD 上加载的 EPUB 和 KEPUB 文件,在电子书列表中,您将在书名旁边找到文件类型:
.epub
文件被标记为“EPUB”.kepub.epub
作为“KOBO EPUB”。
评论