Update theme to Lynx
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 329 KiB After Width: | Height: | Size: 329 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.3 KiB |
Before Width: | Height: | Size: 7.7 KiB After Width: | Height: | Size: 7.7 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 3.4 MiB After Width: | Height: | Size: 3.4 MiB |
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 48 KiB |
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 49 KiB |
Before Width: | Height: | Size: 180 KiB After Width: | Height: | Size: 180 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
1
m2.nz-20250607/themes/LoveIt
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit 860fc24d8f2c82efa923df723b6d77ce0e59cdee
|
5
m2.nz/archetypes/default.md
Normal file
|
@ -0,0 +1,5 @@
|
|||
+++
|
||||
date = '{{ .Date }}'
|
||||
draft = true
|
||||
title = '{{ replace .File.ContentBaseName "-" " " | title }}'
|
||||
+++
|
3
m2.nz/assets/css/custom.css
Normal file
|
@ -0,0 +1,3 @@
|
|||
.link-cv {
|
||||
background-color: #3f88de;
|
||||
}
|
1
m2.nz/assets/icons/cv.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M96 0C43 0 0 43 0 96L0 416c0 53 43 96 96 96l288 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-64c17.7 0 32-14.3 32-32l0-320c0-17.7-14.3-32-32-32L384 0 96 0zm0 384l256 0 0 64L96 448c-17.7 0-32-14.3-32-32s14.3-32 32-32zm32-240c0-8.8 7.2-16 16-16l192 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-192 0c-8.8 0-16-7.2-16-16zm16 48l192 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-192 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z"/></svg>
|
After Width: | Height: | Size: 495 B |
69
m2.nz/config.toml
Normal file
|
@ -0,0 +1,69 @@
|
|||
baseURL = "https://m2.nz/"
|
||||
languageCode = "en"
|
||||
defaultContentLanguage = "en"
|
||||
|
||||
title = "m2.nz"
|
||||
# copyright = "Copy, _right?_ :thinking_face:"
|
||||
|
||||
enableEmoji = true
|
||||
disableKinds = ["taxonomy", "term"]
|
||||
|
||||
[params.author]
|
||||
name = "Daniel Mason"
|
||||
headline = "Snr Site Reliability Engineer | Pilot"
|
||||
image = "img/dp.jpg" # path relative to static directory
|
||||
|
||||
links = [
|
||||
{ cv = { href = "/cv", text = "CV", target = "_self" } },
|
||||
# { email = "mailto:daniel@m2.nz" },
|
||||
# { link = "https://link-to-some-website.com/" },
|
||||
# { amazon = "https://www.amazon.com/hz/wishlist/ls/wishlist-id" },
|
||||
# { apple = "https://www.apple.com" },
|
||||
# { bandcamp = "https://username.bandcamp.com" },
|
||||
# { bluesky = "https://bsky.app/profile/username" },
|
||||
# { codepen = "https://codepen.io/username" },
|
||||
# { dev = "https://dev.to/username" },
|
||||
# { discord = "https://discord.gg/invitecode" },
|
||||
# { dribbble = "https://dribbble.com/username" },
|
||||
# { facebook = "https://facebook.com/username" },
|
||||
# { flickr = "https://www.flickr.com/photos/username/" },
|
||||
# { foursquare = "https://foursquare.com/username" },
|
||||
{ linkedin = "https://linkedin.com/in/idanoo" },
|
||||
{ github = "https://github.com/idanoo" },
|
||||
# { gitlab = "https://gitlab.com/idanoo" },
|
||||
# { google = "https://www.google.com/" },
|
||||
# { instagram = "https://instagram.com/username" },
|
||||
# { keybase = "https://keybase.io/username" },
|
||||
# { kickstarter = "https://www.kickstarter.com/profile/username" },
|
||||
# { lastfm = "https://last.fm/user/username" },
|
||||
# { mastodon = "https://mastodon.instance/@username" },
|
||||
# { medium = "https://medium.com/username" },
|
||||
# { microsoft = "https://www.microsoft.com/" },
|
||||
# { patreon = "https://www.patreon.com/username" },
|
||||
# { pinterest = "https://pinterest.com/username" },
|
||||
# { reddit = "https://reddit.com/user/username" },
|
||||
# { slack = "https://workspace.url/team/userid" },
|
||||
# { snapchat = "https://snapchat.com/add/username" },
|
||||
# { soundcloud = "https://soundcloud.com/username" },
|
||||
# { spotify = "https://spotify.com/user/username" },
|
||||
# { stack-exchange = "https://stackexchange.com/users/userid/username" },
|
||||
# { stack-overflow = "https://stackoverflow.com/users/userid/username" },
|
||||
{ steam = "https://steamcommunity.com/id/idanoo" },
|
||||
# { telegram = "https://t.me/username" },
|
||||
# { threads = "https://threads.com/username" },
|
||||
{ tiktok = "https://tiktok.com/@idanoo.nz" },
|
||||
# { tumblr = "https://username.tumblr.com" },
|
||||
# { twitch = "https://twitch.tv/username" },
|
||||
# { twitter = "https://twitter.com/username" },
|
||||
# { whatsapp = "https://wa.me/phone-number" },
|
||||
# { x = "https://x.com/username" },
|
||||
# { youtube = "https://youtube.com/username" },
|
||||
]
|
||||
|
||||
[module]
|
||||
[module.hugoVersion]
|
||||
extended = false
|
||||
min = "0.86.1"
|
||||
|
||||
[markup.goldmark.renderer]
|
||||
unsafe = true
|
2
m2.nz/config/_default/module.toml
Normal file
|
@ -0,0 +1,2 @@
|
|||
[[imports]]
|
||||
path = "github.com/jpanther/lynx"
|
139
m2.nz/content/cv.md
Normal file
|
@ -0,0 +1,139 @@
|
|||
---
|
||||
title: "Employment History"
|
||||
---
|
||||
|
||||
### Certifications
|
||||
| Date | Certifcation |
|
||||
| :--- | :--- |
|
||||
| 2023/02 | [PagerDuty Certified Incident Responder](https://www.credly.com/users/daniel-mason.2a91e126/badges) |
|
||||
| 2022/05 | [Hashicorp Certified Terraform Associate](https://www.credly.com/users/daniel-mason.2a91e126/badges) |
|
||||
| 2020/06 | [AWS Certified Cloud Practicioner](https://www.credly.com/users/daniel-mason.2a91e126/badges) |
|
||||
|
||||
### Open source contributions
|
||||
| Date | Repo | Commit |
|
||||
| :--- | :--- | :--- |
|
||||
| 2025/04/06 | [LibreNMS (beb3560)](https://github.com/librenms/librenms/commit/beb356073d30fac74e928dac96ffa4a9d63036c6) | Add support for Grandstream GWN7822P Switch |
|
||||
| 2023/05/28 | [OpnSense (25e2c0a)](https://github.com/opnsense/core/commit/25e2c0a301e1437a98c8958637ca405a5fab21fa) | Resolving static routes being created for on far gateways |
|
||||
| 2023/01/29 | [Pixelfed (55dc9b0)](https://github.com/pixelfed/pixelfed/pull/4122/commits/55dc9b0aaa4623491387d06fcb83fc9e937e5e16) | Resolve issue with backticks in raw SQL for postgresql migrations |
|
||||
| 2023/01/09 | [Pixelfed (52d6553)](https://github.com/pixelfed/pixelfed/pull/4067/commits/52d65538cdfbebc73456db15390af3cfb8ee2d46) | Update User artisan commands to match UserDelete |
|
||||
| 2022/02/15 | [terraform-provider-aws (5c45fc1)](https://github.com/librenms/librenms/commit/beb356073d30fac74e928dac96ffa4a9d63036c6) | Allow S3 lifecycle 'days' parameter in S3 transition lifecycle to be >= 0 |
|
||||
| 2022/01/06 | [Pixelfed (9cc18eb)](https://github.com/pixelfed/pixelfed/pull/3122/commits/9cc18eb82acb46d2d8da22c66d12e55c192dbdb8) | Fix for firstOrCreate failing hashtags with case differences on name column |
|
||||
|
||||
### Employment
|
||||
<div style="display: flex;">
|
||||
<div style="flex-direction: row; margin-right: 20px">
|
||||
<img alt="ezyVet Logo" style="margin: 0.5em 0 0.5em 0;" title="ezyVet Logo" src="/img/ezyvet_logo.png">
|
||||
</div>
|
||||
<div style="flex-direction: row">
|
||||
<h3 style="margin-top: 10px">ezyVet</h3>
|
||||
<h4 style="margin-top: -12px; color: #afbac4">Senior Site Reliability Engineer</h4>
|
||||
<p style="margin-top: -10px">December 2022 - Current</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Working with a wide range of technologies and teams to deliver resiliant, secure and performant services.
|
||||
|
||||
- Database migrations, maintenance and patching.
|
||||
- Airflow to move and transform data between services.
|
||||
- EKS Kubernetes Clusters.
|
||||
- ElasticSearch migrations, maintenance and patching.
|
||||
- Golang APIs deployed with Helm into EKS.
|
||||
- Migrating legacy AWS resources into Terraform.
|
||||
- Packer/HCL building custom Linux/Windows AMIs.
|
||||
- Rebuilding existing platforms to scale with a focus on performance and reporting.
|
||||
|
||||
<br/>
|
||||
<div style="display: flex;">
|
||||
<div style="flex-direction: row; margin-right: 20px">
|
||||
<img alt="ezyVet Logo" style="margin: 0.5em 0 0.5em 0;" title="ezyVet Logo" src="/img/ezyvet_logo.png">
|
||||
</div>
|
||||
<div style="flex-direction: row">
|
||||
<h3 style="margin-top: 10px">ezyVet</h3>
|
||||
<h4 style="margin-top: -12px; color: #afbac4">Site Reliability Engineer</h4>
|
||||
<p style="margin-top: -10px">August 2019 - December 2022</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
My role at ezyVet is primarily focused around performance, uptime and cost across the entire platform, primarily working with PHP, MySQL, ElasticSearch and Redis.
|
||||
|
||||
- Maintaining services and patching latest versions for security and performance improvements.
|
||||
- Writing complete automation pipelines on GitLab CI.
|
||||
- Building a Golang application utilizing multiple best practice AWS services including<br/> API Gateway websockets/SQS/SNS/DynamoDB/Lambda/Terraform.
|
||||
- Incident response and improving process.
|
||||
- Creating a docker engineering environment to improve development workflows and onboarding.
|
||||
- Focus on reducing RDS load and improving SQL query times across the board.
|
||||
- Completely rewriting Elastic Search service from the ground up to improve search times.
|
||||
- Writing custom service monitoring tools in Go that interface with Slack/Pagerduty.
|
||||
- MySQL performance optimizations and maintaining integrity across all environments.
|
||||
- Introducing Grafana and reachitecting monitoring for observability.
|
||||
|
||||
<br>
|
||||
<div style="display: flex;">
|
||||
<div style="flex-direction: row; margin-right: 20px">
|
||||
<img alt="Catalyst IT Logo" width="90" style="margin: 0.5em 0 0.5em 0;" title="Catalyst IT Logo" src="/img/catalyst_logo.png">
|
||||
</div>
|
||||
<div style="flex-direction: row">
|
||||
<h3 style="margin-top: 10px">Catalyst IT</h3>
|
||||
<h4 style="margin-top: -12px; color: #afbac4">Devops Engineer</h4>
|
||||
<p style="margin-top: -10px">October 2018 - August 2019</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
At Catalyst, I worked directly with several large corporate clients doing routine patching, performance improvements and general BAU. While primarily configuring CI/CD pipelines for full automated tested and deployments, I also gained experience with helm chart deployments into Kubernetes clusters hosted on OpenStack.I have also had the opportunity to gain more experience working with Puppet, Ansible and GitLab CI.
|
||||
|
||||
<br/>
|
||||
<div style="display: flex;">
|
||||
<div style="flex-direction: row; margin-right: 20px">
|
||||
<img alt="ezyVet Logo" style="margin: 0.5em 0 0.5em 0;" title="ezyVet Logo" src="/img/ezyvet_logo.png">
|
||||
</div>
|
||||
<div style="flex-direction: row">
|
||||
<h3 style="margin-top: 10px">ezyVet</h3>
|
||||
<h4 style="margin-top: -12px; color: #afbac4">Cloud Environment and Application Engineer</h4>
|
||||
<p style="margin-top: -10px">March 2017 - October 2018</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
At ezyVet, I was primarily in charge of reviewing and merging code into our production environment as well as being our in-house DevOps/Infrastructure person. I occasionally did development work as well. In this position I gained vast experience in multiple areas as outlined below.
|
||||
|
||||
The position currently included the following responsibilities:
|
||||
- Setting up and improving our CI/CD processes.
|
||||
- Maintaining and constantly improving our environment. (AWS/Terraform)
|
||||
- Setting up custom alerts / metrics with Cloudwatch & Grafana.
|
||||
- Responding proactively to the above alerts to fix potential issues.
|
||||
- Heavily involved in rolling out new technologies to our stack.
|
||||
- Revision, escalation and resolution of tickets and other critical issues.
|
||||
- Mentored Junior Developers through their induction into ezyVet.
|
||||
|
||||
DevOps:
|
||||
- AWS: Consistently Improving our infrastructure to be efficient and reliable
|
||||
- Linux: Daily experience with Debian, Ubuntu and Arch.
|
||||
- CI / CD: Setting up and maintaining GitLab runners to run our Unit Tests / Automatic deploy pipelines inside docker containers.
|
||||
- Packer/Chef/Vagrant: Building custom AMI images for AWS & Vagrant for our development machines.
|
||||
- Terraform: Assisted migration of our AWS environments to code.
|
||||
- Virtualization: Setting up Vagrant / Virtual Box environments that mock our production environment.
|
||||
|
||||
Programming:
|
||||
- PHP: Building small features and day-to-day bug fixes as well.
|
||||
- MySQL.
|
||||
- Shell / Bash: Created custom scripts to achieve specific goals.
|
||||
- Python / Node.js: Lambda functions in serverless.
|
||||
- HTML / CSS / JS / jQuery.
|
||||
|
||||
Management:
|
||||
- Code Review: In charge of reviewing all code before it gets merged in to our production branches.
|
||||
- JIRA / Confluence / Freshdesk: Primarily used JIRA for ticket-tracking and Confluence for In-house documentation.
|
||||
- Mentoring: I have taken on several junior developers over the 2 years to train them and assist them in becoming familiar with out code-base and work-flow.
|
||||
|
||||
<br/>
|
||||
<div style="display: flex;">
|
||||
<div style="flex-direction: row; margin-right: 20px">
|
||||
<img alt="ezyVet Logo" style="margin: 0.5em 0 0.5em 0;" title="ezyVet Logo" src="/img/ezyvet_logo.png">
|
||||
</div>
|
||||
<div style="flex-direction: row">
|
||||
<h3 style="margin-top: 10px">ezyVet</h3>
|
||||
<h4 style="margin-top: -12px; color: #afbac4">Full Stack Developer</h4>
|
||||
<p style="margin-top: -10px">March 2016 - August 2017</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Focused on building new features and improving our cloud environment and application.<br/>Working primarily with PHP.
|
5
m2.nz/go.mod
Normal file
|
@ -0,0 +1,5 @@
|
|||
module github.com/idanoo/m2.nz
|
||||
|
||||
go 1.24.4
|
||||
|
||||
require github.com/jpanther/lynx v1.4.0 // indirect
|
2
m2.nz/go.sum
Normal file
|
@ -0,0 +1,2 @@
|
|||
github.com/jpanther/lynx v1.4.0 h1:ymYkoVjFXkdzSD6YBjF6zsTUK3kSi3QTxtxpHtsnlhw=
|
||||
github.com/jpanther/lynx v1.4.0/go.mod h1:nUK1+IfScKhRA3/jBH+YCYfpO3znP5Nsm6ROFGpma44=
|
BIN
m2.nz/static/.DS_Store
vendored
Normal file
BIN
m2.nz/static/img/aws.jpg
Normal file
After Width: | Height: | Size: 2.2 KiB |
BIN
m2.nz/static/img/catalyst_logo.png
Normal file
After Width: | Height: | Size: 6.3 KiB |
BIN
m2.nz/static/img/dp.jpg
Normal file
After Width: | Height: | Size: 56 KiB |
BIN
m2.nz/static/img/ezyvet_logo.png
Normal file
After Width: | Height: | Size: 7.7 KiB |
BIN
m2.nz/static/img/hashicorp.jpg
Normal file
After Width: | Height: | Size: 2.2 KiB |
BIN
m2.nz/static/img/pagerduty.png
Normal file
After Width: | Height: | Size: 11 KiB |
|
@ -1,10 +0,0 @@
|
|||
{
|
||||
"presets": [
|
||||
[
|
||||
"@babel/preset-env",
|
||||
{
|
||||
"targets": "> 0.01%"
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,37 +0,0 @@
|
|||
version: 2.1
|
||||
|
||||
executors:
|
||||
hugo:
|
||||
parameters:
|
||||
version:
|
||||
description: "version tag"
|
||||
type: string
|
||||
docker:
|
||||
- image: cibuilds/hugo:<<parameters.version>>
|
||||
|
||||
jobs:
|
||||
build-check:
|
||||
parameters:
|
||||
version:
|
||||
description: "version tag"
|
||||
type: string
|
||||
executor:
|
||||
name: hugo
|
||||
version: <<parameters.version>>
|
||||
working_directory: ~/LoveIt
|
||||
steps:
|
||||
- checkout
|
||||
- run: git submodule sync
|
||||
- run: git submodule update --init
|
||||
- run: hugo --source exampleSite --gc --minify --environment production
|
||||
- run: htmlproofer exampleSite/public --disable-external true --ignore-missing-alt true
|
||||
|
||||
workflows:
|
||||
build-check:
|
||||
jobs:
|
||||
- build-check:
|
||||
name: build-check-min
|
||||
version: 0.128.0
|
||||
- build-check:
|
||||
name: build-check-max
|
||||
version: 0.144.2
|
1
themes/LoveIt/.github/FUNDING.yml
vendored
|
@ -1 +0,0 @@
|
|||
custom: https://paypal.me/dillonzq
|
|
@ -1,41 +0,0 @@
|
|||
---
|
||||
name: Bug Report 错误报告
|
||||
about: Create a bug report 创建一个错误报告
|
||||
title: "[BUG] Some problem..."
|
||||
labels: bug
|
||||
|
||||
---
|
||||
|
||||
### Describe the bug 描述你遇到的错误
|
||||
|
||||
A clear and concise description of what the bug is.
|
||||
一段简短的对于你遇到的错误的描述.
|
||||
|
||||
### Expected behavior 期待的行为
|
||||
|
||||
A clear and concise description of what you expected to happen.
|
||||
一段简短的对于你期待的行为的描述.
|
||||
|
||||
### Screenshots 屏幕截图
|
||||
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
如果可以的话, 提供屏幕截图对解决问题很有帮助.
|
||||
|
||||
### Build Environment 构建环境
|
||||
|
||||
- OS: [e.g. Windows 11, macOS, Ubuntu]
|
||||
- Theme version/commit [e.g. 0.2.0, 2ccba79]
|
||||
- Hugo version [e.g. 0.69.0]
|
||||
|
||||
Please try to use Hugo **extended** version before opening the issue.
|
||||
请在创建 issue 之前先尝试使用 Hugo **extended** 版本构建.
|
||||
|
||||
### Preview Environment 预览环境
|
||||
|
||||
- OS: [e.g. Windows 11, macOS, Ubuntu, iOS, Android]
|
||||
- Browser type/version [e.g. Chrome 103.0.5060.53, Safari 15.5, Edge 103.0.1264.37, Firefox 102.0]
|
||||
|
||||
### Additional Information 补充信息
|
||||
|
||||
Configuration files or front matter code...
|
||||
配置文件或者前置参数的代码...
|
|
@ -1,5 +0,0 @@
|
|||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Theme Documentation 主题文档
|
||||
url: https://hugoloveit.com/categories/documentation/
|
||||
about: Please read the documentation carefully. 请先仔细阅读主题文档.
|
|
@ -1,22 +0,0 @@
|
|||
---
|
||||
name: Feature request 功能请求
|
||||
about: Suggest an idea for this project 为这个项目提供一个建议
|
||||
title: "[FEATURE] Some feature"
|
||||
labels: enhancement
|
||||
|
||||
---
|
||||
|
||||
### Describe the feature you want 描述你的功能需求
|
||||
|
||||
- Feature 1 功能需求 1
|
||||
I want this feature to solve ...
|
||||
我希望这个功能解决 ...
|
||||
- Feature 2 功能需求 2
|
||||
I want this feature to solve ...
|
||||
我希望这个功能解决 ...
|
||||
- ...
|
||||
|
||||
### Useful reference 有价值的参考
|
||||
|
||||
If available, provide useful links to fulfill the feature.
|
||||
如果可以的话, 提供实现这个功能的相关参考链接.
|
20
themes/LoveIt/.gitignore
vendored
|
@ -1,20 +0,0 @@
|
|||
# Hugo default output directory
|
||||
public/
|
||||
/exampleSite/resources/
|
||||
/exampleSite/.hugo_build.lock
|
||||
|
||||
node_modules/
|
||||
build/
|
||||
|
||||
## OS Files
|
||||
# Windows
|
||||
Thumbs.db
|
||||
ehthumbs.db
|
||||
Desktop.ini
|
||||
$RECYCLE.BIN/
|
||||
|
||||
# OSX
|
||||
.DS_Store
|
||||
|
||||
# Linux
|
||||
.directory
|
|
@ -1,4 +0,0 @@
|
|||
#!/bin/zsh
|
||||
. "$(dirname "$0")/_/husky.sh"
|
||||
|
||||
npm run compile && npm run compile-lunr-segmentit && npm run hugo-production && npm run copy-resources && git add resources assets
|
|
@ -1,21 +0,0 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2018 LIUZHICHAO.COM
|
||||
Copyright (c) 2019 DILLONZQ.COM
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@ -1,217 +0,0 @@
|
|||
# LoveIt Theme | Hugo
|
||||
|
||||
[](https://github.com/dillonzq/LoveIt/releases)
|
||||
[](https://gohugo.io/)
|
||||
[](https://github.com/dillonzq/LoveIt/blob/master/LICENSE)
|
||||
[](https://app.netlify.com/sites/hugo-loveit/deploys)
|
||||
[](https://circleci.com/gh/dillonzq/LoveIt/tree/master)
|
||||
|
||||
English README | [简体中文说明](https://github.com/dillonzq/LoveIt/blob/master/README.zh-cn.md)
|
||||
|
||||
> **LoveIt** is a **clean**, **elegant** but **advanced** blog theme for [Hugo](https://gohugo.io/).
|
||||
|
||||
It is based on the original [LeaveIt Theme](https://github.com/liuzc/LeaveIt) and [KeepIt Theme](https://github.com/Fastbyte01/KeepIt).
|
||||
|
||||
Since the three themes have a similar look, if you have questions about their differences,
|
||||
read [Why choose LoveIt](#why-choose-loveit) so that you can choose the one that works best for you.
|
||||
|
||||

|
||||
|
||||
## [Demo Site](https://hugoloveit.com/)
|
||||
|
||||
To see this theme in action, here is a live [demo site](https://hugoloveit.com/) which is rendered with **LoveIt** theme.
|
||||
|
||||
## Why choose LoveIt
|
||||
|
||||
Compared to the original LeaveIt theme and the KeepIt theme, the LoveIt theme has the following modifications.
|
||||
|
||||
* Custom **Header**
|
||||
* Custom **CSS Style**
|
||||
* A new **home page**, compatible with the latest version of Hugo
|
||||
* A lot of **style detail adjustments,** including color, font size, margins, code preview style
|
||||
* More readable **dark mode**
|
||||
* Some beautiful **CSS animations**
|
||||
* Easy-to-use and self-expanding **table of contents**
|
||||
* More **social links**, **share sites** and **comment system**
|
||||
* **Search** supported by [Lunr.js](https://lunrjs.com/) or [algolia](https://www.algolia.com/)
|
||||
* **Copy code** to clipboard with one click
|
||||
* Extended Markdown syntax for **[Font Awesome](https://fontawesome.com/) icons**
|
||||
* Extended Markdown syntax for **ruby annotation**
|
||||
* Extended Markdown syntax for **fraction**
|
||||
* **Mathematical formula** supported by [KaTeX](https://katex.org/)
|
||||
* **Diagram syntax** shortcode supported by [mermaid](https://github.com/mermaid-js/mermaid)
|
||||
* **Interactive data visualization** shortcode supported by [ECharts](https://echarts.apache.org/)
|
||||
* **Mapbox** shortcode supported by [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js)
|
||||
* Embedded **music player** supported by [APlayer](https://github.com/MoePlayer/APlayer) and [MetingJS](https://github.com/metowolf/MetingJS)
|
||||
* **Bilibili** player supported
|
||||
* Kinds of **admonitions** shortcode supported
|
||||
* Custom style shortcodes supported
|
||||
* **CDN** for all third-party libraries supported
|
||||
* ...
|
||||
|
||||
In short,
|
||||
if you prefer the design language and freedom of the LoveIt theme,
|
||||
if you want to use the extended Font Awesome icons conveniently,
|
||||
if you want to embed mathematical formulas, flowcharts, music or Bilibili videos in your posts,
|
||||
the LoveIt theme may be more suitable for you.
|
||||
|
||||
I hope you will LoveIt ❤️!
|
||||
|
||||
## Features
|
||||
|
||||
### Performance and SEO
|
||||
|
||||
* Optimized for **performance**: 99/100 on mobile and 100/100 on desktop in [Google PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights)
|
||||
* Optimized SEO performance with a correct **SEO SCHEMA** based on JSON-LD
|
||||
* **[Google Analytics](https://analytics.google.com/analytics)** supported
|
||||
* **[Fathom Analytics](https://usefathom.com/)** supported
|
||||
* **[Plausible Analytics](https://plausible.io/)** supported
|
||||
* **[Yandex Metrica](https://metrica.yandex.com/)** supported
|
||||
* Search engine **verification** supported (Google, Bind, Yandex and Baidu)
|
||||
* **CDN** for third-party libraries supported
|
||||
* Automatically converted images with **Lazy Load** by [lazysizes](https://github.com/aFarkas/lazysizes)
|
||||
|
||||
### Appearance and Layout
|
||||
|
||||
* **Desktop/Mobile Responsive** layout
|
||||
* **Light/Dark** mode
|
||||
* Globally consistent **design language**
|
||||
* **Pagination** supported
|
||||
* Easy-to-use and self-expanding **table of contents**
|
||||
* **Multilanguage** supported and i18n ready
|
||||
* Beautiful **CSS animation**
|
||||
|
||||
### Social and Comment Systems
|
||||
|
||||
* **Gravatar** supported by [Gravatar](https://gravatar.com)
|
||||
* Local **Avatar** supported
|
||||
* Up to **76** social links supported
|
||||
* Up to **24** share sites supported
|
||||
* **Disqus** comment system supported by [Disqus](https://disqus.com)
|
||||
* **Gitalk** comment system supported by [Gitalk](https://github.com/gitalk/gitalk)
|
||||
* **Valine** comment system supported by [Valine](https://valine.js.org/)
|
||||
* **Facebook comments** system supported by [Facebook](https://developers.facebook.com/docs/plugins/comments/)
|
||||
* **Telegram comments** system supported by [Telegram Comments](https://comments.app/)
|
||||
* **Commento** comment system supported by [Commento](https://commento.io/)
|
||||
* **utterances** comment system supported by [utterances](https://utteranc.es/)
|
||||
* **giscus** comment system supported by [giscus](https://giscus.app/)
|
||||
|
||||
### Extended Features
|
||||
|
||||
* **Search** supported by [Lunr.js](https://lunrjs.com/) or [algolia](https://www.algolia.com/)
|
||||
* **Twemoji** supported
|
||||
* Automatically **highlighting** code
|
||||
* **Copy code** to clipboard with one click
|
||||
* **Images gallery** supported by [lightGallery](https://github.com/sachinchoolur/lightgallery)
|
||||
* Extended Markdown syntax for **[Font Awesome](https://fontawesome.com/) icons**
|
||||
* Extended Markdown syntax for **ruby annotation**
|
||||
* Extended Markdown syntax for **fraction**
|
||||
* **Mathematical formula** supported by [KaTeX](https://katex.org/)
|
||||
* **Diagrams** shortcode supported by [mermaid](https://github.com/mermaid-js/mermaid)
|
||||
* **Interactive data visualization** shortcode supported by [ECharts](https://echarts.apache.org/)
|
||||
* **Mapbox** shortcode supported by [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js)
|
||||
* **Music player** shortcode supported by [APlayer](https://github.com/MoePlayer/APlayer) and [MetingJS](https://github.com/metowolf/MetingJS)
|
||||
* **Bilibili player** shortcode
|
||||
* Kinds of **admonitions** shortcode
|
||||
* **Custom style** shortcode
|
||||
* **Custom script** shortcode
|
||||
* **Animated typing** supported by [TypeIt](https://typeitjs.com/)
|
||||
* **Cookie consent banner** supported by [cookieconsent](https://github.com/osano/cookieconsent)
|
||||
* **Person** shortcode
|
||||
* ...
|
||||
|
||||
## [Documentation](https://hugoloveit.com/categories/documentation/)
|
||||
|
||||
Build Documentation Locally:
|
||||
|
||||
```bash
|
||||
hugo server --source=exampleSite
|
||||
```
|
||||
|
||||
## Multilingual and i18n
|
||||
|
||||
LoveIt supports the following languages:
|
||||
|
||||
* English
|
||||
* Simplified Chinese
|
||||
* Traditional Chinese
|
||||
* French
|
||||
* Polish
|
||||
* Portuguese (Brazil)
|
||||
* Italian
|
||||
* Spanish
|
||||
* German
|
||||
* Serbian
|
||||
* Russian
|
||||
* Romanian
|
||||
* Vietnamese
|
||||
* Arabic
|
||||
* Catalan
|
||||
* Thai
|
||||
* Telugu
|
||||
* Indonesian
|
||||
* Turkish
|
||||
* Korean
|
||||
* Hindi
|
||||
* Dutch
|
||||
* Bengali
|
||||
* [Contribute with a new language](https://github.com/dillonzq/LoveIt/pulls)
|
||||
|
||||
[Languages Compatibility](https://hugoloveit.com/theme-documentation-basics/#language-compatibility)
|
||||
|
||||
## [Roadmap](https://github.com/dillonzq/LoveIt/projects/1)
|
||||
|
||||
## Questions, ideas, bugs, pull requests
|
||||
|
||||
All feedback is welcome! Head over to the [issue tracker](https://github.com/dillonzq/LoveIt/issues).
|
||||
|
||||
## License
|
||||
|
||||
LoveIt is licensed under the **MIT** license. Check the [LICENSE file](https://github.com/dillonzq/LoveIt/blob/master/LICENSE) for details.
|
||||
|
||||
## Special Thanks
|
||||
|
||||
Thanks to the authors of following resources included in the theme:
|
||||
|
||||
* [normalize.css](https://github.com/necolas/normalize.css)
|
||||
* [Font Awesome](https://fontawesome.com/)
|
||||
* [Simple Icons](https://github.com/simple-icons/simple-icons)
|
||||
* [Animate.css](https://daneden.github.io/animate.css/)
|
||||
* [autocomplete](https://github.com/algolia/autocomplete)
|
||||
* [Lunr.js](https://lunrjs.com/)
|
||||
* [algoliasearch](https://github.com/algolia/algoliasearch-client-javascript)
|
||||
* [lazysizes](https://github.com/aFarkas/lazysizes)
|
||||
* [object-fit-images](https://github.com/fregante/object-fit-images)
|
||||
* [Twemoji](https://github.com/twitter/twemoji)
|
||||
* [emoji-data](https://github.com/iamcal/emoji-data)
|
||||
* [lightGallery](https://github.com/sachinchoolur/lightgallery)
|
||||
* [clipboard.js](https://github.com/zenorocha/clipboard.js)
|
||||
* [Sharer.js](https://github.com/ellisonleao/sharer.js)
|
||||
* [TypeIt](https://typeitjs.com/)
|
||||
* [KaTeX](https://katex.org/)
|
||||
* [mermaid](https://github.com/mermaid-js/mermaid)
|
||||
* [ECharts](https://echarts.apache.org/)
|
||||
* [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js)
|
||||
* [APlayer](https://github.com/MoePlayer/APlayer)
|
||||
* [MetingJS](https://github.com/metowolf/MetingJS)
|
||||
* [Gitalk](https://github.com/gitalk/gitalk)
|
||||
* [Valine](https://valine.js.org/)
|
||||
* [cookieconsent](https://github.com/osano/cookieconsent)
|
||||
|
||||
## Author
|
||||
|
||||
[Dillon](https://dillonzq.com)
|
||||
|
||||
## Sponsor
|
||||
|
||||
If you enjoy the theme, please consider buying me a coffee ☕️.
|
||||
|
||||
* [PayPal](https://paypal.me/dillonzq)
|
||||
* [Alipay](https://github.com/dillonzq/LoveIt/raw/master/images/Alipay.jpg)
|
||||
* [Wechat](https://github.com/dillonzq/LoveIt/raw/master/images/Wechat.jpg)
|
||||
|
||||
Thanks! ❤️
|
||||
|
||||
## Stargazers over time
|
||||
|
||||
[](https://starchart.cc/dillonzq/LoveIt)
|
|
@ -1,212 +0,0 @@
|
|||
# LoveIt 主题 | Hugo
|
||||
|
||||
[](https://github.com/dillonzq/LoveIt/releases)
|
||||
[](https://gohugo.io/)
|
||||
[](https://github.com/dillonzq/LoveIt/blob/master/LICENSE)
|
||||
[](https://app.netlify.com/sites/hugo-loveit/deploys)
|
||||
[](https://circleci.com/gh/dillonzq/LoveIt/tree/master)
|
||||
|
||||
[English README](https://github.com/dillonzq/LoveIt/blob/master/README.md) | 简体中文说明
|
||||
|
||||
> [LoveIt](https://github.com/dillonzq/LoveIt) 是一个**简洁**、**优雅**且**高效**的 [Hugo](https://gohugo.io/) 博客主题。
|
||||
|
||||
它的原型基于 [LeaveIt 主题](https://github.com/liuzc/LeaveIt) 和 [KeepIt 主题](https://github.com/Fastbyte01/KeepIt)。
|
||||
|
||||
由于三个主题外观的相似性,如果你对于它们的不同之处有疑问,请阅读 [为什么选择 LoveIt](#为什么选择-LoveIt),以便你能选择最适合你的一个。
|
||||
|
||||

|
||||
|
||||
## 主题[预览](https://hugoloveit.com/zh-cn/)
|
||||
|
||||
为了直观地浏览主题特性,这里有一个基于 **LoveIt** 主题渲染的 [预览网站](https://hugoloveit.com/zh-cn/)。
|
||||
|
||||
## 为什么选择 LoveIt
|
||||
|
||||
相较于 LeaveIt 主题 和 KeepIt 主题,LoveIt 主题主要有以下修改
|
||||
|
||||
* 自定义**标题栏**
|
||||
* 自定义**CSS 样式**
|
||||
* 焕然一新的**主页**,已经兼容最新版 Hugo
|
||||
* 大量的**样式细节调整**,包括颜色、字体大小、边距、代码预览样式
|
||||
* 可读性更强的**深色模式**
|
||||
* 一些美观的 **CSS 动画**
|
||||
* 易用和自动展开的**文章目录**
|
||||
* 支持更多的**社交链接**、**网站分享**和**评论系统**
|
||||
* 支持基于 [Lunr.js](https://lunrjs.com/) 或 [algolia](https://www.algolia.com/) 的**搜索**
|
||||
* 一键**复制代码**到剪贴板
|
||||
* 支持基于 **[Font Awesome](https://fontawesome.com/) 图标**的扩展 Markdown 语法
|
||||
* 支持**上标注释**的扩展 Markdown 语法
|
||||
* 支持**分数**的扩展 Markdown 语法
|
||||
* 支持基于 [KaTeX](https://katex.org/) 的**数学公式**
|
||||
* 支持基于 [mermaid](https://github.com/mermaid-js/mermaid) 的**图表**生成功能
|
||||
* 支持基于 [ECharts](https://echarts.apache.org/) 的**交互式数据可视化**生成功能
|
||||
* 支持基于 [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js) 的 **Mapbox** 地图显示功能
|
||||
* 支持基于 [APlayer](https://github.com/MoePlayer/APlayer) 和 [MetingJS](https://github.com/metowolf/MetingJS) 的内嵌**音乐播放器**
|
||||
* 支持内嵌 **Bilibili** 视频
|
||||
* 支持多种**注释**的 shortcode
|
||||
* 支持自定义样式的 shortcode
|
||||
* 支持所有第三方库的 **CDN**
|
||||
* ...
|
||||
|
||||
所以,如果你更偏好 LoveIt 主题的设计语言和自由度,如果你想便捷地使用扩展的 Font Awesome 图标,如果你想在文章内嵌数学公式、流程图、音乐或是 Bilibili 视频,
|
||||
那么,LoveIt 主题可能是更适合你。
|
||||
希望你会 LoveIt ❤️!
|
||||
|
||||
## 特性
|
||||
|
||||
### 性能和 SEO
|
||||
|
||||
* **性能**优化:在 [Google PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights) 中, 99/100 的移动设备得分和 100/100 的桌面设备得分
|
||||
* 使用基于 JSON-LD 格式 的 **SEO SCHEMA** 文件进行 SEO 优化
|
||||
* 支持 **[Google Analytics](https://analytics.google.com/analytics)**
|
||||
* 支持 **[Fathom Analytics](https://usefathom.com/)**
|
||||
* 支持 **[Plausible Analytics](https://plausible.io/)**
|
||||
* 支持 **[Yandex Metrica](https://metrica.yandex.com/)**
|
||||
* 支持搜索引擎的**网站验证** (Google, Bind, Yandex 和 Baidu)
|
||||
* 支持所有第三方库的 **CDN**
|
||||
* 基于 [lazysizes](https://github.com/aFarkas/lazysizes) 自动转换图片为**懒加载**
|
||||
|
||||
### 外观和布局
|
||||
|
||||
* **桌面端/移动端 响应式**布局
|
||||
* **浅色/深色** 主题模式
|
||||
* 全局一致的**设计语言**
|
||||
* 支持**分页**
|
||||
* 易用和自动展开的**文章目录**
|
||||
* 支持**多语言**和国际化
|
||||
* 美观的 **CSS 动画**
|
||||
|
||||
### 社交和评论系统
|
||||
|
||||
* 支持 **[Gravatar](https://gravatar.com)** 头像
|
||||
* 支持本地**头像**
|
||||
* 支持多达 **76** 种社交链接
|
||||
* 支持多达 **24** 种网站分享
|
||||
* 支持 **[Disqus](https://disqus.com)** 评论系统
|
||||
* 支持 **[Gitalk](https://github.com/gitalk/gitalk)** 评论系统
|
||||
* 支持 **[Valine](https://valine.js.org/)** 评论系统
|
||||
* 支持 **[Facebook comments](https://developers.facebook.com/docs/plugins/comments/)** 评论系统
|
||||
* 支持 **[Telegram comments](https://comments.app/)** 评论系统
|
||||
* 支持 **[Commento](https://commento.io/)** 评论系统
|
||||
* 支持 **[utterances](https://utteranc.es/)** 评论系统
|
||||
* 支持 **[giscus](https://giscus.app/)** 评论系统
|
||||
|
||||
### 扩展功能
|
||||
|
||||
* 支持基于 [Lunr.js](https://lunrjs.com/) 或 [algolia](https://www.algolia.com/) 的**搜索**
|
||||
* 支持 **Twemoji**
|
||||
* 支持**代码高亮**
|
||||
* 一键**复制代码**到剪贴板
|
||||
* 支持基于 [lightGallery](https://github.com/sachinchoolur/lightgallery) 的**图片画廊**
|
||||
* 支持 **[Font Awesome](https://fontawesome.com/) 图标**的扩展 Markdown 语法
|
||||
* 支持**上标注释**的扩展 Markdown 语法
|
||||
* 支持**分数**的扩展 Markdown 语法
|
||||
* 支持基于 [KaTeX](https://katex.org/) 的**数学公式**
|
||||
* 支持基于 [mermaid](https://github.com/mermaid-js/mermaid) 的**图表** shortcode
|
||||
* 支持基于 [ECharts](https://echarts.apache.org/) 的**交互式数据可视化** shortcode
|
||||
* 支持基于 [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js) 的 **Mapbox** shortcode
|
||||
* 支持基于 [APlayer](https://github.com/MoePlayer/APlayer) 和 [MetingJS](https://github.com/metowolf/MetingJS) 的**音乐播放器** shortcode
|
||||
* 支持 **Bilibili 视频** shortcode
|
||||
* 支持多种**注释**的 shortcode
|
||||
* 支持**自定义样式**的 shortcode
|
||||
* 支持**自定义脚本**的 shortcode
|
||||
* 支持基于 [TypeIt](https://typeitjs.com/) 的**打字动画** shortcode
|
||||
* 支持基于 [cookieconsent](https://github.com/osano/cookieconsent) 的 **Cookie 许可横幅**
|
||||
* 支持**人物标签**的 shortcode
|
||||
* ...
|
||||
|
||||
## [文档](https://hugoloveit.com/zh-cn/categories/documentation/)
|
||||
|
||||
在本地构建文档:
|
||||
|
||||
```bash
|
||||
hugo server --source=exampleSite
|
||||
```
|
||||
|
||||
## 多语言和国际化
|
||||
|
||||
LoveIt 支持下列语言:
|
||||
|
||||
* 英语
|
||||
* 简体中文
|
||||
* 繁体中文
|
||||
* 法语
|
||||
* 波兰语
|
||||
* 葡萄牙语(巴西)
|
||||
* 意大利语
|
||||
* 西班牙语
|
||||
* 德语
|
||||
* 塞尔维亚语
|
||||
* 俄语
|
||||
* 罗马尼亚语
|
||||
* 越南语
|
||||
* 阿拉伯语
|
||||
* 加泰罗尼亚语
|
||||
* 泰语
|
||||
* 泰卢固语
|
||||
* 印尼语
|
||||
* 土耳其语
|
||||
* 韩语
|
||||
* 印地语
|
||||
* 荷兰语
|
||||
* 孟加拉语
|
||||
* [贡献一种新的语言](https://github.com/dillonzq/LoveIt/pulls)
|
||||
|
||||
[语言兼容性](https://hugoloveit.com/zh-cn/theme-documentation-basics/#language-compatibility)
|
||||
|
||||
## [路线图](https://github.com/dillonzq/LoveIt/projects/1)
|
||||
|
||||
## 问题、想法、 bugs 和 PRs
|
||||
|
||||
所有的反馈都是欢迎的!详见 [issue tracker](https://github.com/dillonzq/LoveIt/issues)。
|
||||
|
||||
## 许可协议
|
||||
|
||||
LoveIt 根据 **MIT** 许可协议授权。 更多信息请查看 [LICENSE 文件](https://github.com/dillonzq/LoveIt/blob/master/LICENSE)。
|
||||
|
||||
## 特别感谢
|
||||
|
||||
LoveIt 主题中用到了以下项目,感谢它们的作者:
|
||||
|
||||
* [normalize.css](https://github.com/necolas/normalize.css)
|
||||
* [Font Awesome](https://fontawesome.com/)
|
||||
* [Simple Icons](https://github.com/simple-icons/simple-icons)
|
||||
* [Animate.css](https://daneden.github.io/animate.css/)
|
||||
* [autocomplete](https://github.com/algolia/autocomplete)
|
||||
* [Lunr.js](https://lunrjs.com/)
|
||||
* [algoliasearch](https://github.com/algolia/algoliasearch-client-javascript)
|
||||
* [lazysizes](https://github.com/aFarkas/lazysizes)
|
||||
* [object-fit-images](https://github.com/fregante/object-fit-images)
|
||||
* [Twemoji](https://github.com/twitter/twemoji)
|
||||
* [emoji-data](https://github.com/iamcal/emoji-data)
|
||||
* [lightGallery](https://github.com/sachinchoolur/lightgallery)
|
||||
* [clipboard.js](https://github.com/zenorocha/clipboard.js)
|
||||
* [Sharer.js](https://github.com/ellisonleao/sharer.js)
|
||||
* [TypeIt](https://typeitjs.com/)
|
||||
* [KaTeX](https://katex.org/)
|
||||
* [mermaid](https://github.com/mermaid-js/mermaid)
|
||||
* [ECharts](https://echarts.apache.org/)
|
||||
* [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js)
|
||||
* [APlayer](https://github.com/MoePlayer/APlayer)
|
||||
* [MetingJS](https://github.com/metowolf/MetingJS)
|
||||
* [Gitalk](https://github.com/gitalk/gitalk)
|
||||
* [Valine](https://valine.js.org/)
|
||||
* [cookieconsent](https://github.com/osano/cookieconsent)
|
||||
|
||||
## 作者
|
||||
|
||||
[Dillon](https://dillonzq.com)
|
||||
|
||||
## 赞助支持
|
||||
|
||||
如果你喜爱这个主题, 请考虑给我买杯咖啡 ☕️.
|
||||
|
||||
* [PayPal](https://paypal.me/dillonzq)
|
||||
* [支付宝](https://github.com/dillonzq/LoveIt/raw/master/images/Alipay.jpg)
|
||||
* [微信支付](https://github.com/dillonzq/LoveIt/raw/master/images/Wechat.jpg)
|
||||
|
||||
谢谢! ❤️
|
||||
|
||||
## Star 数目趋势
|
||||
|
||||
[](https://starchart.cc/dillonzq/LoveIt)
|
|
@ -1,63 +0,0 @@
|
|||
---
|
||||
title: "{{ replace .TranslationBaseName "-" " " | title }}"
|
||||
subtitle: ""
|
||||
date: {{ .Date }}
|
||||
lastmod: {{ .Date }}
|
||||
draft: true
|
||||
author: ""
|
||||
authorLink: ""
|
||||
description: ""
|
||||
license: ""
|
||||
images: []
|
||||
|
||||
tags: []
|
||||
categories: []
|
||||
|
||||
featuredImage: ""
|
||||
featuredImagePreview: ""
|
||||
|
||||
hiddenFromHomePage: false
|
||||
hiddenFromSearch: false
|
||||
twemoji: false
|
||||
lightgallery: true
|
||||
ruby: true
|
||||
fraction: true
|
||||
fontawesome: true
|
||||
linkToMarkdown: true
|
||||
rssFullText: false
|
||||
|
||||
toc:
|
||||
enable: true
|
||||
auto: true
|
||||
keepStatic: false
|
||||
code:
|
||||
copy: true
|
||||
maxShownLines: 50
|
||||
math:
|
||||
enable: false
|
||||
# ...
|
||||
mapbox:
|
||||
# ...
|
||||
share:
|
||||
enable: true
|
||||
# ...
|
||||
comment:
|
||||
enable: true
|
||||
# ...
|
||||
library:
|
||||
css:
|
||||
# someCSS = "some.css"
|
||||
# located in "assets/"
|
||||
# Or
|
||||
# someCSS = "https://cdn.example.com/some.css"
|
||||
js:
|
||||
# someJS = "some.js"
|
||||
# located in "assets/"
|
||||
# Or
|
||||
# someJS = "https://cdn.example.com/some.js"
|
||||
seo:
|
||||
images: []
|
||||
# ...
|
||||
---
|
||||
|
||||
<!--more-->
|
|
@ -1,61 +0,0 @@
|
|||
html {
|
||||
font-family: var(--global-font-family);
|
||||
font-weight: var(--global-font-weight);
|
||||
font-display: swap;
|
||||
font-size: var(--global-font-size);
|
||||
line-height: var(--global-line-height);
|
||||
width:100%;
|
||||
|
||||
scroll-behavior: smooth;
|
||||
|
||||
main [id] {
|
||||
scroll-margin-top: calc(var(--header-height) + .5rem);
|
||||
}
|
||||
|
||||
h1 {
|
||||
line-height: 125%;
|
||||
}
|
||||
}
|
||||
|
||||
/* scrollbar, only support webkit */
|
||||
::-webkit-scrollbar {
|
||||
width: .5rem;
|
||||
height: .5rem;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background-color: $scrollbar-color;
|
||||
|
||||
&:hover {
|
||||
background-color: $scrollbar-hover-color;
|
||||
}
|
||||
}
|
||||
|
||||
::selection {
|
||||
background-color: $selection-color;
|
||||
|
||||
[theme=dark] & {
|
||||
background-color: $selection-color-dark;
|
||||
}
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: $global-background-color;
|
||||
color: $global-font-color;
|
||||
@include overflow-wrap(break-word);
|
||||
scrollbar-color: auto;
|
||||
|
||||
&[theme=dark] {
|
||||
color: $global-font-color-dark;
|
||||
background-color: $global-background-color-dark;
|
||||
}
|
||||
}
|
||||
|
||||
@include link(true, true);
|
||||
|
||||
@import "../_partial/mask";
|
||||
@import "../_partial/img";
|
||||
@import "../_partial/icon";
|
||||
@import "../_partial/details";
|
||||
@import "../_partial/fixed-button";
|
||||
@import "../_partial/cookieconsent";
|
|
@ -1,21 +0,0 @@
|
|||
footer {
|
||||
height: 2rem;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
line-height: 1.25rem;
|
||||
padding: 1rem 0;
|
||||
|
||||
.footer-container {
|
||||
font-size: .875rem;
|
||||
|
||||
.footer-line {
|
||||
width: 100%;
|
||||
|
||||
.icp-br {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@include blur;
|
||||
}
|
|
@ -1,468 +0,0 @@
|
|||
header {
|
||||
width: 100%;
|
||||
z-index: 150;
|
||||
background-color: $header-background-color;
|
||||
@include transition(box-shadow 0.3s ease);
|
||||
|
||||
[theme=dark] & {
|
||||
background-color: $header-background-color-dark;
|
||||
}
|
||||
|
||||
.logo {
|
||||
min-height: 1.5em;
|
||||
height: 1.5em;
|
||||
vertical-align: text-bottom;
|
||||
}
|
||||
|
||||
.logo, .header-title-pre {
|
||||
padding-right: .25rem;
|
||||
}
|
||||
|
||||
.header-title-post {
|
||||
padding-left: .25rem;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
@include box-shadow(0 0 1.5rem 0 rgba(0, 0, 0, .1));
|
||||
}
|
||||
}
|
||||
|
||||
.header-wrapper {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.header-title {
|
||||
font-family: var(--header-title-font-family);
|
||||
font-weight: bold;
|
||||
margin-right: .5rem;
|
||||
min-width: 10%;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
@include flex(10);
|
||||
}
|
||||
|
||||
.menu .menu-item {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.language-select {
|
||||
position: absolute;
|
||||
opacity: 0;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
||||
&:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
.search {
|
||||
position: relative;
|
||||
|
||||
input {
|
||||
color: transparent;
|
||||
box-sizing: border-box;
|
||||
height: 2.5rem;
|
||||
width: 2.5rem;
|
||||
@include border-radius(.5rem);
|
||||
border: none;
|
||||
outline: none;
|
||||
background-color: $header-background-color;
|
||||
vertical-align: baseline !important;
|
||||
@include transition(width 0.3s ease);
|
||||
|
||||
[theme=dark] & {
|
||||
background-color: $header-background-color-dark;
|
||||
}
|
||||
}
|
||||
|
||||
@include placeholder(transparent);
|
||||
|
||||
.search-button {
|
||||
margin: 0;
|
||||
position: absolute;
|
||||
left: auto;
|
||||
right: 1rem;
|
||||
}
|
||||
|
||||
.search-toggle {
|
||||
left: .5rem;
|
||||
right: auto;
|
||||
}
|
||||
|
||||
.search-loading {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.search-clear {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.open &, &.mobile {
|
||||
input {
|
||||
color: $global-font-color;
|
||||
background-color: $search-background-color;
|
||||
padding: 0 2rem 0 2rem;
|
||||
}
|
||||
|
||||
[theme=dark] & {
|
||||
input {
|
||||
color: $global-font-color-dark;
|
||||
background-color: $search-background-color-dark;
|
||||
}
|
||||
|
||||
@include placeholder($global-font-secondary-color-dark);
|
||||
}
|
||||
|
||||
@include placeholder($global-font-secondary-color);
|
||||
|
||||
.search-button {
|
||||
color: $global-font-secondary-color;
|
||||
|
||||
[theme=dark] & {
|
||||
color: $global-font-secondary-color-dark;
|
||||
}
|
||||
}
|
||||
|
||||
.search-clear:hover {
|
||||
color: #ff6b6b;
|
||||
}
|
||||
|
||||
.search-toggle:hover {
|
||||
cursor: default;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.theme-switch i {
|
||||
@include transform(rotate(225deg));
|
||||
}
|
||||
|
||||
#header-desktop {
|
||||
display: block;
|
||||
position: fixed;
|
||||
height: var(--header-height);
|
||||
line-height: var(--header-height);
|
||||
|
||||
[data-header-desktop=normal] & {
|
||||
position: static;
|
||||
}
|
||||
|
||||
.header-wrapper {
|
||||
padding: 0 2rem 0 10vh;
|
||||
|
||||
.header-title {
|
||||
font-size: var(--header-title-font-size);
|
||||
}
|
||||
|
||||
.menu {
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
|
||||
.menu-inner {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.menu-item {
|
||||
margin: 0 .5rem;
|
||||
|
||||
&.delimiter {
|
||||
border-left: 1.5px solid $global-font-color;
|
||||
|
||||
[theme=dark] & {
|
||||
border-left-color: $global-border-color-dark;
|
||||
}
|
||||
}
|
||||
|
||||
&.language {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
&.search {
|
||||
margin: 0 -.5rem 0 0;
|
||||
}
|
||||
}
|
||||
|
||||
a.active {
|
||||
font-weight: 900;
|
||||
color: $header-hover-color;
|
||||
|
||||
[theme=dark] & {
|
||||
color: $header-hover-color-dark;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.open .header-wrapper .menu .menu-item.search {
|
||||
margin: 0 .25rem 0 .5rem;
|
||||
|
||||
input {
|
||||
width: 24rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#header-mobile {
|
||||
display: none;
|
||||
position: fixed;
|
||||
height: var(--header-height);
|
||||
line-height: var(--header-height);
|
||||
|
||||
[data-header-mobile=normal] & {
|
||||
position: static;
|
||||
}
|
||||
|
||||
.header-container {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
|
||||
.header-wrapper {
|
||||
padding: 0 1rem;
|
||||
font-size: 1.125rem;
|
||||
@include transition(margin-top 0.3s ease);
|
||||
|
||||
.header-title {
|
||||
font-size: var(--header-title-font-size);
|
||||
max-width: 80%;
|
||||
}
|
||||
|
||||
.menu-toggle {
|
||||
line-height: 4rem;
|
||||
cursor: pointer;
|
||||
@include transition(width 0.3s ease);
|
||||
|
||||
span {
|
||||
display: block;
|
||||
background: $global-font-color;
|
||||
width: 1.5rem;
|
||||
height: 2px;
|
||||
@include border-radius(3px);
|
||||
@include transition(all 0.3s ease-in-out);
|
||||
|
||||
[theme=dark] & {
|
||||
background: $global-font-color-dark;
|
||||
}
|
||||
}
|
||||
|
||||
span:nth-child(1) {
|
||||
margin-bottom: .5rem;
|
||||
}
|
||||
|
||||
span:nth-child(3) {
|
||||
margin-top: .5rem;
|
||||
}
|
||||
|
||||
&.active {
|
||||
span:nth-child(1) {
|
||||
@include transform(rotate(45deg) translate(.4rem, .5rem));
|
||||
}
|
||||
|
||||
span:nth-child(2) {
|
||||
opacity: 0
|
||||
}
|
||||
|
||||
span:nth-child(3) {
|
||||
@include transform(rotate(-45deg) translate(.4rem, -.5rem));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.menu {
|
||||
text-align: center;
|
||||
background: $header-background-color;
|
||||
border-top: 2px solid $global-border-color;
|
||||
display: none;
|
||||
padding-top: .5rem;
|
||||
@include box-shadow(0 .125rem .25rem rgba(0, 0, 0, .1));
|
||||
|
||||
.search-wrapper {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
box-sizing: border-box;
|
||||
padding: calc((var(--header-height) - 2.5rem) / 2) 1rem;
|
||||
line-height: 2.5rem;
|
||||
}
|
||||
|
||||
.search {
|
||||
flex-grow: 10;
|
||||
|
||||
.algolia-autocomplete, input {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.search-button {
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.search-cancel {
|
||||
display: none;
|
||||
margin-left: .75rem;
|
||||
}
|
||||
|
||||
.menu-item {
|
||||
display: block;
|
||||
line-height: 2.5rem;
|
||||
}
|
||||
|
||||
&.active {
|
||||
display: block;
|
||||
}
|
||||
|
||||
[theme=dark] & {
|
||||
background: $header-background-color-dark;
|
||||
border-top-color: $global-border-color-dark;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.open {
|
||||
.header-wrapper {
|
||||
margin-top: calc(0px - var(--header-height));
|
||||
}
|
||||
|
||||
.menu {
|
||||
padding-top: 0;
|
||||
border-top: none;
|
||||
|
||||
.menu-item {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.search-cancel {
|
||||
display: inline;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.search-dropdown {
|
||||
position: fixed;
|
||||
z-index: 200;
|
||||
top: var(--header-height);
|
||||
@include box-shadow(0 .125rem .25rem rgba(0, 0, 0, .1));
|
||||
|
||||
&.desktop {
|
||||
right: 2rem;
|
||||
width: 30rem;
|
||||
}
|
||||
|
||||
&.mobile {
|
||||
right: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
right: 0 !important;
|
||||
background-color: $global-background-color;
|
||||
|
||||
[theme=dark] & {
|
||||
background-color: $global-background-color-dark;
|
||||
}
|
||||
|
||||
.suggestions {
|
||||
overflow-y: auto;
|
||||
max-height: calc(100vh - var(--header-height));
|
||||
|
||||
.suggestion {
|
||||
padding: .75rem 1rem;
|
||||
|
||||
.suggestion-title {
|
||||
display: inline-block;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
font-size: 1rem;
|
||||
font-weight: bold;
|
||||
max-width: 75%;
|
||||
}
|
||||
|
||||
.suggestion-date {
|
||||
font-size: .875rem;
|
||||
float: right;
|
||||
text-align: right;
|
||||
color: $global-font-secondary-color;
|
||||
|
||||
[theme=dark] & {
|
||||
color: $global-font-secondary-color-dark;
|
||||
}
|
||||
}
|
||||
|
||||
.suggestion-context {
|
||||
line-height: 1.25rem;
|
||||
@include box(vertical);
|
||||
-webkit-line-clamp: 2;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
@include overflow-wrap(break-word);
|
||||
color: $global-font-secondary-color;
|
||||
|
||||
[theme=dark] & {
|
||||
color: $global-font-secondary-color-dark;
|
||||
}
|
||||
}
|
||||
|
||||
em {
|
||||
font-style: normal;
|
||||
background-color: $selection-color;
|
||||
|
||||
[theme=dark] & {
|
||||
background-color: $selection-color-dark;
|
||||
}
|
||||
}
|
||||
|
||||
&.cursor {
|
||||
background: darken($code-background-color, 5%);
|
||||
|
||||
[theme=dark] & {
|
||||
background: lighten($code-background-color-dark, 5%);
|
||||
}
|
||||
}
|
||||
|
||||
&:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.search-empty {
|
||||
padding: 1rem;
|
||||
text-align: center;
|
||||
|
||||
.search-query {
|
||||
font-weight: bold;
|
||||
|
||||
[theme=dark] & {
|
||||
color: #ddd;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.search-footer {
|
||||
padding: .5rem 1rem;
|
||||
float: right;
|
||||
font-size: .8rem;
|
||||
color: $global-font-secondary-color;
|
||||
|
||||
[theme=dark] {
|
||||
color: $global-font-secondary-color-dark;
|
||||
}
|
||||
|
||||
@include link(false, false);
|
||||
|
||||
a {
|
||||
font-size: 1rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
/** Layout **/
|
||||
.wrapper {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
width: 100%;
|
||||
|
||||
main {
|
||||
flex: 1 0 auto;
|
||||
|
||||
.container {
|
||||
padding: 0 1rem;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,86 +0,0 @@
|
|||
@media only screen and (max-width: 1440px) {
|
||||
.page {
|
||||
width: 60%;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 1440px) {
|
||||
.page {
|
||||
width: 56%;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 1280px) {
|
||||
.page {
|
||||
width: 52%;
|
||||
}
|
||||
|
||||
#header-desktop .header-wrapper {
|
||||
padding-right: 1rem;
|
||||
}
|
||||
|
||||
.search-dropdown.desktop {
|
||||
right: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 960px) {
|
||||
#toc-auto {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#toc-static {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.page {
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
#header-desktop .header-wrapper {
|
||||
padding-left: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 680px) {
|
||||
#header-desktop {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#header-mobile {
|
||||
display: block;
|
||||
}
|
||||
|
||||
body.blur {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.page {
|
||||
width: 100%;
|
||||
|
||||
[data-header-mobile] & {
|
||||
padding-top: var(--header-height);
|
||||
}
|
||||
|
||||
[data-header-mobile=normal] & {
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
.categories-card {
|
||||
.card-item {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.copyright {
|
||||
.copyright-line {
|
||||
.icp-splitter {
|
||||
display: none;
|
||||
}
|
||||
.icp-br {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,91 +0,0 @@
|
|||
.pagination {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: center;
|
||||
list-style: none;
|
||||
white-space: nowrap;
|
||||
width: 100%;
|
||||
padding: 1rem 0 0;
|
||||
|
||||
a {
|
||||
font-size: .8rem;
|
||||
color: #bfbfbf;
|
||||
letter-spacing: .1rem;
|
||||
font-weight: 700;
|
||||
padding: 5px 5px;
|
||||
text-decoration: none;
|
||||
@include transition(0.3s);
|
||||
}
|
||||
|
||||
li {
|
||||
padding-bottom: 3px;
|
||||
margin: 0 20px;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
display: inline;
|
||||
|
||||
&.disabled {
|
||||
display: none;
|
||||
}
|
||||
|
||||
&:hover a {
|
||||
color: $pagination-link-hover-color;
|
||||
}
|
||||
|
||||
[theme=dark] &:hover a {
|
||||
color: $pagination-link-hover-color-dark;
|
||||
}
|
||||
|
||||
&:before,
|
||||
&:after {
|
||||
position: absolute;
|
||||
content: "";
|
||||
width: 0;
|
||||
height: 3px;
|
||||
background: $pagination-link-hover-color;
|
||||
@include transition(0.3s);
|
||||
bottom: 0px;
|
||||
}
|
||||
|
||||
[theme=dark] &:before,
|
||||
[theme=dark] &:after {
|
||||
background: $pagination-link-hover-color-dark;
|
||||
}
|
||||
|
||||
&:before .active,
|
||||
&:after .active {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
&:before {
|
||||
left: 50%;
|
||||
}
|
||||
|
||||
&:after {
|
||||
right: 50%;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
|
||||
&:before,
|
||||
&:after {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
&.active {
|
||||
a {
|
||||
color: $pagination-link-hover-color;
|
||||
}
|
||||
|
||||
[theme=dark] & a {
|
||||
color: $pagination-link-hover-color-dark;
|
||||
}
|
||||
|
||||
&:before,
|
||||
&:after {
|
||||
width: 60%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,30 +0,0 @@
|
|||
:root {
|
||||
// ========== Global ========== //
|
||||
// Font and Line Height
|
||||
--global-font-family: #{inspect($global-font-family)};
|
||||
--global-font-size: #{$global-font-size};
|
||||
--global-font-weight: #{$global-font-weight};
|
||||
--global-line-height: #{$global-line-height};
|
||||
// ========== Global ========== //
|
||||
|
||||
// ========== Header ========== //
|
||||
// Height of the header
|
||||
--header-height: #{$header-height};
|
||||
|
||||
// Font family and size of the header title
|
||||
--header-title-font-family: #{inspect($header-title-font-family)};
|
||||
--header-title-font-size: #{$header-title-font-size};
|
||||
// ========== Header ========== //
|
||||
|
||||
// ========== Single Content ========== //
|
||||
// Font size of the TOC
|
||||
--toc-title-font-size: #{$toc-title-font-size};
|
||||
--toc-content-font-size: #{$toc-content-font-size};
|
||||
// ========== Single Content ========== //
|
||||
|
||||
// ========== Code ========== //
|
||||
// Font family and size of the code
|
||||
--code-font-family: #{inspect($code-font-family)};
|
||||
--code-font-size: #{$code-font-size};
|
||||
// ========== Code ========== //
|
||||
}
|
|
@ -1,4 +0,0 @@
|
|||
// ==============================
|
||||
// Custom style
|
||||
// 自定义样式
|
||||
// ==============================
|
|
@ -1,5 +0,0 @@
|
|||
@mixin blur {
|
||||
.blur & {
|
||||
@include filter(blur(1.5px));
|
||||
}
|
||||
}
|
|
@ -1,101 +0,0 @@
|
|||
@mixin border-radius($value) {
|
||||
-webkit-border-radius: $value;
|
||||
-moz-border-radius: $value;
|
||||
border-radius: $value;
|
||||
}
|
||||
|
||||
@mixin box-shadow($values...) {
|
||||
-webkit-box-shadow: $values;
|
||||
box-shadow: $values;
|
||||
}
|
||||
|
||||
@mixin transition($values...) {
|
||||
-webkit-transition: $values;
|
||||
-moz-transition: $values;
|
||||
-o-transition: $values;
|
||||
transition: $values;
|
||||
}
|
||||
|
||||
@mixin transform($value) {
|
||||
-webkit-transform: $value;
|
||||
-ms-transform: $value;
|
||||
-o-transform: $value;
|
||||
transform: $value;
|
||||
}
|
||||
|
||||
@mixin filter($value) {
|
||||
-webkit-filter: $value;
|
||||
filter: $value;
|
||||
}
|
||||
|
||||
@mixin flex($value) {
|
||||
-webkit-flex: $value;
|
||||
flex: $value;
|
||||
}
|
||||
|
||||
@mixin box($orient) {
|
||||
display: -moz-box;
|
||||
display: -webkit-box;
|
||||
display: box;
|
||||
|
||||
-webkit-box-orient: $orient;
|
||||
-moz-box-orient: $orient;
|
||||
// box-orient: $orient;
|
||||
}
|
||||
|
||||
@mixin placeholder($color) {
|
||||
input::-webkit-input-placeholder{
|
||||
color: $color;
|
||||
}
|
||||
|
||||
input:-moz-placeholder{
|
||||
color: $color;
|
||||
}
|
||||
|
||||
input::-moz-placeholder{
|
||||
color: $color;
|
||||
}
|
||||
|
||||
input:-ms-input-placeholder{
|
||||
color: $color;
|
||||
}
|
||||
|
||||
input::placeholder {
|
||||
color: $color;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin max-content($property) {
|
||||
#{$property}: -webkit-max-content;
|
||||
#{$property}: -moz-max-content;
|
||||
#{$property}: intrinsic;
|
||||
#{$property}: max-content;
|
||||
}
|
||||
|
||||
@mixin tab-size($value) {
|
||||
-moz-tab-size: $value;
|
||||
-o-tab-size: $value;
|
||||
tab-size: $value;
|
||||
}
|
||||
|
||||
@mixin appearance($value) {
|
||||
-webkit-appearance: $value;
|
||||
-moz-appearance: $value;
|
||||
}
|
||||
|
||||
@mixin overflow-wrap($value) {
|
||||
word-wrap: $value;
|
||||
overflow-wrap: $value;
|
||||
}
|
||||
|
||||
@mixin line-break($value) {
|
||||
-webkit-line-break: $value;
|
||||
-ms-line-break: $value;
|
||||
line-break: $value;
|
||||
}
|
||||
|
||||
@mixin object-fit($value) {
|
||||
-o-object-fit: $value;
|
||||
object-fit: $value;
|
||||
font-family: "object-fit: #{$value};";
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
@mixin details-transition-open {
|
||||
@include transition(max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s);
|
||||
}
|
||||
|
||||
@mixin details-transition-close {
|
||||
@include transition(max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s);
|
||||
}
|
|
@ -1,4 +0,0 @@
|
|||
@import "_compatibility";
|
||||
@import "_link";
|
||||
@import "_blur";
|
||||
@import "_details";
|
|
@ -1,36 +0,0 @@
|
|||
@mixin link($light, $dark) {
|
||||
a, a::before, a::after {
|
||||
text-decoration: none;
|
||||
|
||||
@if $light {
|
||||
color: $global-link-color;
|
||||
} @else {
|
||||
color: $single-link-color;
|
||||
}
|
||||
|
||||
[theme=dark] & {
|
||||
@if $dark {
|
||||
color: $global-link-color-dark;
|
||||
} @else {
|
||||
color: $single-link-color-dark;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
a:active,
|
||||
a:hover {
|
||||
@if $light {
|
||||
color: $global-link-hover-color;
|
||||
} @else {
|
||||
color: $single-link-hover-color;
|
||||
}
|
||||
|
||||
[theme=dark] & {
|
||||
@if $dark {
|
||||
color: $global-link-hover-color-dark;
|
||||
} @else {
|
||||
color: $single-link-hover-color-dark;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,4 +0,0 @@
|
|||
// ==============================
|
||||
// Override Variables
|
||||
// 覆盖变量
|
||||
// ==============================
|
|
@ -1,6 +0,0 @@
|
|||
#content-404 {
|
||||
font-size: 1.8rem;
|
||||
line-height: 3rem;
|
||||
@include transform(translateY(30vh));
|
||||
text-align: center;
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
.archive {
|
||||
.single-title {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.group-title {
|
||||
margin-top: 1.5rem;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
@import "../_partial/_archive/terms";
|
||||
@import "../_partial/_archive/tags";
|
||||
}
|
|
@ -1,183 +0,0 @@
|
|||
.home {
|
||||
padding-bottom: 5rem;
|
||||
|
||||
.home-profile {
|
||||
@include transform(translateY( 16vh));
|
||||
padding: 0 0 .5rem;
|
||||
text-align: center;
|
||||
|
||||
.home-avatar {
|
||||
padding: .5rem;
|
||||
|
||||
img {
|
||||
display: inline-block;
|
||||
width: 8rem;
|
||||
height: auto;
|
||||
margin: 0 auto;
|
||||
@include border-radius(100%);
|
||||
@include box-shadow(0 0 0 .3618em rgba(0, 0, 0, .05));
|
||||
@include transition(all 0.4s ease);
|
||||
|
||||
&:hover {
|
||||
position: relative;
|
||||
@include transform(translateY(-.75rem));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.home-title {
|
||||
font-size: 1.25rem;
|
||||
font-weight: bold;
|
||||
margin: 0;
|
||||
padding: .5rem;
|
||||
}
|
||||
|
||||
.home-subtitle {
|
||||
font-size: 1rem;
|
||||
font-weight: normal;
|
||||
margin: 0;
|
||||
padding: .5rem;
|
||||
}
|
||||
|
||||
.links {
|
||||
padding: .5rem;
|
||||
font-size: 1.5rem;
|
||||
|
||||
a * {
|
||||
vertical-align: text-bottom;
|
||||
}
|
||||
|
||||
img {
|
||||
height: 1.5rem;
|
||||
padding: 0 .25rem;
|
||||
}
|
||||
}
|
||||
|
||||
.home-disclaimer {
|
||||
font-size: 1rem;
|
||||
line-height: 1.5rem;
|
||||
font-weight: normal;
|
||||
margin: 0;
|
||||
padding: .5rem;
|
||||
color: $global-font-secondary-color;
|
||||
|
||||
[theme=dark] & {
|
||||
color: $global-font-secondary-color-dark;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.home[data-home=posts] {
|
||||
.home-profile {
|
||||
@include transform(translateY(0));
|
||||
padding-top: 2rem;
|
||||
}
|
||||
|
||||
.home-avatar img {
|
||||
width: 6rem;
|
||||
}
|
||||
|
||||
.summary {
|
||||
padding-top: 1rem;
|
||||
padding-bottom: .8rem;
|
||||
color: $global-font-color;
|
||||
border-bottom: 1px dashed $global-border-color;
|
||||
|
||||
[theme=dark] & {
|
||||
color: $global-font-color-dark;
|
||||
border-bottom: 1px dashed $global-border-color-dark;
|
||||
}
|
||||
|
||||
.featured-image-preview {
|
||||
width: 100%;
|
||||
padding: 30% 0 0;
|
||||
position: relative;
|
||||
margin: 0.6rem auto;
|
||||
@include transition(transform 0.4s ease);
|
||||
|
||||
img {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
left: 0;
|
||||
top: 0;
|
||||
|
||||
&.lazyloaded {
|
||||
@include object-fit(cover);
|
||||
}
|
||||
}
|
||||
|
||||
&:hover {
|
||||
@include transform(scale(1.01));
|
||||
}
|
||||
}
|
||||
|
||||
.single-title {
|
||||
font-size: 1.25rem;
|
||||
line-height: 140%;
|
||||
margin: 0.4rem 0;
|
||||
}
|
||||
|
||||
.content {
|
||||
@include box(vertical);
|
||||
-webkit-line-clamp: 3;
|
||||
margin-top: .3rem;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
@include overflow-wrap(break-word);
|
||||
color: $global-font-secondary-color;
|
||||
|
||||
[theme=dark] & {
|
||||
color: $global-font-secondary-color-dark;
|
||||
}
|
||||
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6,
|
||||
p {
|
||||
font-size: 1rem;
|
||||
line-height: 1.5;
|
||||
display: inline;
|
||||
|
||||
&::after {
|
||||
content: "\A";
|
||||
white-space: pre;
|
||||
}
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.125rem;
|
||||
}
|
||||
|
||||
@include link(false, true);
|
||||
|
||||
b, strong {
|
||||
color: $global-font-secondary-color;
|
||||
|
||||
[theme=dark] & {
|
||||
color: $global-font-secondary-color-dark;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.post-footer {
|
||||
margin-top: .4rem;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
font-size: .875rem;
|
||||
|
||||
@include link(false, false);
|
||||
|
||||
.post-tags {
|
||||
padding: 0;
|
||||
|
||||
@include link(true, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
.page {
|
||||
position: relative;
|
||||
max-width: 1080px;
|
||||
width: 64%;
|
||||
margin: 0 auto;
|
||||
|
||||
[data-header-desktop] & {
|
||||
padding-top: var(--header-height);
|
||||
}
|
||||
|
||||
[data-header-desktop=normal] & {
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
@include blur;
|
||||
}
|
||||
|
||||
@import "_single";
|
||||
@import "_special";
|
||||
@import "_archive";
|
||||
@import "_home";
|
||||
@import "_404";
|
|
@ -1,348 +0,0 @@
|
|||
@import "../_partial/_single/toc";
|
||||
|
||||
.single {
|
||||
.single-title {
|
||||
margin: 2rem 0 .5rem;
|
||||
font-size: 1.6rem;
|
||||
font-weight: bold;
|
||||
line-height: 140%;
|
||||
}
|
||||
|
||||
.single-subtitle {
|
||||
margin: .5rem 0;
|
||||
font-size: 1.2rem;
|
||||
font-weight: normal;
|
||||
line-height: 100%;
|
||||
}
|
||||
|
||||
.post-meta {
|
||||
font-size: .875rem;
|
||||
color: $global-font-secondary-color;
|
||||
|
||||
span {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
[theme=dark] & {
|
||||
color: $global-font-secondary-color-dark;
|
||||
}
|
||||
|
||||
@include link(false, true);
|
||||
|
||||
.author {
|
||||
font-size: 1.05rem;
|
||||
}
|
||||
}
|
||||
|
||||
.featured-image {
|
||||
margin: .5rem 0 1rem 0;
|
||||
|
||||
img {
|
||||
display: block;
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
margin: 0 auto;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
img.lazyloaded {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.content {
|
||||
> h2 {
|
||||
font-size: 1.5rem;
|
||||
|
||||
& code {
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
> h3 {
|
||||
font-size: 1.375rem;
|
||||
|
||||
& code {
|
||||
font-size: 1.125rem;
|
||||
}
|
||||
}
|
||||
|
||||
> h4 {
|
||||
font-size: 1.25rem;
|
||||
|
||||
& code {
|
||||
font-size: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
> h5 {
|
||||
font-size: 1.125rem;
|
||||
}
|
||||
|
||||
> h6 {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
font-weight: bold;
|
||||
margin: 1.2rem 0;
|
||||
|
||||
[theme=dark] & {
|
||||
font-weight: bolder;
|
||||
}
|
||||
}
|
||||
|
||||
> h2,
|
||||
> h3,
|
||||
> h4,
|
||||
> h5,
|
||||
> h6 {
|
||||
> .header-mark::before {
|
||||
content: "|";
|
||||
margin-right: .3125rem;
|
||||
color: $single-link-color;
|
||||
|
||||
[theme=dark] & {
|
||||
color: $single-link-color-dark;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
> h2 > .header-mark::before {
|
||||
content: "#";
|
||||
}
|
||||
|
||||
p {
|
||||
margin: .5rem 0;
|
||||
}
|
||||
|
||||
b, strong {
|
||||
font-weight: bold;
|
||||
|
||||
[theme=dark] & {
|
||||
color: #ddd;
|
||||
}
|
||||
}
|
||||
|
||||
@include link(false, false);
|
||||
|
||||
a {
|
||||
@include overflow-wrap(break-word);
|
||||
|
||||
[theme=dark] & b, [theme=dark] & strong {
|
||||
color: $single-link-color-dark;
|
||||
}
|
||||
}
|
||||
|
||||
[theme=dark] a:hover b, [theme=dark] a:hover strong {
|
||||
color: $single-link-hover-color-dark;
|
||||
}
|
||||
|
||||
ul, ol {
|
||||
margin: .5rem 0;
|
||||
padding-left: 2.5rem;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style-type: disc;
|
||||
}
|
||||
|
||||
ruby {
|
||||
background: $code-background-color;
|
||||
|
||||
rt {
|
||||
color: $global-font-secondary-color;
|
||||
}
|
||||
|
||||
[theme=dark] & {
|
||||
background: $code-background-color-dark;
|
||||
|
||||
rt {
|
||||
color: $global-font-secondary-color-dark;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
margin: .625rem 0;
|
||||
border-spacing: 0;
|
||||
background: $table-background-color;
|
||||
border-collapse: collapse;
|
||||
overflow-x: auto;
|
||||
|
||||
&::-webkit-scrollbar {
|
||||
background-color: $table-background-color;
|
||||
|
||||
[theme=dark] & {
|
||||
background-color: $table-background-color-dark;
|
||||
}
|
||||
}
|
||||
|
||||
[theme=dark] & {
|
||||
background: $table-background-color-dark;
|
||||
}
|
||||
|
||||
thead {
|
||||
background: $table-thead-color;
|
||||
|
||||
[theme=dark] & {
|
||||
background-color: $table-thead-color-dark;
|
||||
}
|
||||
}
|
||||
|
||||
th, td {
|
||||
padding: .3rem 1rem;
|
||||
border: 1px solid darken($table-thead-color, 2%);
|
||||
|
||||
[theme=dark] & {
|
||||
border-color: darken($table-thead-color-dark, 2%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
min-height: 1em;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
figure {
|
||||
margin: .5rem;
|
||||
text-align: center;
|
||||
|
||||
.image-caption:not(:empty) {
|
||||
min-width: 20%;
|
||||
max-width: 80%;
|
||||
display: inline-block;
|
||||
padding: .5rem;
|
||||
margin: 0 auto;
|
||||
font-size: .875rem;
|
||||
color: #969696;
|
||||
}
|
||||
|
||||
img {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
margin: 0 auto;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
blockquote {
|
||||
display: block;
|
||||
border-left: .5rem solid $blockquote-color;
|
||||
background-color: rgba($blockquote-color, .2);
|
||||
padding: .25rem .75rem;
|
||||
margin: 1rem 0;
|
||||
|
||||
[theme=dark] & {
|
||||
border-left-color: $blockquote-color-dark;
|
||||
background-color: rgba($blockquote-color-dark, .2);
|
||||
}
|
||||
}
|
||||
|
||||
.footnotes {
|
||||
color: $global-font-secondary-color;
|
||||
|
||||
[theme=dark] & {
|
||||
color: $global-font-secondary-color-dark;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: .25rem 0;
|
||||
}
|
||||
}
|
||||
|
||||
@import "../_partial/_single/code";
|
||||
@import "../_partial/_single/gist";
|
||||
@import "../_partial/_single/instagram";
|
||||
@import "../_partial/_single/admonition";
|
||||
@import "../_partial/_single/echarts";
|
||||
@import "../_partial/_single/mapbox";
|
||||
@import "../_partial/_single/music";
|
||||
@import "../_partial/_single/bilibili";
|
||||
|
||||
hr {
|
||||
margin: 1rem 0;
|
||||
position: relative;
|
||||
border-top: 1px dashed $global-border-color;
|
||||
border-bottom: none;
|
||||
|
||||
[theme=dark] & {
|
||||
border-top: 1px dashed $global-border-color-dark;
|
||||
}
|
||||
}
|
||||
|
||||
kbd {
|
||||
display: inline-block;
|
||||
padding: .25rem;
|
||||
background-color: $global-background-color;
|
||||
border: 1px solid $global-border-color;
|
||||
border-bottom-color: $global-border-color;
|
||||
@include border-radius(3px);
|
||||
@include box-shadow(inset 0 -1px 0 $global-border-color);
|
||||
font-size: .8rem;
|
||||
font-family: var(--code-font-family);
|
||||
color: $code-color;
|
||||
|
||||
[theme=dark] & {
|
||||
background-color: $global-background-color-dark;
|
||||
border: 1px solid $global-border-color-dark;
|
||||
border-bottom-color: $global-border-color-dark;
|
||||
@include box-shadow(inset 0 -1px 0 $global-border-color-dark);
|
||||
color: $code-color-dark;
|
||||
}
|
||||
}
|
||||
|
||||
.version {
|
||||
height: 1.25em;
|
||||
vertical-align: text-bottom;
|
||||
}
|
||||
|
||||
.person-mention.h-card {
|
||||
display: inline-block;
|
||||
img {
|
||||
vertical-align: -12%;
|
||||
max-height: 1.1em;
|
||||
margin-right: 0;
|
||||
border-radius: 50%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@import "../_partial/_single/footer";
|
||||
@import "../_partial/_single/comment";
|
||||
}
|
||||
|
||||
.typeit {
|
||||
.highlight {
|
||||
padding: .375rem;
|
||||
font-size: .875rem;
|
||||
font-family: var(--code-font-family);
|
||||
font-weight: bold;
|
||||
word-break: break-all;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
--ti-cursor-font-family: var(--global-font-family);
|
||||
--ti-cursor-font-size: var(--global-font-size);
|
||||
--ti-cursor-font-weight: var(--global-font-weight);
|
||||
--ti-cursor-line-height: var(--global-line-height);
|
||||
--ti-cursor-color: $global-font-secondary-color;
|
||||
--ti-cursor-margin-left: 0;
|
||||
|
||||
[theme=dark] & {
|
||||
--ti-cursor-color: $global-font-secondary-color-dark;
|
||||
}
|
||||
}
|
||||
|
||||
.lg-toolbar .lg-icon::after {
|
||||
color: #999;
|
||||
}
|
|
@ -1,5 +0,0 @@
|
|||
.special {
|
||||
.single-title, .single-subtitle {
|
||||
text-align: right;
|
||||
}
|
||||
}
|
|
@ -1,27 +0,0 @@
|
|||
.tag-cloud-tags {
|
||||
margin: 10px 0;
|
||||
|
||||
@include link(true, true);
|
||||
|
||||
a {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
margin: 5px 10px;
|
||||
@include overflow-wrap(break-word);
|
||||
@include transition(all ease-out 0.3s);
|
||||
|
||||
&:active,
|
||||
&:focus,
|
||||
&:hover {
|
||||
@include transform(scale(1.2));
|
||||
}
|
||||
|
||||
sup {
|
||||
color: $global-font-secondary-color;
|
||||
|
||||
[theme=dark] & {
|
||||
color: $global-font-secondary-color-dark;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,82 +0,0 @@
|
|||
.categories-card {
|
||||
margin: 0 auto;
|
||||
margin-top: 3rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
line-height: 1.6rem;
|
||||
|
||||
.card-item {
|
||||
font-size: .875rem;
|
||||
text-align: left;
|
||||
width: 45%;
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
margin-top: 2rem;
|
||||
min-height: 10rem;
|
||||
padding: 0 2%;
|
||||
position: relative;
|
||||
|
||||
.card-item-wrapper {
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
|
||||
.card-item-title {
|
||||
font-size: 1.2rem;
|
||||
font-weight: bold;
|
||||
display: inline-block;
|
||||
margin-top: 1rem;
|
||||
margin-bottom: .75rem;
|
||||
}
|
||||
|
||||
span {
|
||||
float: right;
|
||||
padding-right: 1rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.archive-item {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
box-sizing: border-box;
|
||||
margin: .25rem 0 .25rem 1.5rem;
|
||||
}
|
||||
|
||||
.archive-item-link {
|
||||
min-width: 10%;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
|
||||
&:hover {
|
||||
color: $global-link-hover-color;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
[theme=dark] & {
|
||||
color: $global-link-color-dark;
|
||||
|
||||
&:hover {
|
||||
color: $global-link-hover-color-dark;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.archive-item-date {
|
||||
width: 5em;
|
||||
text-align: right;
|
||||
color: $global-font-secondary-color;
|
||||
|
||||
[theme=dark] & {
|
||||
color: $global-font-secondary-color-dark;
|
||||
}
|
||||
}
|
||||
|
||||
.more-post {
|
||||
text-align: right;
|
||||
}
|
|
@ -1,17 +0,0 @@
|
|||
.cc-window.cc-banner {
|
||||
.cc-btn {
|
||||
color: $global-font-color;
|
||||
|
||||
&:hover, &:focus {
|
||||
background-color: #ccc;
|
||||
}
|
||||
|
||||
[theme=dark] & {
|
||||
color: $global-font-color;
|
||||
|
||||
&:hover, &:focus {
|
||||
background-color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
.details {
|
||||
.details-summary {
|
||||
&:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
i.details-icon {
|
||||
color: $global-font-secondary-color;
|
||||
@include transition(transform 0.2s ease);
|
||||
|
||||
[theme=dark] & {
|
||||
color: $global-font-secondary-color-dark;
|
||||
}
|
||||
}
|
||||
|
||||
.details-content {
|
||||
max-height: 0;
|
||||
overflow-y: hidden;
|
||||
@include details-transition-open;
|
||||
}
|
||||
|
||||
&.open {
|
||||
i.details-icon {
|
||||
@include transform(rotate(90deg));
|
||||
}
|
||||
|
||||
.details-content {
|
||||
max-height: 10000px;
|
||||
@include details-transition-close;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,54 +0,0 @@
|
|||
#fixed-buttons {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#fixed-buttons-hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.fixed-button {
|
||||
display: block;
|
||||
z-index: 100;
|
||||
position: fixed;
|
||||
right: 1.5rem;
|
||||
bottom: 1.5rem;
|
||||
font-size: 1rem;
|
||||
line-height: 1.3rem;
|
||||
padding: .6rem .6rem;
|
||||
color: $global-font-secondary-color;
|
||||
background: $header-background-color;
|
||||
@include border-radius(2rem);
|
||||
@include transition(color 0.4s ease);
|
||||
|
||||
@include blur;
|
||||
|
||||
&:hover, &:active {
|
||||
color: $global-font-color;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
&:active, &:focus, &:hover {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
[theme=dark] & {
|
||||
color: $global-font-secondary-color-dark;
|
||||
background: $header-background-color-dark;
|
||||
|
||||
&:hover, &:active {
|
||||
color: $global-font-color-dark;
|
||||
}
|
||||
}
|
||||
|
||||
&:nth-last-of-type(1) {
|
||||
bottom: 1.5rem;
|
||||
}
|
||||
|
||||
&:nth-last-of-type(2) {
|
||||
bottom: 4.5rem;
|
||||
}
|
||||
|
||||
&:nth-last-of-type(3) {
|
||||
bottom: 7.5rem;
|
||||
}
|
||||
}
|
|
@ -1,17 +0,0 @@
|
|||
svg.icon {
|
||||
display: inline-block;
|
||||
width: 1.25em;
|
||||
height: 1em;
|
||||
text-align: center;
|
||||
|
||||
path {
|
||||
fill: currentColor;
|
||||
}
|
||||
}
|
||||
|
||||
img.emoji {
|
||||
height: 1em;
|
||||
width: 1em;
|
||||
margin: 0 .05em 0 .1em;
|
||||
vertical-align: -.1em;
|
||||
}
|
|
@ -1,9 +0,0 @@
|
|||
img {
|
||||
&.lazyload, &.lazyloading {
|
||||
@include object-fit(scale-down);
|
||||
}
|
||||
|
||||
&.lazyloaded {
|
||||
@include object-fit(contain);
|
||||
}
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
#mask {
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: -1;
|
||||
background-color: rgba(0, 0, 0, 0);
|
||||
|
||||
.blur & {
|
||||
z-index: 100;
|
||||
background-color: rgba(0, 0, 0, .25);
|
||||
}
|
||||
}
|
|
@ -1,72 +0,0 @@
|
|||
.admonition {
|
||||
position: relative;
|
||||
margin: 1rem 0;
|
||||
padding: 0 .75rem;
|
||||
border-left: .25rem solid;
|
||||
overflow: auto;
|
||||
|
||||
.admonition-title {
|
||||
font-weight: bold;
|
||||
margin: 0 -0.75rem;
|
||||
padding: .25rem 1.8rem;
|
||||
}
|
||||
|
||||
.admonition-content {
|
||||
padding: .5rem 0;
|
||||
}
|
||||
|
||||
i.icon {
|
||||
font-size: 0.85rem;
|
||||
position: absolute;
|
||||
top: .6rem;
|
||||
left: .4rem;
|
||||
}
|
||||
|
||||
i.details-icon {
|
||||
position: absolute;
|
||||
top: .6rem;
|
||||
right: .3rem;
|
||||
}
|
||||
|
||||
@each $type, $color, $background-color in $admonition-color-list {
|
||||
@if $type == "note" {
|
||||
background-color: $background-color;
|
||||
border-left-color: $color;
|
||||
|
||||
.admonition-title {
|
||||
border-bottom-color: $background-color;
|
||||
background-color: opacify($background-color, 0.15);
|
||||
}
|
||||
|
||||
&.open .admonition-title {
|
||||
background-color: $background-color;
|
||||
}
|
||||
|
||||
i.icon {
|
||||
color: $color;
|
||||
}
|
||||
} @else {
|
||||
&.#{$type} {
|
||||
background-color: $background-color;
|
||||
border-left-color: $color;
|
||||
|
||||
.admonition-title {
|
||||
border-bottom-color: $background-color;
|
||||
background-color: opacify($background-color, 0.15);
|
||||
}
|
||||
|
||||
&.open .admonition-title {
|
||||
background-color: $background-color;
|
||||
}
|
||||
|
||||
i.icon {
|
||||
color: $color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: .75rem;
|
||||
}
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
.bilibili {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 0;
|
||||
padding-bottom: 75%;
|
||||
margin: 3% auto;
|
||||
text-align: center;
|
||||
|
||||
iframe {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
}
|
|
@ -1,192 +0,0 @@
|
|||
code {
|
||||
display: inline-block;
|
||||
max-width: 100%;
|
||||
padding: 0 .4rem;
|
||||
@include overflow-wrap(break-word);
|
||||
@include line-break(anywhere);
|
||||
font-size: var(--code-font-size);
|
||||
font-family: var(--code-font-family);
|
||||
color: $code-color;
|
||||
|
||||
[theme=dark] & {
|
||||
color: $code-color-dark;
|
||||
}
|
||||
}
|
||||
|
||||
pre {
|
||||
margin: 0;
|
||||
padding: 8px;
|
||||
@include tab-size(4);
|
||||
|
||||
code {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
img {
|
||||
min-height: 1em;
|
||||
max-height: 1.2em;
|
||||
vertical-align: text-bottom;
|
||||
}
|
||||
}
|
||||
|
||||
code, pre {
|
||||
background: $code-background-color;
|
||||
|
||||
[theme=dark] & {
|
||||
background: $code-background-color-dark;
|
||||
}
|
||||
}
|
||||
|
||||
.code-block {
|
||||
line-height: 1.4em;
|
||||
margin: .5rem 0;
|
||||
|
||||
.code-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
font-family: var(--global-font-family);
|
||||
font-weight: bold;
|
||||
color: $code-info-color;
|
||||
background: darken($code-background-color, 8%);
|
||||
|
||||
[theme=dark] & {
|
||||
color: $code-info-color-dark;
|
||||
background: darken($code-background-color-dark, 6%);
|
||||
}
|
||||
|
||||
&:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.code-title {
|
||||
width: 100%;
|
||||
padding: .4rem;
|
||||
}
|
||||
|
||||
.code-title::after {
|
||||
padding-left: .2rem;
|
||||
content: "Code";
|
||||
}
|
||||
|
||||
@each $type, $text in $code-type-list {
|
||||
&.#{$type} .code-title::after {
|
||||
content: $text;
|
||||
}
|
||||
}
|
||||
|
||||
.arrow {
|
||||
padding: 0 .2rem;
|
||||
@include transition(transform 0.2s ease);
|
||||
}
|
||||
|
||||
.ellipses {
|
||||
padding: .4rem;
|
||||
}
|
||||
|
||||
.copy {
|
||||
display: none;
|
||||
padding: .4rem;
|
||||
|
||||
&:hover {
|
||||
cursor: pointer;
|
||||
color: $global-link-hover-color;
|
||||
|
||||
[theme=dark] & {
|
||||
color: $global-link-hover-color-dark;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.highlight {
|
||||
position: relative;
|
||||
max-height: 0;
|
||||
overflow-y: hidden;
|
||||
@include details-transition-open;
|
||||
background: $code-background-color;
|
||||
|
||||
[theme=dark] & {
|
||||
background: $code-background-color-dark;
|
||||
}
|
||||
|
||||
.hl {
|
||||
background-color: darken($code-background-color, 10%);
|
||||
|
||||
[theme=dark] & {
|
||||
background-color: darken($code-background-color-dark, 5%);
|
||||
}
|
||||
}
|
||||
|
||||
.c, /* Comment */
|
||||
.ch /* CommentHashbang */,
|
||||
.cm /* CommentMultiline */,
|
||||
.c1 /* CommentSingle */,
|
||||
.cs /* CommentSpecial */,
|
||||
.cp /* CommentPreproc */,
|
||||
.cpf /* CommentPreprocFile */ {
|
||||
font-style: italic
|
||||
}
|
||||
.gl /* GenericUnderline */ {
|
||||
text-decoration: underline
|
||||
}
|
||||
|
||||
@each $class, $color in $code-highlight-color-map {
|
||||
.#{$class} { color: $color; }
|
||||
}
|
||||
|
||||
[theme=dark] & {
|
||||
@each $class, $color in $code-highlight-color-map-dark {
|
||||
.#{$class} { color: $color; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.open {
|
||||
.code-header {
|
||||
background: darken($code-background-color, 3%);
|
||||
|
||||
[theme=dark] & {
|
||||
background: darken($code-background-color-dark, 3%);
|
||||
}
|
||||
|
||||
.arrow {
|
||||
@include transform(rotate(90deg));
|
||||
}
|
||||
|
||||
.ellipses {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.copy {
|
||||
display: inline;
|
||||
}
|
||||
}
|
||||
|
||||
.highlight {
|
||||
max-height: 10000px;
|
||||
@include details-transition-close;
|
||||
}
|
||||
}
|
||||
|
||||
&.code-line-numbers {
|
||||
span.line::before {
|
||||
display: inline-block;
|
||||
counter-increment: code-block;
|
||||
content: counter(code-block);
|
||||
min-width: 4ch;
|
||||
text-align: right;
|
||||
text-wrap: nowrap;
|
||||
box-sizing: border-box;
|
||||
border-width: 0;
|
||||
margin-right: 1rem;
|
||||
color: $code-info-color;
|
||||
|
||||
[theme=dark] & {
|
||||
color: $code-info-color-dark;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
#comments {
|
||||
padding: 8rem 0 2rem;
|
||||
|
||||
.vemoji {
|
||||
max-width: 1.5em;
|
||||
max-height: 1.5em;
|
||||
}
|
||||
}
|
|
@ -1,4 +0,0 @@
|
|||
.echarts {
|
||||
margin: .5rem 0;
|
||||
text-align: center;
|
||||
}
|
|
@ -1,98 +0,0 @@
|
|||
.post-footer {
|
||||
margin-top: 3rem;
|
||||
|
||||
.post-info {
|
||||
border-bottom: 1px solid $global-border-color;
|
||||
padding: 1rem 0 0.3rem;
|
||||
|
||||
[theme=dark] & {
|
||||
border-bottom: 1px solid $global-border-color-dark;
|
||||
}
|
||||
|
||||
.post-info-line {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
.post-info-mod {
|
||||
font-size: 0.8em;
|
||||
color: $global-font-secondary-color;
|
||||
|
||||
[theme=dark] & {
|
||||
color: $global-font-secondary-color-dark;
|
||||
}
|
||||
|
||||
@include link(false, false);
|
||||
}
|
||||
|
||||
.post-info-license {
|
||||
font-size: 0.8em;
|
||||
color: $global-font-secondary-color;
|
||||
|
||||
[theme=dark] & {
|
||||
color: $global-font-secondary-color-dark;
|
||||
}
|
||||
|
||||
@include link(false, false);
|
||||
}
|
||||
|
||||
.post-info-md {
|
||||
font-size: 0.8rem;
|
||||
width: 8rem;
|
||||
|
||||
@include link(false, false);
|
||||
}
|
||||
|
||||
.post-info-share {
|
||||
a * {
|
||||
vertical-align: text-bottom;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.post-info-more {
|
||||
padding: 0.3rem 0 1rem;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
|
||||
.post-tags {
|
||||
max-width: 65%;
|
||||
|
||||
* {
|
||||
display: inline;
|
||||
}
|
||||
}
|
||||
|
||||
.post-nav {
|
||||
&::before,
|
||||
&::after {
|
||||
content: " ";
|
||||
display: table;
|
||||
}
|
||||
|
||||
& a.prev,
|
||||
& a.next {
|
||||
font-size: 1rem;
|
||||
font-weight: 600;
|
||||
@include transition(all 0.3s ease-out);
|
||||
}
|
||||
|
||||
& a.prev {
|
||||
float: left;
|
||||
}
|
||||
|
||||
& a.prev:hover {
|
||||
@include transform(translateX(-4px));
|
||||
}
|
||||
|
||||
& a.next {
|
||||
float: right;
|
||||
}
|
||||
|
||||
& a.next:hover {
|
||||
@include transform(translateX(4px));
|
||||
}
|
||||
}
|
||||
}
|