markdown样式覆盖的解决方案

8 篇文章 0 订阅

背景

        最近公司在搞的ai项目中遇到了一个场景,公司一个新的ai项目在最开始搭建项目的直接引用了reset.css,项目开发到一半需要引用react-markdown插件展示gpt返回的内容,但是渲染的时候发现例如h1、h2、li、ui标签等等的默认样式由于reset的原因直接失效了然而项目开发已经进行到一半了不可能直接将reset.css去掉。

解决

        查了各种插件相关的资料发现想通过插件本身的参数来解决是不太可能的,于是转念一想还是直接从css入手。

1.给节点加上class名

import Markdown from 'react-markdown'

export default () => {
    return <Markdown className="editor"># 标题h1</Markdown>
}

2.reset.css样式处理

*:not(.editor) {
    line-height: 1rem;
    margin: 0;
    padding: 0;
    ...
}

.editor {
    line-height: 1.5rem;
}

.editor * {
    line-height: inherit;
    margin: revert;
    padding: revert;
    ...
}

1.其中样式重置中的not(.editor)i排除选中文档流中class名为editor的节点但是这里不包括.editor下的子节点。
2.下面的.editor *是给.editor下的子节点进行revert默认样式还原
3.中间遇到line-height属性比较特殊直接revert无法直接还原样式因此我在.editor节点上直接设置line-height样式然后在子节点中通过inherit去继承父元素的样式

总结

        css还是有蛮多可玩性的,包括现在的css-in-js、unocss、.css文件、classNames、styledComponent等形式,虽然不可能完全剔除css代码,但是发展方向一直都是在精简css代码量在项目中的比重,例如我们这次就大量的采用unocss的方式配合少量的css-in-js和styledComponent大大降低了css代码在项目中的占比提高了代码的可读性。
        好的东西最终是会被慢慢接受的,最开始的时候团队里面都不适应unocss的css方式但是在这次的项目开发下来也都是欣然的接受了unocss。

弱者是没有资格谈正义的

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值