网站色卡
#333C3D
#ABB9BA
#D1E2E3
#DAECED
#005766
#00798F
#3398AA
#95ECF0
#BD0055
#FFD4E7
#C5B100
#FFE564
#FFF7D2
HTML + Markdown Hybrid
当你想在一个 HTML 元素中使用 Markdown 语法时,在 HTML 标签上添加 markdown=1
即可。
例子:
代码
<div>
This is a simple HTML Tag **WITHOUT** Markdown Hybrid Support
</div>
<div markdown=1>
This is an HTML Tag **WITH** Markdown *Hybrid* Support
</div>
结果
This is an HTML Tag WITH Markdown Hybrid Support
图标系统
网站使用 liquid
模板语法制作了图标系统。当你想在文本中插入图标时,使用
{% include fn/icon.html type="icon-type" size="1.5rem" %}
即可在渲染出的 HTML 网页中看到 svg 图标被渲染在文字中。
例子假如我想在 Java 前面插入图标……
假如我想在 {% include fn/icon.html type="java" size="2rem" %}Java 前面插入图标……
在正常的使用中,如果你希望图标大小与文字大小相匹配,我们也建议你使用 size="1.5rem"
。
这是一个 1.5rem 大小的图标例子。
{% include fn/icon.html type="star" size="1.5rem" %} 这是一个 1.5rem 大小的图标例子。
当前网页支持的图标类型
Type | Sample (size=2rem) |
---|---|
star | This is Inline Icon called star! |
download | This is Inline Icon called download! |
zipFile | This is Inline Icon called zipFile! |
python | This is Inline Icon called python! |
java | This is Inline Icon called java! |
people | This is Inline Icon called people! |
calander | This is Inline Icon called calander! |
tag | This is Inline Icon called tag! |
This is Inline Icon called wechat! | |
upload | This is Inline Icon called upload! |
warning | This is Inline Icon called warning! |
history | This is Inline Icon called history! |
rss | This is Inline Icon called rss! |
所有图标的 svg 代码来源与这里
Tricks of Beautiful Layout
no-decoration
取消超链接装饰
在网站的正文中,所有的超链接都会像 这样 有一个🔗的标志和下划线。在大部分情况中,这样的样式可以丰富文章内容的视觉效果。然而,在个别情况中,我们并不希望这样的装饰出现,因为这会破坏原有的样式。
为了解决这样的问题,我们特别设计了 no-decoration
类型。当你有一个部分的内容不希望其中的 <a>
被渲染出装饰,请将它们囊括在 <div class="no-decoration">
中。
例子这是一行正常的内容,链接有装饰。
这是一行在
no-decoration
中的内容,链接没有装饰。
<p>
这是一行正常的内容,<a>链接</a>有装饰。
</p>
<div class="no-decoration">
<p>
这是一行在<code>no-decoration</code>中的内容,<a>链接</a>没有装饰。
</p>
</div>
toc_ignore
取消侧边目录收录
有的时候我们不希望一个 heading (如h2
, h3
, h4
, etc.)被自动添加到页面左侧的目录中。通过在不想被收录的标题 HTML Tag 中添加 class="toc_ignore"
即可防止自动生成目录收录这个标题。
例子:注意观察左侧 TOC
被 TOC 收录的例子
不被 TOC 收录的例子
<h4>被 TOC 收录的例子</h4>
<h4 class="toc_ignore">不被 TOC 收录的例子</h4>
页面样式
在 markdown 中,你可以在任意位置插入 HTML 元素来达到你想要的效果。为了统一网站的设计风格,我们在 personalize.css
中定义了一些通用的样式。
强调文字
蓝色衬底文字样式
效果:
二级标题
三级标题
四级标题
五级标题
正文,注意在 markdown 中嵌入的 HTML 元素内部时不能使用 markdown 语法的,例如 **这个** 就不会变成加粗效果,要使用`` 标签达到加粗的效果。
代码:
<div class="info">
<h2>二级标题</h2>
<h3>三级标题</h3>
<h4>四级标题</h4>
<h5>五级标题</h5>
<p>正文,注意在 markdown 中嵌入的 HTML 元素内部时<b>不能</b>使用 markdown 语法的,例如 **这个** 就不会变成加粗效果,要使用`<b></b>` 标签达到加粗的效果。</p>
</div>
黄色衬底文字样式
效果:
二级标题
三级标题
四级标题
五级标题
正文,注意在 markdown 中嵌入的 HTML 元素内部时不能使用 markdown 语法的,例如 **这个** 就不会变成加粗效果,要使用`` 标签达到加粗的效果。
代码:
<div class="notification">
<h2>二级标题</h2>
<h3>三级标题</h3>
<h4>四级标题</h4>
<h5>五级标题</h5>
<p>正文,注意在 markdown 中嵌入的 HTML 元素内部时<b>不能</b>使用 markdown 语法的,例如 **这个** 就不会变成加粗效果,要使用`<b></b>` 标签达到加粗的效果。</p>
</div>
红色衬底文字样式
效果:
二级标题
三级标题
四级标题
五级标题
正文,注意在 markdown 中嵌入的 HTML 元素内部时不能使用 markdown 语法的,例如 **这个** 就不会变成加粗效果,要使用`` 标签达到加粗的效果。
代码:
<div class="error">
<h2>二级标题</h2>
<h3>三级标题</h3>
<h4>四级标题</h4>
<h5>五级标题</h5>
<p>正文,注意在 markdown 中嵌入的 HTML 元素内部时<b>不能</b>使用 markdown 语法的,例如 **这个** 就不会变成加粗效果,要使用`<b></b>` 标签达到加粗的效果。</p>
</div>
荧光笔高亮
注意,在 Typora 等支持 Github 风格 Markdown 的软件中可以使用 ==
来括起来文字达到高亮效果,但是在 Jekyll 的自动渲染流程中,这个语法是不被支持的。
如果想在网站中实现荧光笔高亮的效果,你需要将 ==
替换为 HTML 元素。
上面那一行荧光高亮的源代码:
<mark>如果想在网站中实现荧光笔高亮的效果,你需要将<code>==</code>替换为 HTML 元素。</mark>
数学公式
网站使用 MathJax
,全站支持 $\LaTeX$ 风格的数学公式。如果页面中有数学公式,尽量使用 $\LaTeX$ 数学公式以达到最好的显示效果。
行内公式
使用单个 $
将 LaTeX 内容括起来,在 Jekyll 渲染过程中,LaTeX内容会被识别并转换为公式的矢量图。
效果:
假设图 $G$ 中平均一个节点会连接到 $\alpha$ 个子节点,目标节点在第 $n$ 层,那么BFS的空间复杂度会是 $O(\alpha^n)$。
代码(markdown 内容,不是 html 内容):
假设图 $G$ 中平均一个节点会连接到 $\alpha$ 个子节点,目标节点在第 $n$ 层,那么BFS的空间复杂度会是 $O(\alpha^n)$。
多行公式
使用两个 $
将 LaTeX 内容括起来,在 Jekyll 渲染过程中,LaTeX内容会被识别并转换为公式的矢量图。
效果:
calculate through the whole table using these equations:
\[\begin{aligned} T[g][n][k] = \max{\left( T[g][n-1][k]+ isWin(g, n),\;\\ T[(g+1)\%3][n-1][k-1]+ isWin(g, n),\;\\ T[(g + 2)\%3][n-1][k-1]+ isWin(g, n) \right)} \end{aligned}\]If either $n$ or $k$ is out of bound (not in 3D array $T$, return 0.
代码(markdown 内容,不是 html 内容):
calculate through the whole table using these equations:
$$
\begin{aligned}
T[g][n][k] = \max{\left( T[g][n-1][k]+ isWin(g, n),\;\\
T[(g+1)\%3][n-1][k-1]+ isWin(g, n),\;\\
T[(g + 2)\%3][n-1][k-1]+ isWin(g, n) \right)}
\end{aligned}
$$
If either $n$ or $k$ is out of bound (not in 3D array $T$, return 0.
⚠Typora 换行规则导致的样式异常
在 Typora 中,你可以通过按 `ctrl + shift + m` 快速创建代码块(也就是这里的多行公式)。然而,Typora默认只会在多行公式前进行*一次换行*。在 Typora 中,这样做是没有问题的,但是在 Jekyll 渲染的过程中,这回让 Jekyll 将多行公式和前文识别为同一段内容并放入同一个 `<p>` 标签中并渲染到同一行。
例子
Example Text
We can solve this problem recursively. Let $f(n, c)$ represent the number of possible valid solutions of painting on a subtree with root $n$ and color $c$ on root, we can represent this function recursively. \(\begin{aligned} &U = \left\{n' \mid n' \text{ is child of }n\right\}\\ &f(n, c) = \prod_{u\in U}\left({\sum_{c'\in C}{f(u, c')}}\right) \end{aligned}\) When we meet a node that is already been painted, we let $f(node, c) = 0$ if $c$ is not the color that is painted.
可以很明显的看到这里的多行公式被挤在一堆文字之间了。
源代码:
Example Text
We can solve this problem recursively. Let $f(n, c)$ represent the number of possible valid solutions of painting on a subtree with root $n$ and color $c$ on root, we can represent this function recursively. $$ \begin{aligned} &U = \left\{n' \mid n' \text{ is child of }n\right\}\\ &f(n, c) = \prod_{u\in U}\left({\sum_{c'\in C}{f(u, c')}}\right) \end{aligned} $$ When we meet a node that is already been painted, we let $f(node, c) = 0$ if $c$ is not the color that is painted.
像这种情况我们只需要手动在 $$
前后多加一个回车即可。
Example Text
We can solve this problem recursively. Let $f(n, c)$ represent the number of possible valid solutions of painting on a subtree with root $n$ and color $c$ on root, we can represent this function recursively.
\[\begin{aligned} &U = \left\{n' \mid n' \text{ is child of }n\right\}\\ &f(n, c) = \prod_{u\in U}\left({\sum_{c'\in C}{f(u, c')}}\right) \end{aligned}\]When we meet a node that is already been painted, we let $f(node, c) = 0$ if $c$ is not the color that is painted.
Example Text
We can solve this problem recursively. Let $f(n, c)$ represent the number of possible valid solutions of painting on a subtree with root $n$ and color $c$ on root, we can represent this function recursively. $$ \begin{aligned} &U = \left\{n' \mid n' \text{ is child of }n\right\}\\ &f(n, c) = \prod_{u\in U}\left({\sum_{c'\in C}{f(u, c')}}\right) \end{aligned} $$ When we meet a node that is already been painted, we let $f(node, c) = 0$ if $c$ is not the color that is painted.
按钮
在一些情况下你可能需要按钮控件来突出显示超链接等页面元素,我们提供了 main-button
元素 和 允许并排展示按钮的 flex 容器 button-box
元素,可以在页面中使用。
使用单个按钮
效果:
代码:
<button class="main-button">示例按钮</button>
如果你想为按钮添加超链接的话,可以通过在外层嵌套 <a href="...."></a>
实现。
效果:
代码:
<button class="main-button" onclick="window.location.href='https://www.example.com'">点我转到 example.com </button>
同时展现多个按钮
同时展现多个按钮的时候,我们可以使用 button-box
元素将他们容纳在同一行。这样在手机等宽度较小的设备上显式效果也不会收到过多影响。
效果:
代码:
<div class="button-box">
<button class="main-button">example btn 1</button>
<button class="main-button">example btn 2</button>
<button class="main-button">example btn 3</button>
</div>