🧧新年换新装!让每篇年味满满的文章陪你过春节~

919 阅读6分钟

PK创意闹新春,我正在参加「春节创意投稿大赛」,详情请看:春节创意投稿大赛

前言

新年快到了,在新的一年里,让你和你的文章都换上新装吧!在掘金里,有很多用于 美化文章的主题样式 ,如下图:

image.png

像我现在使用的就是 chinese red 这个主题,如果想要定制一个属于自己的主题要怎么做呢?既然新年快到了,那我就实现一个 中国春节主题 的主题样式,让文章也能有 年味~

主题效果

在开始前大家先看看我实现的效果吧~

image.png

image.png

image.png

image.png

image.png

image.png

temp.gif

temp.gif

怎么样,是不是 年味满满 呢~下面讲一下掘金的主题要如何定制。

主题定制

创建仓库

想要自制一个主题其实很简单,在 掘金主题github仓库 中,按照官方指引创建一个仓库,并将代码拉取到本地编辑即可。

image.png

其实markdown中的各种语法最终都是转换成 html对应的标签 的,所以想要定制主题只需要会 css 就可以上手啦。

在编辑主题时,我们使用的时 scss 进行编辑的,如果想要预览效果需要转换成 css。当然,官方也提供了一个用于预览测试页面的工具,执行下面这个命令就可以即时预览我们修改的 scss 文件样式啦!

cd <yourThemeProject>
npx juejin-theme-devtool <yourStyleFile>

当然你要是觉得这行命令不方便记,你也可以写到 package.json 里,新增一个命令即可

"scripts": {
    "dev":"npx juejin-theme-devtool juejin.scss"
  }

之后只需要使用 npm run dev 就能启动预览了

主题核心

juejin.scss 文件中为我们编辑好了默认样式,我们要做的就是基于这个文件的基础进行一个改造,那么我这一次的新年主题有以下两个核心要点:

一. 要有浓重的 中国元素和新年元素,主题色为 金色和红色

二. 在风格明显的同时不能 影响文章信息的传达,整体不能过于突兀,要清晰简洁

围绕上面的两点,我开始了 新年主题定制

主题实现

整体框架

因为我要的主题色是 金色和红色 ,但是颜色范围太大了,要怎么定一个好看的颜色呢?这里我用的是中国色 这个网站中提供的配色,这个网站里全部都是中国风的配色,刚好适合我的主题。

红色配色:

image.png

浅红色配色:

image.png

金色配色:

image.png

在scss中我们可以创建变量,这样可以帮助我们的样式风格进行一个统一。

在这里我创建了两个变量,红色和浅红色,那么金色在哪里呢?金色我使用的是原生css中的 gold ,因此就不需要单独创建一个变量了。

$red: #c02c38;
$red-light: #e3b4b880;
$gold:#ffa60f;

背景纹理

变量创建好了,我想先改变一下整体 背景的纹理 ,因为是中国风格主题,因此我使用了一个 类似祥云的纹理,我将图片转换为 base64 格式后在样式中定义一个 $texture-cloud 变量,然后在最外层容器中作为背景图片

实现代码如下:

$texture-cloud: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGcAAAAXCAMAAAAhvaEKAAAAM1BMVEUAAAAjIyMjIyMAAAAPDw8PDw8kJCQAAAAAAAAkJCQAAAAAAAA7OztAQEBHR0cxMTExMTFSK924AAAAEXRSTlMAFgAGEQAVAgsADwceICQaAKU/Wn8AAAIzSURBVHgBjZXhbuM4DIRJc0LNUkm77/+exaLApreIRdusLjH6/bAAmdSQozCWA10eGC4PdFnJBd7kOQ24rGgrh9Dkgf/aEZKAs22bYxnhEfIAuAwMoRxooIvU1xzLyMeu2hEepHDs2LWXesbT16p6FhAestKZCtx2nCXXS7ntxtI6GY5bPzqt1mFEQkGnkz216OGkjtBeXSjPdnVqkKQcdPhIg82d6Ztn3xPUt4xYXw9VDGk45RUdaNZ3GcOaEU1OCO+PJ3c/jJImn9HfucmgH7+nU+Amhs3sfg35EcBaF8zU5GeY9r4K+YsZIEml06QCXRbopEIAzgE8MNnvV1wuc/sEQoNU2eCXXD6K0r3/uctGuy/4vMtEs79f/5Xd64eo7KiK3z/lCfX6nIcn7iavMCBfjllLuqLJGeGWCcnYOMP8MGuU5/8XIWlTmpp3SdLvg84VqdSwpuaUiYxvxBiC5P13UlVawHkEdSrqXFGX5P3YtYBzVu3ZrW2HH6lLdzxzr6GUh5ABuF12e+l0CLbMXSX9f0GoSaJNJCuldjnlllkRuyEm5+SFlKR2e9JJIxWRh6F9L43lW0UH9v9roF63czIh10YNJznPTszhbR8TN5mxcj3apnW+1ELPdi2b2KsEzr7bA2bSdvY15vnpkmSIZerWlLOaPCi6Xe1bK0wB1JnLZAdFrFcZZpzzcCnK/MThpGVFEfUA4zorwfm7k6/HAvs2FKZPrGv7dKdplstICj2s+wdYtietbSOnTgAAAABJRU5ErkJggg==";

.main-area{
  background-image: url($texture-cloud);
  background-position: center center;
  font-family: -apple-system,system-ui,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Arial,sans-serif;
  word-break: break-word;
  line-height: 1.75;
  font-weight: 400;
  overflow-x: hidden;
  font-size: 17px;
}

实现的效果:

image.png

标题设计

标题我的想法是 h1,h2,h3 这三个使用频率高的标签各有各的风格。标题的字体我使用的都是 兼容性比较好并且比较有中国味儿 的楷体。

标签的统一样式如下:

h1,
  h2,
  h3,
  h4,
  h5,
  h6 {
    position: relative;
    margin-top: 25px;
    margin-bottom: 10px;
    margin: 25px 5px 10px 5px;
    font-family: KaiTi;
  }

首先说说 h1 的样式,这个标签的特点是大,一般在一个大章节的开头,因此我将它设计为春联的样式,有一种贴在大门口,欢迎你进来的感觉。

image.png

这个春联有几个特点,其次配色就是前面设置的 红色加金色,背景我换了一种纹理以突出与背景的区别。通过金色边框元素点缀增加一点精致感。纹理使用的是 base64的图片,而边框是通过 伪元素 实现的。

实现的代码如下:

h1 {
    font-size: 30px;
    padding: 5px 10px;
    background-color: $red;
    background-image: url($texture-cricle);
    box-shadow: $shadow;
    color: $gold;
    text-shadow: 0px 0px 2px #000;
    text-align: center;
    &::after,&::before{
      content: '';
      position: absolute;
      width: 20px;
      height: calc(100% - 12px);
      z-index: 10;
      border-top: 3px solid $gold;
      border-bottom: 3px solid $gold;
    }
    &::before {
      top: 3px;
      left: 3px;
      border-left: 3px solid $gold;
    }
    &::after {
      right: 3px;
      bottom: 3px; 
      border-right: 3px solid $gold;
    }
  }

h2 的样式是在字体前加一个 字。h3 的样式是加一个小狮子。

image.png image.png

这两个比较简单,都是通过 伪元素加图片,图片是定义成 base64字符串变量 使用的,实现代码如下:

h2 {
    display: flex;
    align-items: center;
    font-size: 27px;
    &::before {
      content: "";
      display: block;
      margin-right: 8px;
      width: 40px;
      height: 40px;
      background-image: url($img-fu);
      background-size: 40px 40px;
    }
  }
  h3 {
    display: flex;
    align-items: center;
    font-size: 23px;
    &::before {
      content: "";
      display: block;
      margin-right: 8px;
      width: 25px;
      height: 25px;
      background-image: url($img-chun);
      background-size: 25px 25px;
    }
    
  }

引用内容

下面讲讲 引用内容 的样式,引用内容 我使用了浅红色作为背景,红色作为字体,左侧有一条金色的边突出单独一个模块的感觉。

image.png

列表样式

无序列表比较简单,为了让列表清晰,我只是修改了一下小圆点的颜色,整体还是保留原有的风格。

如下图: image.png

li::marker 这个伪类对应的就是前面那个小圆点的样式,实现的代码如下:

ul {
    li::marker {
      color: $red;
    }
  }

无序列表我将前面的数字改为了 楷体中文 ,并且也设置为红色,如下图: image.png

list-style-type: cjk-ideographic 可以用于修改有序列表前面的数字类型,实现的代码如下:

ol{
    li{
      list-style-type: cjk-ideographic;
      &::marker{
        font-family: KaiTi;
        font-weight: bold;
        color: $red;
      }
    }
  }

链接

链接的样式就是 红色的字体,并且通过伪元素在链接前面默认增加 # 字符便于区分。除此以外,我还添加了鼠标悬浮效果,当鼠标滑过时会将链接改为 红色背景和金色字体

效果如下: temp.gif

实现代码如下:

a {
    text-decoration: none;
    color: $red;
    transition: all 0.3s;
    padding: 0 2px;
    &:hover,
    &:active {
      color: $gold;
      background-color: $red;
    }
    &::before {
      content: "# ";
    }
  }

代码块

代码是一个文章中传达信息的重要途经,因此我只做了简单的一些样式,背景改为浅红,左侧添加红色边框突出模块感。在 鼠标悬浮时有一点点上飘 的效果 temp.gif

其他样式

上面就是一些比较显著的修改,除此以外,关于整体的一些 边距,行高,字号 都做了一定的修改,并且我还为加粗和行内代码 设置了默认左右边距,这样可以大大减少写文章时 频繁增加括号 提升美观度的烦恼。以上的修改都是为了整体内容的直观清爽做的优化,毕竟文章最主要的目的还是用来 传达信息 的嘛~

总结

目前这套主题已经提交掘金主题仓库 pr 等待审核啦,期待能早日和大家见面!

在设计主题的时候,看着预览的样式一步一步变得更加鲜艳更加精致,年味越来越浓,还是很有成就感的!

祝大家 🧨新春快乐,🐯新的一年虎虎生威! 如果觉得文章写的不错可以点个89822D38AB234E4A2EC1836C3E79B89E.png 赞噢