如何在服务器组件中使用 Auth.js v5。
本网站正在建设中。如果您在页面上看到虚拟文本,说明我还在处理它。您可以在 Twitter 上关注更新 @shadcn。
</Callout> <Callout> 下面的文本来自 [Tailwind CSS](https://play.tailwindcss.com/uj1vGACRJA?layout=preview) 文档。我把它复制到这里来测试 markdown 样式。**Tailwind 非常棒。你应该使用它。** </Callout>到目前为止,尝试使用 Tailwind 样式化文章、文档或博客文章一直是一项需要敏锐的排版眼光和大量复杂自定义 CSS 的繁琐任务。
默认情况下,Tailwind 会移除段落、标题、列表等所有默认的浏览器样式。这对于构建应用程序 UI 非常有用,因为你花在撤销用户代理样式上的时间更少,但当你 真正 只是想样式化一些来自 CMS 或 markdown 文件的富文本编辑器内容时,这可能会令人惊讶且不直观。
实际上我们收到了很多关于这方面的投诉,人们经常问我们:
为什么 Tailwind 会移除我的
h1
元素的默认样式?我该如何禁用它?你是什么意思,我会失去所有其他基础样式吗? 我们听到了,但我们不认为简单地禁用我们的基础样式是你真正想要的。你不想每次在仪表板 UI 的某个部分使用p
元素时都要移除烦人的边距。而且我怀疑你真的希望你的博客文章使用用户代理样式——你希望它们看起来 很棒,而不是糟糕。
@tailwindcss/typography
插件是我们试图给你 真正 想要的东西,而没有做一些愚蠢的事情比如禁用我们的基础样式的缺点。
它添加了一个新的 prose
类,你可以将其应用于任何普通的 HTML 内容块,将其变成一个美观、格式良好的文档:
<article class="prose"> <h1>奶酪蒜蓉面包:科学告诉了我们什么</h1> <p> 多年来,父母们一直向他们的孩子宣扬吃奶酪蒜蓉面包的健康益处,这种食物在我们的文化中获得了如此标志性的地位,以至于孩子们经常在万圣节打扮成温暖的奶酪面包。 </p> <p> 但最近的一项研究表明,这种著名的开胃菜可能与全国各地出现的一系列狂犬病病例有关。 </p> </article>
有关如何使用该插件及其包含的功能的更多信息,请阅读文档。
接下来是我写的一堆绝对无意义的内容,用来测试插件本身。它包括我能想到的每一个合理的排版元素,比如 粗体文本、无序列表、有序列表、代码块、块引用、甚至斜体。
涵盖所有这些用例很重要,原因有几个:
现在我们要尝试另一种标题样式。
所以这是一个标题——如果我们做得正确的话,它看起来应该相当合理。
一个聪明人曾经告诉我关于排版的一些事情:
如果你不想让你的东西看起来像垃圾,排版是非常重要的。做好它,那么它就不会糟糕。
默认情况下,图像看起来也应该不错:
<Image src="/_static/blog/blog-post-4.jpg" width="718" height="404" alt="Image" />
与普遍的看法相反,Lorem Ipsum 并不是简单的随机文本。它起源于公元前 45 年的一篇古典拉丁文学作品,已有 2000 多年的历史。
现在我要展示一个无序列表的例子,以确保它看起来也不错:
这部分到此结束。
有时你会有直接在彼此下面的标题。在这些情况下,你通常需要撤销第二个标题的顶部边距,因为标题彼此靠得更近通常看起来比段落后面跟着一个标题要好。
当标题在段落之后出现时,我们需要更多的空间,就像我上面提到的。现在让我们看看一个更复杂的列表会是什么样子。
我经常做这种列表项目有标题的事情。
出于某种原因,我认为这看起来很酷,这很不幸,因为要正确地设置样式非常麻烦。
我经常在这些列表项目中有两到三个段落,所以难点在于让段落之间、列表项目标题和单独的列表项目之间的间距都合理。说实话,这真的很难,你可以强烈主张你不应该这样写。
既然这是一个列表,我至少需要两个项目。
我已经在前一个列表项目中解释了我在做什么,但如果只有一个项目,列表就不是列表了,我们真的希望这看起来真实。这就是为什么我添加了这个第二个列表项目,这样我在编写样式时实际上有东西可以看。
添加第三个项目也不是个坏主意。
我认为只使用两个项目可能已经很好了,但三个肯定不会更糟,而且既然我似乎毫不费力地编造任意的东西来打字,我不妨把它包括在内。
在这种列表之后,我通常会有一个结束语或段落,因为直接跳到标题看起来有点奇怪。
我认为大多数人会使用 highlight.js 或 Prism 或其他东西,如果他们想要样式化他们的代码块,但即使没有语法高亮,让它们看起来 还可以 也无妨。
这是在编写时默认的 tailwind.config.js
文件的样子:
module.exports = { purge: [], theme: { extend: {}, }, variants: {}, plugins: [], };
希望这对你来说看起来足够好。
嵌套列表基本上总是看起来很糟糕,这就是为什么像 Medium 这样的编辑器甚至不让你这样做,但我猜既然你们中的一些傻瓜会这样做,我们必须承担至少让它工作的负担。
Markdown 中列表最烦人的事情是 <li>
元素除非列表项目中有多个段落,否则不会有子 <p>
标签。这意味着我还得担心样式化这种烦人的情况。
例如,这里是另一个嵌套列表。
但这次有第二段。
<p>
标签但在这个第二个顶级列表项目中,它们会有。
这尤其烦人,因为这个段落的间距。
正如你在这里看到的,因为我添加了第二行,这个列表项目现在有一个 <p>
标签。
这就是我在说的第二行。
最后这里是另一个列表项目,所以它更像一个列表。
一个结束的列表项目,但没有嵌套列表,因为为什么不呢?
最后一句话来结束这个部分。
我差点忘了提到链接,比如这个链接到 Tailwind CSS 网站。我们差点把它们做成蓝色,但那太过时了,所以我们选择了深灰色,感觉更有边缘感。
我们甚至包括了表格样式,看看:
| 摔跤手 | 出生地 | 必杀技 | | ----------------------- | ------------ | ------------------ | | Bret "The Hitman" Hart | Calgary, AB | Sharpshooter | | Stone Cold Steve Austin | Austin, TX | Stone Cold Stunner | | Randy Savage | Sarasota, FL | Elbow Drop | | Vader | Boulder, CO | Vader Bomb | | Razor Ramon | Chuluota, FL | Razor's Edge |
我们还需要确保内联代码看起来不错,比如如果我想谈论 <span>
元素或告诉你关于 @tailwindcss/typography
的好消息。
code
尽管这可能是个坏主意,而且历史上我很难让它看起来不错。这种 "用反引号包裹代码块" 的技巧实际上效果很好。
我过去做的另一件事是将 code
标签放在链接内,比如如果我想告诉你关于 tailwindcss/docs
仓库的事情。我不喜欢反引号下面有下划线,但绝对不值得为了避免它而付出疯狂的代价。
h4
但现在我们用了。请不要在你的内容中使用 h5
或 h6
,Medium 只支持两个标题级别是有原因的,你们这些动物。我真的考虑过使用 before
伪元素来对你们使用 h5
或 h6
时大喊大叫。
我们根本没有对它们进行样式化,因为 h4
元素已经很小了,它们和正文一样大。我们应该怎么处理 h5
,让它比正文还小吗?不,谢谢。
h4
元素。呼,希望我们已经对上面的标题进行了样式化,它们看起来不错。
让我们在这里添加一个结束段落,这样事情就以一个大小合适的文本块结束。我无法解释为什么我希望事情以这种方式结束,但我必须假设这是因为我认为如果标题离文档末尾太近,事情会看起来很奇怪或不平衡。
我在这里写的内容可能已经足够长了,但添加这最后一句话不会有坏处。
我还使用 remark-gfm
添加了对 GitHub 风格 Markdown 的支持。
使用 remark-gfm
,我们在 markdown 中获得了一些额外的功能。例如:自动链接文字。
像 www.example.com 或 https://example.com 这样的链接会自动转换为 a
标签。
这也适用于电子邮件链接:[email protected]。