如何理解HTML预览样式的构成和优先级

HTML 的样式是如何生成的?

在 MarkEditor 中,原始文本在预览的时候,会解析为带样式的 HTML 源码,其中对应的样式(CSS)由下面三部分组成:
一、根据当前视觉 Theme(主题) 自动生成。
这是最基础的部分,不同步的 Theme 对应的 CSS 样式也是不同的。

二、插件(比如微信公众号的样式也属于这部分)中提供的 CSS 规则,最终也会嵌入页面中。

三、根据当前工作目录的设定,内嵌的 CSS 样式。

如何理解这些样式的优先级?

如上三种 CSS 样式的组成,实际是 一+二+三 的次序,同时 产生最终样式的。
除了第一部分作为基础之外,在多数场景下,应该只要出现一个,以避免冲突。比如应该要尽可能避免:
1, 同时使用 根目录设置中的 CSS、模板设定 以及 微信公众号的自定义 CSS
2,同时使用 微信公众号的自定义 CSS 以及 Markdown to Slide 这个插件;
3,依次类推……

不然可能会产生《为什么预览的样式跟编辑器主题不匹配》这样的问题。
当然,利用现有的规则,我们也可以实现《如何让文章的样式和预览的样式不一样》如此特别的效果。

利用嵌入的 CSS 样式进行微调

在具体嵌入的 CSS 样式中,一般会有继承优先级的问题,所以,微调的时候,经常会使用 !import 这种标记。
比如可以参考 《如何处理加粗语法和样式修饰语法的色彩冲突》

HTML 的样式,最终会作用于什么地方?

最终的 HTML 的呈现,需要这些 CSS 样式的支持,这些样式会改变:
1,MarkEditor 内预览栏的结果
2,基于浏览器的预览页面
3,导出的 PDF、图片 时候的样式

但是,如果最终内容同步到比如 Bitcron 的外部,则页面的最终样式,并不是 MarkEditor 决定的,而是具体网站的模板文件决定的。

2018-06-08 23:39
Comments
Write a Comment