由于CSSReset-Chakra ui,标记没有正确显示



我正在做一个NextJs博客,我必须在一个动态页面中呈现我的标记。CSSReset正在我的应用程序中使用,因此,markdown没有正确显示。有人能帮我吗??

我的主题联系人

0 import React from "react";
1 
2 import {
3   ThemeProvider as ChakraThemeProvider,
4   ColorModeProvider,
5   CSSReset,                                   
6 } from "@chakra-ui/core";
7                                                                                        
8 import { ThemeProvider as EmotionThemeProvider } from "emotion-theming";
9 import theme from "../styles/theme";
10 
11 export const ThemeContainer = ({ children }) => {
12   return (
13     <ChakraThemeProvider theme={theme}>
14       <ColorModeProvider value={"light"}>
15         <EmotionThemeProvider theme={theme}>
16           <CSSReset />                                    
17           {children}                                                                                      
18         </EmotionThemeProvider>                                                                           
19       </ColorModeProvider>                                                                                
20     </ChakraThemeProvider>                                                                                
21   );
22 };

我的降价文件

10 const Post = (postData: Post) => {
+  11   const content = hydrate(postData.source);
+  12 
+  13   console.log(content);
_  14 
15   return (
~  16     <Flex w="full" overflowY="hidden">
~  17       <div>{content}</div>
~  18     </Flex>
19   );
20 };
21 
22 export default Post;

我还没有做造型,因为我想知道如何解决我遇到的这个问题,所以我只留下了一个渲染内容的小组件

我应该尝试分叉这个CSSReset并删除使它发生的样式吗??

我不久前也遇到了同样的问题。我不建议将ChakraUI用于Markdown,因为它需要重置导致此问题的所有CSS样式,但如果你有一个同时具有静态和动态(非Markdown(网站的混合应用程序,并且你只想在动态网站上使用ChakraUI及其CSSReset,那么在这种情况下,你可以修改你的_app或ThemeContainer,如下所示,以防止CSSReset应用于您的Markdown站点:

假设你有像x.com/[slug]这样的动态页面和像x.com/blog/[slug]这样的静态页面

import { useRouter } from "next/router";
<ChakraThemeProvider theme={theme}>
<ColorModeProvider value={"light"}>
<EmotionThemeProvider theme={theme}>
{!useRouter().asPath.includes("/blog/") ? <CSSReset /> : null}                                    
{children}                                                                                      
</EmotionThemeProvider>                                                                           
</ColorModeProvider>                                                                                
</ChakraThemeProvider>

这将阻止CSSReset组件在您的静态页面上呈现(如果它们的路径包括/blog/(,但ChakraUI在任何其他路径上仍然可以正常工作。

但是,ChakraUI并不是一个很好的Markdown风格解决方案,因为它需要CSSReset才能正常工作。

这个解决方案对我有效(在_app.js文件中(。

当我试图按照Next.js官方教程使用Chakara UI创建博客时,我也遇到了同样的问题。

我的问题是,remak.js从markdown文件中呈现HTML标记,但HTML标记没有样式,因为Chakra UI需要CSSReset。设置{resetCSS={false}把我的网站搞砸了

我通过在theme.js.中的全局样式中添加HTML标记的默认CSS来解决这个问题

但这感觉像是一个愚蠢的解决方案,我正在寻找更好的解决方案以及

const styles = {
global: (props) => ({
body: {
bg: mode("#f0e7db", "#111111")(props),
},
p: {
display: "block",
marginBlockStart: "1em",
marginBlockEnd: "1em",
marginInlineStart: "0px",
marginInlineEnd: "0px",
lineHeight: "200%",
},
li: {
display: "list-item",
textAlign: "-webkit-match-parent",
},
ul: {
paddingInlineStart: "20px",
},
ol: {
display: "block",
listStyleType: "decimal",
marginBlockStart: "1em",
marginBlockEnd: "1em",
marginInlineStart: "0px",
marginInlineEnd: "0px",
paddingInlineStart: "40px",
},
h1: {
display: "block",
fontSize: "2em",
marginBlockStart: "0.67em",
marginBlockEnd: "0.67em",
marginInlineStart: "0px",
marginInlineEnd: "0px",
fontWeight: "bold",
},
h2: {
display: "block",
fontSize: "1.5em",
marginBlockStart: "0.83em",
marginBlockEnd: "0.83em",
marginInlineStart: "0px",
marginInlineEnd: "0px",
fontWeight: "bold",
},
h3: {
display: "block",
fontSize: "1.17em",
marginBlockStart: "1em",
marginBlockEnd: "1em",
marginInlineStart: "0px",
marginInlineEnd: "0px",
fontWeight: "bold",
},
h4: {
display: "block",
fontSize: "1em",
marginBlockStart: "1.33em",
marginBlockEnd: "1.33em",
marginInlineStart: "0px",
marginInlineEnd: "0px",
fontWeight: "bold",
},
h5: {
display: "block",
fontSize: "0.83em",
marginBlockStart: "1.67em",
marginBlockEnd: "1.67em",
marginInlineStart: "0px",
marginInlineEnd: "0px",
fontWeight: "bold",
},
a: {
color: "#58a6ff",
},
pre: {
display: "block",
fontFamily: "monospace",
whiteSpace: "pre",
margin: "1em 0",
},
strong: {
fontWeight: "bold",
},
em: { fontStyle: "italic" },
blockquote: {
display: "block",
marginBlockStart: "1em",
marginBlockEnd: "1em",
marginInlineStart: "40px",
marginInlineEnd: "40px",
borderLeft: "5px solid #ccc",
margin: "1.5em 10px",
padding: "0.5em 10px 0.5em 10px",
},
code: { fontFamily: "monospace" },
}),
};

相关内容

  • 没有找到相关文章

最新更新