声明:以下博客皮肤与博主目前所使用的样式不同,之后有空博主会给出下面方案的具体效果图与对应代码。目前本博客使用的是 esofar 开发的开源项目 cnblogs-theme-silence,非常干净清爽,且利于定制,有兴趣的同学可在 Github上找到它,或者点击本博客底部链接直达。

今天鼓捣了一天纯MarkDown书写的博客样式的美化,事实证明图表较多的MarkDown撰写的博文一样可以展现出非常漂亮的效果。为了让纯MarkDown书写的博客有一个干净舒服的阅读体验,我主要针对博客的以下几个方面进行了优化,写出来与大家一起分享一下我的优化经验。因为以前从未接触过CSS,还请各位前辈多多指教!

主题的选择

首先,本博客的主题样式是 LessIsMore。该样式非常简单,符合我们干净利落的目标,也便于我们自定义样式的改造。另一个不错的主题是SimpleMemory,也很漂亮,也可以作为优化的基本主题。

选择好主题以后可以进行大刀阔斧的改动,完全使用自定义的CSS样式,也可以小部分进行更改。不论是大刀阔斧的改革,还是小部分改动,都需要自定义一部分样式。样式的更改需要按照如下步骤:

  • 首先点击博客顶栏的管理

  • 在博客园后台界面中点击设置

  • 在这里可以看到页面定制CSS的字样,这里就是写自定义CSS的地方。

  • 如果要大刀阔斧地改动,那么就点击下面的禁用模板默认CSS。否则只需要针对部分Style进行修改即可,即将下面我们要介绍的几个css文件包裹在下面这段代码中即可
<style type="text/css">
...
</style>

禁用模板默认CSS的好处在于可以完全自定义,否则在定义了相同元素css的情况下会优先使用模板的css(如果模板有对该元素定义css的话)展示。建议禁用模板默认CSS

表格样式

作为有大量图表出现的博文,表格的样式直接关系到用户的体验。由于主题的底色是白色,蓝色作为配色,所以这里表格的配色可以考虑两种:偏灰色 或 偏蓝色。但当表格以蓝色作为基色时,颜色的搭配比较困难,蓝色色调作为表格的底色在纯白的背景上会略显突兀。所以这里博主选择了整体偏灰色的配色方案,表格的背景底色为浅灰,线条为中等灰,标题栏为偏暗一些的灰色。

注:楼主没学过任何设计,搭配全看感觉...

下面是一个典型的Markdown中的表格文本。

|标题栏1|标题栏2|
|:--|:--|
|内容11|内容21|
|内容12|内容22|
|内容13|内容23|

在博主的博客中,上述MarkDown代码的效果如下。

标题栏1 标题栏2
内容11 内容21
内容12 内容22
内容13 内容23

表格的CSS样式表如下:

#cnblogs_post_body table
{
overflow:hidden;
border:1px solid #d3d3d3;
background:#fefefe;
margin:0 auto;
width: 95%;
border-left: 10px;
border-right: 10px;
margin:5% auto 0;
border-radius:5px;
font-family: "consolas";
}
#cnblogs_post_body table td
{
border: 0px;
font-size: 14px;
text-align: center;
border-top:1px solid #e0e0e0;
border-right:1px solid #e0e0e0;
}
#cnblogs_post_body table tr
{
background: #F7F7F7
}
#cnblogs_post_body table th
{
font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif;
font-size: 15px;
text-align: center;
padding-top:5px;
text-shadow: 1px 1px 1px #fff;
background-color:#e8eaeb;
border: 0px;
}

其中 table定义了整个表格的样式,table td定义了每一单元格的样式,table tr定义了每一行的样式。

虽然博主在鼓捣博客之前并没有学过HTML和CSS,但是这些标签的英文含义都非常明确,想改进的童鞋可以了解一些基本的CSS属性改成自己想要的背景色/边框宽度等即可。

表头排序

有些时候我们希望让读者在阅读博客中的表格时能够对自定义的表头进行排序,这一点我们需要通过 JS 来实现。

首先,开发者要发送邮件到 contact@cnblogs.com 申请 JS 权限。

在申请成功后,点击管理-设置,在页面定制CSS代码一节中添加如下部分:

table.tablesorter {
font-family:arial;
background-color: #CDCDCD;
margin:10px 0pt 15px;
font-size: 8pt;
width: 100%;
text-align: left;
}
table.tablesorter thead tr th, table.tablesorter tfoot tr th {
background-color: #e6EEEE;
border: 1px solid #FFF;
font-size: 8pt;
padding: 4px;
}
table.tablesorter thead tr .header {
background-image: url(https://files.cnblogs.com/files/SivilTaram/bg.gif);
background-repeat: no-repeat;
background-position: center right;
cursor: pointer;
}
table.tablesorter tbody td {
color: #3D3D3D;
padding: 4px;
background-color: #FFF;
vertical-align: top;
}
table.tablesorter tbody tr.odd td {
background-color:#F0F0F6;
}
table.tablesorter thead tr .headerSortUp {
background-image: url(https://files.cnblogs.com/files/SivilTaram/asc.gif);
}
table.tablesorter thead tr .headerSortDown {
background-image: url(https://files.cnblogs.com/files/SivilTaram/desc.gif);
}
table.tablesorter thead tr .headerSortDown, table.tablesorter thead tr .headerSortUp {
background-color: #8dbdd8;
}

再之后,在页脚html代码中添加如下部分:

<script type="text/javascript" src="https://files.cnblogs.com/files/SivilTaram/jquery-sort.js"></script>
<script>
$(document).ready(function()
{
$("table").addClass("tablesorter");
$("table").tablesorter();
}
);
</script>

即可完成表头排序的功能。

三级标题样式

三级标题在MarkDown中是按照如下定义的:

#一级标题
##二级标题
###三级标题

在博主的博客中,这三种标题的样式长这个样子:

一级标题

二级标题

三级标题

三级标题样式的变更主要是修改#cnblogs_body_post h1/2/3这三个样式(class)的属性值,本博客定义三级标题的CSS代码如下:

#cnblogs_post_body h1{
padding-bottom: 4px;
border-bottom: 2px solid #999;
color: #009FAB;
font-family: "黑体","宋体" , "微软雅黑" ,Arial;
font-size: 27px;
font-weight: bold;
line-height: 24px;
margin: 20px 0 !important;
padding: 10px 0 10px 0px;
text-shadow: 2px 1px 2px lightgray;
}
#cnblogs_post_body h2 {
padding-bottom: 4px;
border-bottom: 2px solid #999;
color: #008891;
font-family: "黑体","宋体" , "微软雅黑" ,Arial;
font-size: 24px;
font-weight: bold;
line-height: 24px;
margin: 20px 0 !important;
padding: 10px 0 10px 0px;
text-shadow: 2px 1px 2px lightgray;
}
#cnblogs_post_body h3{
padding-bottom: 4px;
border-bottom: 2px solid #999;
color: #005359;
font-family: "黑体","宋体" , "微软雅黑" ,Arial;
font-size: 20px;
font-weight: bold;
line-height: 23px;
margin: 20px 0 !important;
padding: 10px 0 10px 0px;
text-shadow: 2px 1px 2px lightgray;
}

引用样式

在MarkDown中,引用非常简单,只需要使用>的符号即可。下面是博客中的一个引用效果

这是一个引用块

看起来还不错吧?引用块主要修改#cnblogs_post_body blockquote 样式的内容,本博客的CSS样式如下:

#cnblogs_post_body blockquote {
border-left:3px solid #D7D7D7;
color:#8F9192;
border-bottom: 5px;
margin:10px;
background: no-repeat scroll right top #F7F7F7;
padding:10px 10px 5px;
border:1px dashed #CCC
}

其实搭配CSS样式没有特殊的技巧,很多时候需要我们把自己想象成读博客的人,这样的配色/版式不好看,那就换,改,反复改动后找到一种较为合适的才肯罢休(或许这叫做强迫症精神也不一定)。如果喜欢博主的博客风格,也可以直接拿去用:Github链接

『给它加个壳』纯MarkDown博客阅读体验优化的更多相关文章

  1. 纯MarkDown博客阅读体验优化

    今天鼓捣了一天纯MarkDown书写的博客样式的美化,事实证明图表较多的MarkDown撰写的博文一样可以展现出非常漂亮的效果.为了让纯MarkDown书写的博客有一个干净舒服的阅读体验,我主要针对博 ...

  2. 使用coding、daocloud和docker打造markdown纯静态博客

    说起独立博客的技术演变,从数据库到纯文本放git是一大进步,从HTML到markdown又是一大进步. 解析技术有没有进步呢?既然markdown是纯文本了,再用PHP/Python/Ruby去实时解 ...

  3. 利用hexo来配合nginx来打造属于自己的纯静态博客系统

    什么是静态网站生成器?顾名思义,就是以最快的速度生成一个高可用的web页面,我们知道Django作为一款非常流行的框架被广泛应用,但是部署起来实在是太麻烦了,各种命令各种配置,动态页面必然要涉及数据库 ...

  4. 利用基于Go Lang的Hugo配合nginx来打造属于自己的纯静态博客系统

    Go lang无疑是目前的当红炸子鸡,极大地提高了后端编程的效率,同时有着极高的性能.借助Go语言我们 可以用同步的方式写出高并发的服务端软件,同时,Go语言也是云原生第一语言,Docker,Kube ...

  5. 鸿蒙内核源码分析(进程镜像篇)|ELF是如何被加载运行的? | 百篇博客分析OpenHarmony源码 | v56.01

    百篇博客系列篇.本篇为: v56.xx 鸿蒙内核源码分析(进程映像篇) | ELF是如何被加载运行的? | 51.c.h.o 加载运行相关篇为: v51.xx 鸿蒙内核源码分析(ELF格式篇) | 应 ...

  6. 『编程题全队』Scrum 冲刺博客

    1.介绍小组新加入的成员,Ta担任的角色 Answer: 我们小组的倪兢飞同学决定跳槽到团队あ,我们小组开了一个简短而又严肃的会议,满足倪兢飞同学的意愿,并感谢他为团队做出的巨大贡献.虽然我们遗失了一 ...

  7. 『编程题全队』Beta 阶段冲刺博客集合

    『编程题全队』Beta 阶段冲刺博客集合 »敏捷冲刺 日期:2018.5.23 博客连接:『编程题全队』Scrum 冲刺博客 »Day1 日期:2018.5.23 博客连接:『编程题全队』Beta 阶 ...

  8. 『编程题全队』Alpha 阶段冲刺博客Day5

    1.每日站立式会议 1.会议照片 2.昨天已完成的工作统计 孙志威: 1.完成SlotWidget的设计和功能 2.修改了TitleBar上的功能按钮的CSS样式表 孙慧君: 1.登录框的UI设计 2 ...

  9. 纯CSS打造BiliBili样式博客主题

    前言 一直以来,我都在思考如何减少不必要的JS代码,仅通过CSS来实现博客园主题美化.CSS有很多魔法代码,例如:before,iconfont,order,等等,利用好这些技巧,也能实现很好美化效果 ...

随机推荐

  1. 从现在开始,使用简单优雅的validata.js

    表单验证,是后台开发中万年不变的话题,在经历许多实战之后发现 使用优雅便捷的validate.js实现验证实在是一件非常愉悦的事情 <form data-validate> Enter: ...

  2. C#中使用OpenSSL的公钥加密/私钥解密

    在C#中进行公钥加密/私钥解密,需要用RSACryptoServiceProvider,但是它不支持由OpenSSL生成的公钥/私钥字符串. 比如这样的公钥/私钥对( 公私钥生成方法见 http:// ...

  3. 【情人节来一发】网站添加QQ客服功能

    今年的元宵节遇到情人节,挺不自量力的,呵呵,开篇给各位讲个段子,早上一美女同学在空间发说说道:“开工大吉 起床啦,卖元宵,卖玫瑰,卖避孕套啦-有木有一起去发财的小伙伴?Let’s go…”,对于此种长 ...

  4. python--同一mysql数据库下批量迁移数据

    最近接手些mysql数据库维护,发现mysql在批量操作方面就是个渣渣啊,比起MS SQL SERVER简直就是“不可同日而语”. 咨询了下MySQL的高手,对于数据迁移这种问题,一种处理方式就是直接 ...

  5. 一天一小段js代码(no.4)

    最近在看网上的前端笔试题,借鉴别人的自己来试一下: 题目: 写一段脚本,实现:当页面上任意一个链接被点击的时候,alert出这个链接在页面上的顺序号,如第一个链接则alert(1), 依次类推. 有一 ...

  6. 2、CC2541芯片中级教程-OSAL操作系统(进一步了解-OLED && 普通按键和5方向按键-中断!!!)这个系统驱动层和应用层不一样~

    本文根据一周CC2541笔记汇总得来—— 适合概览和知识快速索引—— 全部链接: 中级教程-OSAL操作系统\OSAL操作系统-实验01 OSAL初探 [插入]SourceInsight-工程建立方法 ...

  7. [源码]NumberToUpper 数字转中文

    使用时需开启unsafe选项 构造函数有4个参数 number : 数字文本 isSimplified : 是否只使用简体中文,默认:false isMoney : 是否是金额模式(忽略小数点后3位, ...

  8. 线程池ThreadPool知识碎片和使用经验速记

    ThreadPool(线程池)大概的工作原理是,初始时线程池中创建了一些线程,当应用程序需要使用线程池中的线程进行工作,线程池将会分配一个线程,之后到来的请求,线程池都会尽量使用池中已有的这个线程进行 ...

  9. C++函数指针

    然后,我在想C++函数指针到底有啥用呢.想了又想,我想出来一种,就是将函数地址(函数n)作为函数(函数1)的参数时,便可以在访问函数1的时候就决定了,在函数1里面调用的是哪一个函数(函数1,2,3,4 ...

  10. Kafka与Logstash的数据采集对接 —— 看图说话,从运行机制到部署

    基于Logstash跑通Kafka还是需要注意很多东西,最重要的就是理解Kafka的原理. Logstash工作原理 由于Kafka采用解耦的设计思想,并非原始的发布订阅,生产者负责产生消息,直接推送 ...