This commit is contained in:
2026-02-11 09:55:06 +00:00
commit da4b7c19bf
313 changed files with 93710 additions and 0 deletions

131
assets/css/feed.css Normal file
View File

@@ -0,0 +1,131 @@
@namespace atom "http://www.w3.org/2005/Atom";
@namespace content "http://purl.org/rss/1.0/modules/content/";
@namespace dc "http://purl.org/dc/elements/1.1/";
body,
rss,
atom|feed {
font-family: -apple-system, BlinkMacSystemFont,
"Segoe UI", Roboto,
"Noto Sans SC", "PingFang SC",
"Microsoft YaHei", Arial, sans-serif;
background: #f4f5f7;
color: #222;
margin: 0;
padding: 2em 1em;
/* 左右内边距 1em竖屏不贴边 */
font-size: 14px;
line-height: 1.6;
max-width: 780px;
/* 最大宽度,桌面端居中 */
margin-left: auto;
margin-right: auto;
}
channel>title,
atom|feed>atom|title {
display: block;
font-size: 1.7em;
font-weight: 700;
margin: 0 0 1.2em 0;
text-align: center;
letter-spacing: -0.01em;
}
item,
atom|entry {
display: block;
background: #ffffff;
padding: 1.1em 1.2em;
margin-bottom: 1.1em;
border-radius: 14px;
box-shadow:
0 8px 24px rgba(0, 0, 0, 0.04),
0 2px 6px rgba(0, 0, 0, 0.03);
}
item>title,
atom|entry>atom|title {
display: block;
font-size: 1.15em;
font-weight: 600;
margin-bottom: 0.45em;
color: #111;
letter-spacing: -0.01em;
}
item>description,
atom|entry>atom|summary {
display: block;
color: #555;
line-height: 1.65;
max-height: 16.5em;
overflow: hidden;
position: relative;
}
item>description::after,
atom|entry>atom|summary::after {
content: "…";
position: absolute;
right: 0.3em;
bottom: 0;
padding-left: 1.5em;
background: linear-gradient(to right,
rgba(255, 255, 255, 0),
#ffffff 70%);
font-weight: 600;
}
link,
guid,
pubDate,
author,
category,
comments,
source,
enclosure,
content|encoded,
dc|creator,
lastBuildDate,
atom|id,
atom|link,
atom|updated,
atom|published,
atom|author,
atom|category,
atom|rights,
atom|content,
language,
generator {
display: none;
}
channel>description,
atom|feed>atom|subtitle {
display: block;
margin: 0.4em 0 2em 0;
/* 与条目明显拉开 */
text-align: center;
color: #666;
font-size: 0.95em;
}
channel>title,
atom|feed>atom|title {
margin-bottom: 0.4em;
/* 原来较紧,这里放松 */
}
atom|feed>atom|subtitle::after,
channel>description::after {
content: "这是一个订阅源Feed。复制当前URL到任何支持 Atom/RSS 的阅读器,即可订阅本博客的最新文章。\A以下展示了此订阅源包含的最新文章";
display: block;
text-align: center;
font-size: 0.95em;
color: #666;
margin: 1em 0 2em 0;
line-height: 1.5;
white-space: pre-wrap;
}

1278
assets/css/gitalk.css Normal file

File diff suppressed because it is too large Load Diff

616
assets/css/style.css Normal file
View File

@@ -0,0 +1,616 @@
@font-face {
font-family: 'Noto Sans';
font-weight: 400;
font-style: normal;
src: url("../fonts/Noto-Sans-regular/Noto-Sans-regular.eot");
src: url("../fonts/Noto-Sans-regular/Noto-Sans-regular.eot?#iefix") format("embedded-opentype"), local("Noto Sans"), local("Noto-Sans-regular"), url("../fonts/Noto-Sans-regular/Noto-Sans-regular.woff2") format("woff2"), url("../fonts/Noto-Sans-regular/Noto-Sans-regular.woff") format("woff"), url("../fonts/Noto-Sans-regular/Noto-Sans-regular.ttf") format("truetype"), url("../fonts/Noto-Sans-regular/Noto-Sans-regular.svg#NotoSans") format("svg"); }
@font-face {
font-family: 'Noto Sans';
font-weight: 700;
font-style: normal;
src: url("../fonts/Noto-Sans-700/Noto-Sans-700.eot");
src: url("../fonts/Noto-Sans-700/Noto-Sans-700.eot?#iefix") format("embedded-opentype"), local("Noto Sans Bold"), local("Noto-Sans-700"), url("../fonts/Noto-Sans-700/Noto-Sans-700.woff2") format("woff2"), url("../fonts/Noto-Sans-700/Noto-Sans-700.woff") format("woff"), url("../fonts/Noto-Sans-700/Noto-Sans-700.ttf") format("truetype"), url("../fonts/Noto-Sans-700/Noto-Sans-700.svg#NotoSans") format("svg"); }
@font-face {
font-family: 'Noto Sans';
font-weight: 400;
font-style: italic;
src: url("../fonts/Noto-Sans-italic/Noto-Sans-italic.eot");
src: url("../fonts/Noto-Sans-italic/Noto-Sans-italic.eot?#iefix") format("embedded-opentype"), local("Noto Sans Italic"), local("Noto-Sans-italic"), url("../fonts/Noto-Sans-italic/Noto-Sans-italic.woff2") format("woff2"), url("../fonts/Noto-Sans-italic/Noto-Sans-italic.woff") format("woff"), url("../fonts/Noto-Sans-italic/Noto-Sans-italic.ttf") format("truetype"), url("../fonts/Noto-Sans-italic/Noto-Sans-italic.svg#NotoSans") format("svg"); }
@font-face {
font-family: 'Noto Sans';
font-weight: 700;
font-style: italic;
src: url("../fonts/Noto-Sans-700italic/Noto-Sans-700italic.eot");
src: url("../fonts/Noto-Sans-700italic/Noto-Sans-700italic.eot?#iefix") format("embedded-opentype"), local("Noto Sans Bold Italic"), local("Noto-Sans-700italic"), url("../fonts/Noto-Sans-700italic/Noto-Sans-700italic.woff2") format("woff2"), url("../fonts/Noto-Sans-700italic/Noto-Sans-700italic.woff") format("woff"), url("../fonts/Noto-Sans-700italic/Noto-Sans-700italic.ttf") format("truetype"), url("../fonts/Noto-Sans-700italic/Noto-Sans-700italic.svg#NotoSans") format("svg"); }
.highlight table td {
padding: 5px; }
.highlight table pre {
margin: 0; }
.highlight .cm {
color: #999988;
font-style: italic; }
.highlight .cp {
color: #999999;
font-weight: bold; }
.highlight .c1 {
color: #999988;
font-style: italic; }
.highlight .cs {
color: #999999;
font-weight: bold;
font-style: italic; }
.highlight .c, .highlight .cd {
color: #999988;
font-style: italic; }
.highlight .err {
color: #a61717;
background-color: #e3d2d2; }
.highlight .gd {
color: #000000;
background-color: #ffdddd; }
.highlight .ge {
color: #000000;
font-style: italic; }
.highlight .gr {
color: #aa0000; }
.highlight .gh {
color: #999999; }
.highlight .gi {
color: #000000;
background-color: #ddffdd; }
.highlight .go {
color: #888888; }
.highlight .gp {
color: #555555; }
.highlight .gs {
font-weight: bold; }
.highlight .gu {
color: #aaaaaa; }
.highlight .gt {
color: #aa0000; }
.highlight .kc {
color: #000000;
font-weight: bold; }
.highlight .kd {
color: #000000;
font-weight: bold; }
.highlight .kn {
color: #000000;
font-weight: bold; }
.highlight .kp {
color: #000000;
font-weight: bold; }
.highlight .kr {
color: #000000;
font-weight: bold; }
.highlight .kt {
color: #445588;
font-weight: bold; }
.highlight .k, .highlight .kv {
color: #000000;
font-weight: bold; }
.highlight .mf {
color: #009999; }
.highlight .mh {
color: #009999; }
.highlight .il {
color: #009999; }
.highlight .mi {
color: #009999; }
.highlight .mo {
color: #009999; }
.highlight .m, .highlight .mb, .highlight .mx {
color: #009999; }
.highlight .sb {
color: #d14; }
.highlight .sc {
color: #d14; }
.highlight .sd {
color: #d14; }
.highlight .s2 {
color: #d14; }
.highlight .se {
color: #d14; }
.highlight .sh {
color: #d14; }
.highlight .si {
color: #d14; }
.highlight .sx {
color: #d14; }
.highlight .sr {
color: #009926; }
.highlight .s1 {
color: #d14; }
.highlight .ss {
color: #990073; }
.highlight .s {
color: #d14; }
.highlight .na {
color: #008080; }
.highlight .bp {
color: #999999; }
.highlight .nb {
color: #0086B3; }
.highlight .nc {
color: #445588;
font-weight: bold; }
.highlight .no {
color: #008080; }
.highlight .nd {
color: #3c5d5d;
font-weight: bold; }
.highlight .ni {
color: #800080; }
.highlight .ne {
color: #990000;
font-weight: bold; }
.highlight .nf {
color: #990000;
font-weight: bold; }
.highlight .nl {
color: #990000;
font-weight: bold; }
.highlight .nn {
color: #555555; }
.highlight .nt {
color: #000080; }
.highlight .vc {
color: #008080; }
.highlight .vg {
color: #008080; }
.highlight .vi {
color: #008080; }
.highlight .nv {
color: #008080; }
.highlight .ow {
color: #000000;
font-weight: bold; }
.highlight .o {
color: #000000;
font-weight: bold; }
.highlight .w {
color: #bbbbbb; }
.highlight {
background-color: #f8f8f8; }
body {
background-color: #fff;
padding: 50px;
font: 14px/1.5 "Noto Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
color: #727272;
font-weight: 400; }
h1, h2, h3, h4, h5, h6 {
color: #222;
margin: 0 0 20px; }
p, ul, ol, table, pre, dl {
margin: 0 0 20px; }
h1, h2, h3 {
line-height: 1.1; }
h1 {
font-size: 28px; }
h2 {
color: #393939; }
h3, h4, h5, h6 {
color: #494949; }
a {
color: #267CB9;
text-decoration: none; }
a:hover, a:focus {
color: #069;
font-weight: bold; }
a small {
font-size: 11px;
color: #777;
margin-top: -0.3em;
display: block; }
a:hover small {
color: #777; }
.wrapper {
width: 860px;
margin: 0 auto; }
blockquote {
border-left: 1px solid #e5e5e5;
margin: 0;
padding: 0 0 0 20px;
font-style: italic; }
code, pre {
font-family: Monaco, Bitstream Vera Sans Mono, Lucida Console, Terminal, Consolas, Liberation Mono, DejaVu Sans Mono, Courier New, monospace;
color: #333; }
pre {
padding: 8px 15px;
background: #f8f8f8;
border-radius: 5px;
border: 1px solid #e5e5e5;
overflow-x: auto; }
table {
width: 100%;
border-collapse: collapse; }
th, td {
text-align: left;
padding: 5px 10px;
border-bottom: 1px solid #e5e5e5; }
dt {
color: #444;
font-weight: 700; }
th {
color: #444; }
img {
max-width: 100%; }
kbd {
background-color: #fafbfc;
border: 1px solid #c6cbd1;
border-bottom-color: #959da5;
border-radius: 3px;
box-shadow: inset 0 -1px 0 #959da5;
color: #444d56;
display: inline-block;
font-size: 11px;
line-height: 10px;
padding: 3px 5px;
vertical-align: middle; }
header {
width: 270px;
float: left;
position: fixed;
-webkit-font-smoothing: subpixel-antialiased; }
ul.downloads {
list-style: none;
height: 40px;
padding: 0;
background: #f4f4f4;
border-radius: 5px;
border: 1px solid #e0e0e0;
width: 270px; }
.downloads li {
width: 89px;
float: left;
border-right: 1px solid #e0e0e0;
height: 40px; }
.downloads li:first-child a {
border-radius: 5px 0 0 5px; }
.downloads li:last-child a {
border-radius: 0 5px 5px 0; }
.downloads a {
line-height: 1;
font-size: 11px;
color: #676767;
display: block;
text-align: center;
padding-top: 6px;
height: 34px; }
.downloads a:hover, .downloads a:focus {
color: #675C5C;
font-weight: bold; }
.downloads ul a:active {
background-color: #f0f0f0; }
strong {
color: #222;
font-weight: 700; }
.downloads li + li + li {
border-right: none;
width: 89px; }
.downloads a strong {
font-size: 14px;
display: block;
color: #222; }
section {
width: 500px;
float: right;
padding-bottom: 50px; }
small {
font-size: 11px; }
hr {
border: 0;
background: #e5e5e5;
height: 1px;
margin: 0 0 20px; }
footer {
width: 270px;
float: left;
position: fixed;
bottom: 50px;
-webkit-font-smoothing: subpixel-antialiased; }
@media print, screen and (max-width: 960px) {
div.wrapper {
width: auto;
margin: 0; }
header, section, footer {
float: none;
position: static;
width: auto; }
header {
padding-right: 320px; }
section {
border: 1px solid #e5e5e5;
border-width: 1px 0;
padding: 20px 0;
margin: 0 0 20px; }
header a small {
display: inline; }
header ul {
position: absolute;
right: 50px;
top: 52px; } }
@media print, screen and (max-width: 720px) {
body {
word-wrap: break-word; }
header {
padding: 0; }
header ul, header p.view {
position: static; }
pre, code {
word-wrap: normal; } }
@media print, screen and (max-width: 480px) {
body {
padding: 15px; }
.downloads {
width: 99%; }
.downloads li, .downloads li + li + li {
width: 33%; } }
@media print {
body {
padding: 0.4in;
font-size: 12pt;
color: #444; } }
a:hover {
font-weight: inherit;
text-decoration: underline; }
.backToTop {
display: none;
width: 18px;
line-height: 1.2;
padding: 5px 0;
background-color: #000;
color: #fff;
font-size: 12px;
text-align: center;
position: fixed;
_position: absolute;
right: 10px;
bottom: 100px;
_bottom: "auto";
cursor: pointer;
opacity: .6;
filter: Alpha(opacity=60); }
.post-content {
font-size: 15px;
line-height: 1.6; }
.post-content h1 {
text-indent: -8px;
margin: 20px 0 10px;
border-bottom: 1px solid #e5e5e5; }
.post-content h2 {
text-indent: -6px;
margin: 20px 0 10px;
border-bottom: 1px solid #e5e5e5; }
.post-content h3 {
margin: 20px 0 10px;
text-indent: -5px; }
.post-content h4 {
margin: 20px 0 10px;
text-indent: -4px; }
.post-content h5 {
margin: 20px 0 10px;
text-indent: -3px; }
.post-content h6 {
margin: 20px 0 10px;
text-indent: -2px; }
.post-content p {
text-indent: 2em;
margin-bottom: 5px; }
h1 .octicon,
h2 .octicon,
h3 .octicon,
h4 .octicon,
h5 .octicon,
h6 .octicon {
visibility: hidden; }
h1:hover .octicon,
h2:hover .octicon,
h3:hover .octicon,
h4:hover .octicon,
h5:hover .octicon,
h6:hover .octicon {
visibility: visible; }
.octicon {
fill: currentColor;
padding: 0;
margin-left: -16px;
vertical-align: middle; }
div.highlight {
position: relative; }
div.highlight:hover button {
opacity: 1; }
div.highlight button {
opacity: 0;
position: absolute;
top: 0.5em;
right: 1em;
height: 2em;
transition: all 0.2s ease-out; }
div.highlight button:active,
div.highlight button:focus,
div.highlight button:hover {
opacity: 1; }
.footnotes {
font-size: 14px;
line-height: 1.4; }
.footnotes p {
margin: 0;
text-indent: 0; }
.wrapper {
width: 90%; }
header {
width: 25%; }
footer {
width: 25%; }
section {
width: 65%; }
@media print, screen and (max-width: 960px) {
.wrapper {
width: auto; }
header {
width: auto; }
footer {
width: auto; }
section {
width: auto; } }
code.highlighter-rouge {
padding: .1em .2em;
margin: 0;
font-size: 90%;
white-space: break-spaces;
background-color: lightgray;
border-radius: 6px; }
.content-tooltip {
position: absolute;
background: #fff;
border: 1px solid #ddd;
padding: 8px 12px;
border-radius: 4px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
max-width: 300px;
z-index: 1000;
font-size: 14px;
line-height: 1.4; }
td.h-entry {
cursor: pointer; }
td.h-entry:hover {
background: #f9f9f9; }

35
assets/css/xslt.css Normal file
View File

@@ -0,0 +1,35 @@
@namespace xsl "http://www.w3.org/1999/XSL/Transform";
xsl|template {
display: none !important;
}
:root {
display: flex !important;
flex-direction: column;
align-items: center;
justify-content: center;
min-height: 100vh;
background-color: #f8f9fa;
margin: 0;
padding: 2em 1em;
font-family: system-ui, -apple-system, sans-serif;
box-sizing: border-box;
margin-left: max(1em, env(safe-area-inset-left));
margin-right: max(1em, env(safe-area-inset-right));
}
:root::before {
content: "💀 这个 XSLT 模板已被谷歌 (Chrome) 杀死";
display: block;
color: #d93025;
font-size: 24px;
font-weight: 800;
padding: 20px;
border: 2px solid #d93025;
border-radius: 8px;
background: #fff1f0;
margin-bottom: 10px;
box-shadow: 0 4px 12px rgba(217, 48, 37, 0.1);
text-align: center;
}