first commit

This commit is contained in:
Missdrop
2025-07-16 16:30:56 +00:00
commit 7ee33927cb
11326 changed files with 1230901 additions and 0 deletions

7
node_modules/hexo-theme-landscape/LICENSE generated vendored Normal file
View File

@@ -0,0 +1,7 @@
Copyright (c) 2013 Tommy Chen
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.

98
node_modules/hexo-theme-landscape/README.md generated vendored Normal file
View File

@@ -0,0 +1,98 @@
# Landscape
[![NPM version](https://badge.fury.io/js/hexo-theme-landscape.svg)](https://www.npmjs.com/package/hexo-theme-landscape)
A brand new default theme for [Hexo].
- [Preview](https://hexojs.github.io/hexo-theme-landscape/)
## Installation
### Install
If you're using Hexo 5.0 or later, the simplest way to install is through npm:
```
npm i hexo-theme-landscape
```
Install via git:
```bash
git clone --depth 1 https://github.com/hexojs/hexo-theme-landscape themes/landscape
```
If you would like to enable the RSS, the [hexo-generator-feed](https://github.com/hexojs/hexo-generator-feed) plugin is also required.
### Enable
Modify `theme` setting in `_config.yml` to `landscape`.
```diff
_config.yml
- theme: some-theme
+ theme: landscape
```
### Update
Install the latest version through npm:
```sh
npm install hexo-theme-landscape@latest
```
Or update to the latest master branch via git:
```bash
cd themes/landscape
git pull
```
## Configuration
The configuration file for the theme is `_config.yml` in the repository. As the default theme for Hexo, hexo-theme-landscape is installed via npm during the `hexo init` site creation process, so it is generally located in the `node_modules/hexo-theme-landscape` directory. If you install it via `git clone` or other methods, it might be located in the `themes/landscape` directory.
It is important to note that to prevent your modifications to the theme configuration file from being lost or overwritten during theme upgrades, **we do not recommend directly modifying this default configuration file**. You can copy the theme's `_config.yml` to your blog's root directory as `_config.landscape.yml` and configure it according to the documentation of configuration options therein (see [Alternate Theme Config](https://hexo.io/docs/configuration#Alternate-Theme-Config)).
The following will also detail the usage of some options.
## Features
### FancyBox
Landscape uses [Fancybox] to showcase your photos. You can use Markdown syntax or fancybox tag plugin to add your photos.
```
![img caption](img url)
{% fancybox img_url [img_thumbnail] [img_caption] %}
```
### Sidebar
You can put your sidebar in left side, right side or bottom of your site by editing `sidebar` setting.
Landscape provides 5 built-in widgets:
- category
- tag
- tagcloud
- archives
- recent_posts
All of them are enabled by default. You can edit them in `widget` setting.
### Header links
You can add links to the header area with icons.
```yml
links:
github: https://github.com/your_github_account
twitter: https://twitter.com/your_twitter_account
telegram: https://t.me/your_telegram_account
```
[Hexo]: https://hexo.io/
[Fancybox]: https://github.com/fancyapps/fancyBox

90
node_modules/hexo-theme-landscape/_config.yml generated vendored Normal file
View File

@@ -0,0 +1,90 @@
# ===============
# Header
# ===============
# Navigation menu
menu:
Home: /
Archives: /archives
# RSS link
rss: /atom.xml
# Path of title banner image of page top
banner: "images/banner.jpg"
# Subtitle of page top
subtitle:
# Header links with icon, specified links will appear at the top right corner of the page
# Each name must correspond to the icon name of Fork Awesome
# https://forkaweso.me/Fork-Awesome/icons/
links:
# github: https://github.com/your_github_account
# twitter: https://twitter.com/your_twitter_account
# telegram: https://t.me/your_telegram_account
# ===============
# Content
# ===============
# "Read More" link at the bottom of excerpted articles. `false` to hide the link.
excerpt_link: Read More
# Enable fancybox
fancybox: true
# ===============
# Footer
# ===============
# Display copyright notice in footer. Please see https://creativecommons.org/choose/ and https://choosealicense.com/
# You can use html like below.
# copyright: |-
# <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/88x31.png" /></a></br>
# All website licensed under <a href="https://creativecommons.org/licenses/by/4.0/" target="_blank">CC BY 4.0</a></br>
copyright:
# ===============
# Sidebar
# ===============
# Sidebar style. You can choose `left`, `right`, `bottom` or `false`.
sidebar: right
# Widgets displaying in sidebar
widgets:
- category
- tag
- tagcloud
- archive
- recent_posts
# ===============
# Widget behavior
# ===============
archive_type: 'monthly'
show_count: false
# How many posts display in Home page.
recent_posts_limits: 5
# ===============
# Miscellaneous
# ===============
# Google Analytics ID
google_analytics:
gauges_analytics:
# Favicon path
favicon: /favicon.png
# Twitter ID
twitter:
fb_admins:
fb_app_id:
# ===============
# Comment system
# ===============
# Disqus comment system.
disqus_shortname:
# valine comment system. https://valine.js.org
valine:
enable: false # if you want use valine,please set this value is true
appId: # leancloud application app id
appKey: # leancloud application app key
notify: false # valine mail notify (true/false) https://github.com/xCss/Valine/wiki
verify: false # valine verify code (true/false)
pageSize: 10 # comment list page size
avatar: mm # gravatar style https://valine.js.org/#/avatar
lang: zh-cn # i18n: zh-cn/en
placeholder: Just go go # valine comment input placeholder(like: Please leave your footprints )
guest_info: nick,mail,link #valine comment header info

View File

@@ -0,0 +1 @@
de.yml

19
node_modules/hexo-theme-landscape/languages/de.yml generated vendored Normal file
View File

@@ -0,0 +1,19 @@
categories: Kategorien
search: Suche
tags: Tags
tagcloud: Tag Cloud
tweets: Tweets
prev: zurück
next: weiter
comment: Kommentare
archive_a: Archiv
archive_b: "Archive: %s"
page: Seite %d
recent_posts: letzter Beitrag
newer: Neuer
older: Älter
share: Teilen
powered_by: Powered by
rss_feed: RSS Feed
category: Kategorie
tag: Tag

View File

@@ -0,0 +1 @@
en.yml

View File

@@ -0,0 +1 @@
en.yml

View File

@@ -0,0 +1 @@
en.yml

19
node_modules/hexo-theme-landscape/languages/en.yml generated vendored Normal file
View File

@@ -0,0 +1,19 @@
categories: Categories
search: Search
tags: Tags
tagcloud: Tag Cloud
tweets: Tweets
prev: Prev
next: Next
comment: Comments
archive_a: Archives
archive_b: "Archives: %s"
page: Page %d
recent_posts: Recent Posts
newer: Newer
older: Older
share: Share
powered_by: Powered by
rss_feed: RSS Feed
category: Category
tag: Tag

View File

@@ -0,0 +1 @@
es.yml

19
node_modules/hexo-theme-landscape/languages/es.yml generated vendored Normal file
View File

@@ -0,0 +1,19 @@
categories: Categorías
search: Buscar
tags: Tags
tagcloud: Nube de Tags
tweets: Tweets
prev: Previo
next: Siguiente
comment: Comentarios
archive_a: Archivos
archive_b: "Archivos: %s"
page: Página %d
recent_posts: Posts recientes
newer: Nuevo
older: Viejo
share: Compartir
powered_by: Construido por
rss_feed: RSS
category: Categoría
tag: Tag

View File

@@ -0,0 +1 @@
fr.yml

19
node_modules/hexo-theme-landscape/languages/fr.yml generated vendored Normal file
View File

@@ -0,0 +1,19 @@
categories: Catégories
search: Rechercher
tags: Mot-clés
tagcloud: Nuage de mot-clés
tweets: Tweets
prev: Précédent
next: Suivant
comment: Commentaires
archive_a: Archives
archive_b: "Archives: %s"
page: Page %d
recent_posts: Articles récents
newer: Récent
older: Ancien
share: Partager
powered_by: Propulsé par
rss_feed: Flux RSS
category: Catégorie
tag: Mot-clé

View File

@@ -0,0 +1 @@
hu.yml

19
node_modules/hexo-theme-landscape/languages/hu.yml generated vendored Normal file
View File

@@ -0,0 +1,19 @@
categories: Kategóriák
search: Keresés
tags: Címkék
tagcloud: Címkefelhő
tweets: Tweetek
prev: Előző
next: Következő
comment: Kommentek
archive_a: Archív
archive_b: "Archív: %s"
page: Oldal %d
recent_posts: Legfrissebb bejegyzések
newer: Újabb
older: Régebbi
share: Megosztás
powered_by: Powered by
rss_feed: RSS-hírfolyam
category: Kategória
tag: Címke

View File

@@ -0,0 +1 @@
it.yml

19
node_modules/hexo-theme-landscape/languages/it.yml generated vendored Normal file
View File

@@ -0,0 +1,19 @@
categories: Categorie
search: Cerca
tags: Tag
tagcloud: Tag Cloud
tweets: Tweet
prev: Prec
next: Succ
comment: Commenti
archive_a: Archivio
archive_b: "Archivio: %s"
page: Pagina %d
recent_posts: Post Recenti
newer: Nuovi
older: Vecchi
share: Condividi
powered_by: Powered by
rss_feed: Feed RSS
category: Categoria
tag: Tag

View File

@@ -0,0 +1 @@
ja.yml

19
node_modules/hexo-theme-landscape/languages/ja.yml generated vendored Normal file
View File

@@ -0,0 +1,19 @@
categories: カテゴリ
search: 検索
tags: タグ
tagcloud: タグクラウド
tweets: ツイート
prev: 戻る
next: 次へ
comment: コメント
archive_a: アーカイブ
archive_b: "アーカイブ: %s"
page: ページ %d
recent_posts: 最近の投稿
newer: 次の記事
older: 前の記事
share: 共有
powered_by: Powered by
rss_feed: RSSフィード
category: カテゴリ
tag: タグ

View File

@@ -0,0 +1 @@
ko.yml

19
node_modules/hexo-theme-landscape/languages/ko.yml generated vendored Normal file
View File

@@ -0,0 +1,19 @@
categories: 카테고리
search: 검색
tags: 태그
tagcloud: 태그 클라우드
tweets: 트윗
prev: 이전
next: 다음
comment: 댓글
archive_a: 아카이브
archive_b: "아카이브: %s"
page: 페이지 %d
recent_posts: 최근 포스트
newer: 최신
older: 이전
share: 공유
powered_by: Powered by
rss_feed: RSS Feed
category: 카테고리
tag: 태그

View File

@@ -0,0 +1 @@
mn.yml

19
node_modules/hexo-theme-landscape/languages/mn.yml generated vendored Normal file
View File

@@ -0,0 +1,19 @@
categories: Ангилалууд
search: Хайлт
tags: Тагууд
tagcloud: Tag Cloud
tweets: Tweets
prev: Өмнөх
next: Дараах
comment: Сэтгэгдэл
archive_a: Архив
archive_b: "Архив: %s"
page: Хуудас %d
recent_posts: Сүүлд нэмэгдсэн
newer: Шинэ
older: Хуучин
share: Хуваалцах
powered_by: Powered by
rss_feed: RSS Feed
category: Ангилал
tag: Таг

View File

@@ -0,0 +1 @@
nl.yml

20
node_modules/hexo-theme-landscape/languages/nl.yml generated vendored Normal file
View File

@@ -0,0 +1,20 @@
categories: Categorieën
search: Zoeken
tags: Labels
tagcloud: Tag Cloud
tweets: Tweets
prev: Vorige
next: Volgende
comment: Commentaren
archive_a: Archieven
archive_b: "Archieven: %s"
page: Pagina %d
recent_posts: Recente berichten
newer: Nieuwer
older: Ouder
share: Delen
powered_by: Powered by
rss_feed: RSS Feed
category: Categorie
tag: Label

19
node_modules/hexo-theme-landscape/languages/no.yml generated vendored Normal file
View File

@@ -0,0 +1,19 @@
categories: Kategorier
search: Søk
tags: Tags
tagcloud: Tag Cloud
tweets: Tweets
prev: Forrige
next: Neste
comment: Kommentarer
archive_a: Arkiv
archive_b: "Arkiv: %s"
page: Side %d
recent_posts: Siste innlegg
newer: Newer
older: Older
share: Share
powered_by: Powered by
rss_feed: RSS Feed
category: Category
tag: Tag

View File

@@ -0,0 +1 @@
pt.yml

19
node_modules/hexo-theme-landscape/languages/pt.yml generated vendored Normal file
View File

@@ -0,0 +1,19 @@
categories: Categorias
search: Buscar
tags: Tags
tagcloud: Nuvem de Tags
tweets: Tweets
prev: Anterior
next: Próximo
comment: Comentários
archive_a: Arquivos
archive_b: "Arquivos: %s"
page: Página %d
recent_posts: Postagens Recentes
newer: Mais Recente
older: Mais Antigo
share: Compartilhar
powered_by: Desenvolvido por
rss_feed: Feed RSS
category: Categoria
tag: Tag

View File

@@ -0,0 +1 @@
ru.yml

19
node_modules/hexo-theme-landscape/languages/ru.yml generated vendored Normal file
View File

@@ -0,0 +1,19 @@
categories: Категории
search: Поиск
tags: Метки
tagcloud: Облако меток
tweets: Твиты
prev: Назад
next: Вперед
comment: Комментарии
archive_a: Архив
archive_b: "Архив: %s"
page: Страница %d
recent_posts: Недавние записи
newer: Следующий
older: Предыдущий
share: Поделиться
powered_by: Создано с помощью
rss_feed: RSS-каналы
category: Категория
tag: Метка

View File

@@ -0,0 +1 @@
th.yml

19
node_modules/hexo-theme-landscape/languages/th.yml generated vendored Normal file
View File

@@ -0,0 +1,19 @@
categories: หมวดหมู่
search: ค้นหา
tags: แท็ก
tagcloud: แท็กคลาวด์
tweets: ทวีต
prev: ก่อนหน้า
next: ถัดไป
comment: ความคิดเห็น
archive_a: ที่เก็บเอกสาร
archive_b: "ที่เก็บเอกสาร: %s"
page: หน้า %d
recent_posts: โพสต์ล่าสุด
newer: ใหม่กว่า
older: เก่ากว่า
share: แชร์
powered_by: ขับเคลื่อนโดย
rss_feed: RSS Feed
category: หมวดหมู่
tag: แท็ก

19
node_modules/hexo-theme-landscape/languages/tr.yml generated vendored Normal file
View File

@@ -0,0 +1,19 @@
categories: Kategoriler
search: Ara
tags: Etiketler
tagcloud: Etiket bulutu
tweets: twitler
prev: Geri
next: İleri
comment: Yorumlar
archive_a: Arşiv
archive_b: "Arşiv: %s"
page: Sayfa %d
recent_posts: Недавние записи
newer: daha yeni
older: daha eski
share: Paylaş
powered_by: Destekleriyle
rss_feed: RSS-kanalı
category: Kategori
tag: Etiket

19
node_modules/hexo-theme-landscape/languages/zh-CN.yml generated vendored Normal file
View File

@@ -0,0 +1,19 @@
categories: 分类
search: 搜索
tags: 标签
tagcloud: 标签云
tweets: 推文
prev: 上一页
next: 下一页
comment: 留言
archive_a: 归档
archive_b: 归档:%s
page: 第 %d 页
recent_posts: 最新文章
newer: 前一篇
older: 后一篇
share: 分享
powered_by: Powered by
rss_feed: RSS 订阅
category: 目录
tag: 标签

19
node_modules/hexo-theme-landscape/languages/zh-TW.yml generated vendored Normal file
View File

@@ -0,0 +1,19 @@
categories: 分類
search: 搜尋
tags: 標籤
tagcloud: 標籤雲
tweets: 推文
prev: 上一頁
next: 下一頁
comment: 留言
archive_a: 彙整
archive_b: 彙整:%s
page: 第 %d 頁
recent_posts: 最新文章
newer: Newer
older: Older
share: Share
powered_by: Powered by
rss_feed: RSS Feed
category: Category
tag: Tag

View File

@@ -0,0 +1,46 @@
<% if (theme.disqus_shortname){ %>
<script>
var disqus_shortname = '<%= theme.disqus_shortname %>';
<% if (page.permalink){ %>
var disqus_url = '<%= page.permalink %>';
<% } %>
(function(){
var dsq = document.createElement('script');
dsq.async = true;
dsq.src = 'https://' + disqus_shortname + '.disqus.com/<% if (page.comments) { %>embed.js<% } else { %>count.js<% } %>';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<% } %>
<%- js('js/jquery-3.6.4.min.js') %>
<% if (theme.fancybox){ %>
<%- js('fancybox/jquery.fancybox.min.js') %>
<% } %>
<%- js('js/script') %>
<%- partial('gauges-analytics') %>
<% if(theme.valine.enable && theme.valine.appId && theme.valine.appKey){ %>
<%- js('https://cdn.jsdelivr.net/npm/valine@1.3.10/dist/Valine.min.js') %>
<script>
var GUEST_INFO = ['nick','mail','link'];
var guest_info = '<%= theme.valine.guest_info %>'.split(',').filter(function(item){
return GUEST_INFO.indexOf(item) > -1
});
var notify = '<%= theme.valine.notify %>' == true;
var verify = '<%= theme.valine.verify %>' == true;
new Valine({
el: '.vcomment',
notify: notify,
verify: verify,
appId: "<%= theme.valine.appId %>",
appKey: "<%= theme.valine.appKey %>",
placeholder: "<%= theme.valine.placeholder %>",
pageSize:'<%= theme.valine.pageSize %>',
avatar:'<%= theme.valine.avatar %>',
lang:'<%= theme.valine.lang %>'
});
</script>
<% } %>

View File

@@ -0,0 +1,8 @@
<article class="archive-article archive-type-<%= post.layout %>">
<div class="archive-article-inner">
<header class="archive-article-header">
<%- partial('post/date', {class_name: 'archive-article-date', date_format: 'MMM D'}) %>
<%- partial('post/title', {class_name: 'archive-article-title'}) %>
</header>
</div>
</article>

View File

@@ -0,0 +1,35 @@
<% if (expand){ %>
<% page.posts.each(function(post){ %>
<%- partial('article', {post: post, index: true}) %>
<% }) %>
<% } else { %>
<% var last; %>
<% page.posts.each(function(post, i){ %>
<% var year = post.date.year(); %>
<% if (last != year){ %>
<% if (last != null){ %>
</div></section>
<% } %>
<% last = year; %>
<section class="archives-wrap">
<div class="archive-year-wrap">
<a href="<%- url_for(config.archive_dir + '/' + year) %>" class="archive-year"><%= year %></a>
</div>
<div class="archives">
<% } %>
<%- partial('archive-post', {post: post, even: i % 2 == 0}) %>
<% }) %>
<% if (page.posts.length){ %>
</div></section>
<% } %>
<% } %>
<% if (page.total > 1){ %>
<nav id="page-nav">
<% var prev_text = "&laquo; " + __('prev');var next_text = __('next') + " &raquo;"%>
<%- paginator({
prev_text: prev_text,
next_text: next_text,
escape: false
}) %>
</nav>
<% } %>

View File

@@ -0,0 +1,55 @@
<article id="<%= post.layout %>-<%= post.slug %>" class="h-entry article article-type-<%= post.layout %>" itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
<div class="article-meta">
<%- partial('post/date', {class_name: 'article-date', date_format: null}) %>
<%- partial('post/category') %>
</div>
<div class="article-inner">
<%- partial('post/gallery') %>
<% if (post.link || post.title){ %>
<header class="article-header">
<%- partial('post/title', {class_name: 'p-name article-title'}) %>
</header>
<% } %>
<div class="e-content article-entry" itemprop="articleBody">
<% if (post.excerpt && index){ %>
<%- post.excerpt %>
<% if (theme.excerpt_link){ %>
<p class="article-more-link">
<a href="<%- url_for(post.path) %>#more"><%= theme.excerpt_link %></a>
</p>
<% } %>
<% } else { %>
<%- post.content %>
<% } %>
</div>
<footer class="article-footer">
<a data-url="<%- post.permalink %>" data-id="<%= post._id %>" data-title="<%= post.title %>" class="article-share-link"><span class="fa fa-share"><%= __('share') %></span></a>
<% if (post.comments && theme.disqus_shortname){ %>
<a href="<%- post.permalink %>#disqus_thread" class="article-comment-link"><span class="fa fa-comment"><%= __('comment') %></span></a>
<% } %>
<% if (post.comments && theme.valine.enable && theme.valine.appId && theme.valine.appKey ){ %>
<a href="<%- url_for(post.path) %>#comments" class="article-comment-link">
<span class="post-comments-count valine-comment-count fa fa-comment" data-xid="<%- url_for(post.path) %>" itemprop="commentCount"></span>
<%= __('comment') %>
</a>
<% } %>
<%- partial('post/tag') %>
</footer>
</div>
<% if (!index){ %>
<%- partial('post/nav') %>
<% } %>
</article>
<% if (!index && post.comments && theme.disqus_shortname){ %>
<section id="comments">
<div id="disqus_thread">
<noscript>Please enable JavaScript to view the <a href="//disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
</div>
</section>
<% } %>
<% if (!index && post.comments && theme.valine.enable && theme.valine.appId && theme.valine.appKey){ %>
<section id="comments" class="vcomment">
</section>
<% } %>

View File

@@ -0,0 +1,14 @@
<footer id="footer">
<% if (theme.sidebar === 'bottom'){ %>
<%- partial('_partial/sidebar') %>
<% } %>
<div class="outer">
<div id="footer-info" class="inner">
<% if (theme.copyright){ %>
<%- render(theme.copyright, 'pug'); %>
<% } %>
&copy; <%= date(new Date(), 'YYYY') %> <%= config.author || config.title %><br>
<%= __('powered_by') %> <a href="https://hexo.io/" target="_blank">Hexo</a>
</div>
</div>
</footer>

View File

@@ -0,0 +1,17 @@
<% if (theme.gauges_analytics){ %>
<!-- Gaug.es Analytics -->
<script>
var _gauges = _gauges || [];
(function() {
var t = document.createElement('script');
t.async = true;
t.id = 'gauges-tracker';
t.setAttribute('data-site-id', '<%= theme.gauges_analytics %>');
t.setAttribute('data-track-path', 'https://track.gaug.es/track.gif');
t.src = 'https://d36ee2fcip1434.cloudfront.net/track.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(t, s);
})();
</script>
<!-- End Gaug.es Analytics -->
<% } %>

View File

@@ -0,0 +1,12 @@
<% if (theme.google_analytics){ %>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=<%= theme.google_analytics %>"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '<%= theme.google_analytics %>');
</script>
<!-- End Google Analytics -->
<% } %>

View File

@@ -0,0 +1,40 @@
<head>
<meta charset="utf-8">
<%- partial('google-analytics') %>
<%
var title = page.title;
if (is_archive()){
title = __('archive_a');
if (is_month()){
title += ': ' + page.year + '/' + page.month;
} else if (is_year()){
title += ': ' + page.year;
}
} else if (is_category()){
title = __('category') + ': ' + page.category;
} else if (is_tag()){
title = __('tag') + ': ' + page.tag;
}
%>
<title><% if (title){ %><%= title %> | <% } %><%= config.title %></title>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<%- open_graph({twitter_id: theme.twitter, fb_admins: theme.fb_admins, fb_app_id: theme.fb_app_id}) %>
<% if (config.feed) { %>
<%- feed_tag() %>
<% } else if (theme.rss) { %>
<%- feed_tag(theme.rss) %>
<% } %>
<% if (theme.favicon){ %>
<%- favicon_tag(theme.favicon) %>
<% } %>
<% if (config.highlight.enable){ %>
<%- css('https://cdn.jsdelivr.net/npm/typeface-source-code-pro@0.0.71/index.min.css') %>
<% } %>
<%- css('css/style') %>
<% if (theme.fancybox){ %>
<%- css('fancybox/jquery.fancybox.min.css') %>
<% } %>
<%- css('https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css') %>
</head>

View File

@@ -0,0 +1,37 @@
<header id="header">
<div id="banner"></div>
<div id="header-outer" class="outer">
<div id="header-title" class="inner">
<h1 id="logo-wrap">
<a href="<%- url_for() %>" id="logo"><%= config.title %></a>
</h1>
<% if (theme.subtitle || config.subtitle){ %>
<h2 id="subtitle-wrap">
<a href="<%- url_for() %>" id="subtitle"><%= theme.subtitle || config.subtitle %></a>
</h2>
<% } %>
</div>
<div id="header-inner" class="inner">
<nav id="main-nav">
<a id="main-nav-toggle" class="nav-icon"><span class="fa fa-bars"></span></a>
<% for (var i in theme.menu){ %>
<a class="main-nav-link" href="<%- url_for(theme.menu[i]) %>"><%= i %></a>
<% } %>
</nav>
<nav id="sub-nav">
<% if (theme.links) { %>
<% for (const i in theme.links) {%>
<a class="nav-icon" href="<%- url_for(theme.links[i]) %>"><span class="fa fa-<%= i %>"></span></a>
<% } %>
<% } %>
<% if (theme.rss){ %>
<a class="nav-icon" href="<%- url_for(theme.rss) %>" title="<%= __('rss_feed') %>"><span class="fa fa-rss"></span></a>
<% } %>
<a class="nav-icon nav-search-btn" title="<%= __('search') %>"><span class="fa fa-search"></span></a>
</nav>
<div id="search-form-wrap">
<%- search_form({button: '&#xF002;', text: __('search')}) %>
</div>
</div>
</div>
</header>

View File

@@ -0,0 +1,5 @@
<nav id="mobile-nav">
<% for (var i in theme.menu){ %>
<a href="<%- url_for(theme.menu[i]) %>" class="mobile-nav-link"><%= i %></a>
<% } %>
</nav>

View File

@@ -0,0 +1,10 @@
<% if (post.categories && post.categories.length){ %>
<div class="article-category">
<%- list_categories(post.categories, {
show_count: false,
class: 'article-category',
style: 'none',
separator: '►'
}) %>
</div>
<% } %>

View File

@@ -0,0 +1,3 @@
<a href="<%- url_for(post.path) %>" class="<%= class_name %>">
<time class="dt-published" datetime="<%= date_xml(post.date) %>" itemprop="datePublished"><%= date(post.date, date_format) %></time>
</a>

View File

@@ -0,0 +1,11 @@
<% if (post.photos && post.photos.length){ %>
<div class="article-gallery">
<div class="article-gallery-photos">
<% post.photos.forEach(function(photo, i){ %>
<a class="article-gallery-img fancybox" href="<%- url_for(photo) %>" rel="gallery_<%= post._id %>">
<img src="<%- url_for(photo) %>" itemprop="image">
</a>
<% }) %>
</div>
</div>
<% } %>

View File

@@ -0,0 +1,22 @@
<% if (post.prev || post.next){ %>
<nav id="article-nav">
<% if (post.prev){ %>
<a href="<%- url_for(post.prev.path) %>" id="article-nav-newer" class="article-nav-link-wrap">
<strong class="article-nav-caption"><%= __('newer') %></strong>
<div class="article-nav-title">
<% if (post.prev.title){ %>
<%= post.prev.title %>
<% } else { %>
(no title)
<% } %>
</div>
</a>
<% } %>
<% if (post.next){ %>
<a href="<%- url_for(post.next.path) %>" id="article-nav-older" class="article-nav-link-wrap">
<strong class="article-nav-caption"><%= __('older') %></strong>
<div class="article-nav-title"><%= post.next.title %></div>
</a>
<% } %>
</nav>
<% } %>

View File

@@ -0,0 +1,6 @@
<% if (post.tags && post.tags.length){ %>
<%- list_tags(post.tags, {
show_count: false,
class: 'article-tag'
}) %>
<% } %>

View File

@@ -0,0 +1,15 @@
<% if (post.link){ %>
<h1 itemprop="name">
<a class="<%= class_name %>" href="<%- url_for(post.link) %>" target="_blank" itemprop="url"><%= post.title %></a>
</h1>
<% } else if (post.title){ %>
<% if (index){ %>
<h1 itemprop="name">
<a class="<%= class_name %>" href="<%- url_for(post.path) %>"><%= post.title %></a>
</h1>
<% } else { %>
<h1 class="<%= class_name %>" itemprop="headline name">
<%= post.title %>
</h1>
<% } %>
<% } %>

View File

@@ -0,0 +1,5 @@
<aside id="sidebar"<% if (theme.sidebar === 'bottom'){ %> class="outer"<% } %>>
<% theme.widgets.forEach(function(widget){ %>
<%- partial('_widget/' + widget) %>
<% }) %>
</aside>

View File

@@ -0,0 +1,8 @@
<% if (site.posts.length){ %>
<div class="widget-wrap">
<h3 class="widget-title"><%= __('archive_a') %></h3>
<div class="widget">
<%- list_archives({show_count: theme.show_count, type: theme.archive_type}) %>
</div>
</div>
<% } %>

View File

@@ -0,0 +1,8 @@
<% if (site.categories.length){ %>
<div class="widget-wrap">
<h3 class="widget-title"><%= __('categories') %></h3>
<div class="widget">
<%- list_categories({show_count: theme.show_count}) %>
</div>
</div>
<% } %>

View File

@@ -0,0 +1,14 @@
<% if (site.posts.length){ %>
<div class="widget-wrap">
<h3 class="widget-title"><%= __('recent_posts') %></h3>
<div class="widget">
<ul>
<% site.posts.sort('date', -1).limit(theme.recent_posts_limits).each(function(post){ %>
<li>
<a href="<%- url_for(post.path) %>"><%= post.title || '(no title)' %></a>
</li>
<% }) %>
</ul>
</div>
</div>
<% } %>

View File

@@ -0,0 +1,8 @@
<% if (site.tags.length){ %>
<div class="widget-wrap">
<h3 class="widget-title"><%= __('tags') %></h3>
<div class="widget">
<%- list_tags({show_count: theme.show_count}) %>
</div>
</div>
<% } %>

View File

@@ -0,0 +1,8 @@
<% if (site.tags.length){ %>
<div class="widget-wrap">
<h3 class="widget-title"><%= __('tagcloud') %></h3>
<div class="widget tagcloud">
<%- tagcloud() %>
</div>
</div>
<% } %>

1
node_modules/hexo-theme-landscape/layout/archive.ejs generated vendored Normal file
View File

@@ -0,0 +1 @@
<%- partial('_partial/archive', {expand: false, index: true}) %>

View File

@@ -0,0 +1 @@
<%- partial('_partial/archive', {expand: false, index: true}) %>

1
node_modules/hexo-theme-landscape/layout/index.ejs generated vendored Normal file
View File

@@ -0,0 +1 @@
<%- partial('_partial/archive', {expand: true, index: true}) %>

20
node_modules/hexo-theme-landscape/layout/layout.ejs generated vendored Normal file
View File

@@ -0,0 +1,20 @@
<!DOCTYPE html>
<html>
<%- partial('_partial/head') %>
<body>
<div id="container">
<div id="wrap">
<%- partial('_partial/header', null, {cache: !config.relative_link}) %>
<div class="outer">
<section id="main"><%- body %></section>
<% if (theme.sidebar && theme.sidebar !== 'bottom'){ %>
<%- partial('_partial/sidebar', null, {cache: !config.relative_link}) %>
<% } %>
</div>
<%- partial('_partial/footer', null, {cache: !config.relative_link}) %>
</div>
<%- partial('_partial/mobile-nav', null, {cache: !config.relative_link}) %>
<%- partial('_partial/after-footer') %>
</div>
</body>
</html>

1
node_modules/hexo-theme-landscape/layout/page.ejs generated vendored Normal file
View File

@@ -0,0 +1 @@
<%- partial('_partial/article', {post: page, index: false}) %>

1
node_modules/hexo-theme-landscape/layout/post.ejs generated vendored Normal file
View File

@@ -0,0 +1 @@
<%- partial('_partial/article', {post: page, index: false}) %>

1
node_modules/hexo-theme-landscape/layout/tag.ejs generated vendored Normal file
View File

@@ -0,0 +1 @@
<%- partial('_partial/archive', {expand: false, index: true}) %>

12
node_modules/hexo-theme-landscape/package.json generated vendored Normal file
View File

@@ -0,0 +1,12 @@
{
"name": "hexo-theme-landscape",
"version": "1.1.0",
"description": "Hexo Theme Landscape",
"repository": "hexojs/hexo-theme-landscape",
"keywords": [
"hexo",
"theme",
"landscape"
],
"license": "MIT"
}

24
node_modules/hexo-theme-landscape/scripts/fancybox.js generated vendored Normal file
View File

@@ -0,0 +1,24 @@
var rUrl = /((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[.\!\/\\w]*))?)/;
/**
* Fancybox tag
*
* Syntax:
* {% fancybox /path/to/image [/path/to/thumbnail] [title] %}
*/
hexo.extend.tag.register('fancybox', function(args){
var original = args.shift(),
thumbnail = '';
if (args.length && rUrl.test(args[0])){
thumbnail = args.shift();
}
var title = args.join(' ');
return `<a data-fancybox="gallery" href="${original}" data-caption="${title}">
<img src="${thumbnail || original}" alt="${title}">
</a>
${title ? `<span class="caption">${title}</span>` : ''}`;
});

View File

@@ -0,0 +1,63 @@
$block-caption
text-decoration: none
text-transform: uppercase
letter-spacing: 2px
color: color-grey
margin-bottom: 1em
margin-left: 5px
line-height: 1em
text-shadow: 0 1px #fff
font-weight: bold
$block
background: #fff
box-shadow: 1px 2px 3px #ddd
border: 1px solid color-border
border-radius: 3px
$base-style
h1
font-size: 2em
h2
font-size: 1.5em
h3
font-size: 1.3em
h4
font-size: 1.2em
h5
font-size: 1em
h6
font-size: 1em
color: color-grey
hr
border: 1px dashed color-border
strong
font-weight: bold
em, cite
font-style: italic
sup, sub
font-size: 0.75em
line-height: 0
position: relative
vertical-align: baseline
sup
top: -0.5em
sub
bottom: -0.2em
small
font-size: 0.85em
acronym, abbr
border-bottom: 1px dotted
ul, ol, dl
margin: 0 20px
line-height: line-height
ul, ol
ul, ol
margin-top: 0
margin-bottom: 0
ul
list-style: disc
ol
list-style: decimal
dt
font-weight: bold

View File

@@ -0,0 +1,80 @@
.archives-wrap
margin: block-margin 0
.archives
clearfix()
.archive-year-wrap
margin-bottom: 1em
.archive-year
@extend $block-caption
.archives
column-gap: 10px
@media mq-tablet
column-count: 2
@media mq-normal
column-count: 3
.archive-article
avoid-column-break()
.archive-article-inner
@extend $block
padding: 10px
margin-bottom: 15px
.archive-article-title
text-decoration: none
font-weight: bold
color: color-default
transition: color 0.2s
line-height: line-height
&:hover
color: color-link
.archive-article-footer
margin-top: 1em
.archive-article-date
color: color-grey
text-decoration: none
font-size: 0.85em
line-height: 1em
margin-bottom: 0.5em
display: block
#page-nav
clearfix()
margin: block-margin auto
background: #fff
box-shadow: 1px 2px 3px #ddd
border: 1px solid color-border
border-radius: 3px
text-align: center
color: color-grey
overflow: hidden
a, span
padding: 10px 20px
line-height: 1
height: 2ex
a
color: color-grey
text-decoration: none
&:hover
background: color-grey
color: #fff
.prev
float: left
.next
float: right
.page-number
display: inline-block
@media mq-mobile
display: none
.current
color: color-default
font-weight: bold
.space
color: color-border

View File

@@ -0,0 +1,310 @@
.article
margin: block-margin 0
.article-inner
@extend $block
overflow: hidden
.article-meta
clearfix()
.article-date
@extend $block-caption
float: left
.article-category
float: left
line-height: 1em
color: #ccc
text-shadow: 0 1px #fff
margin-left: 8px
&:before
content: "\2022"
.article-category-link
@extend $block-caption
margin: 0 12px 1em
.article-header
padding: article-padding article-padding 0
.article-title
text-decoration: none
font-size: 2em
font-weight: bold
color: color-default
line-height: line-height-title
transition: color 0.2s
a&:hover
color: color-link
.article-entry
@extend $base-style
clearfix()
color: color-default
padding: 0 article-padding
p, table
line-height: line-height
margin: line-height 0
h1, h2, h3, h4, h5, h6
font-weight: bold
h1, h2, h3, h4, h5, h6
line-height: line-height-title
margin: line-height-title 0
a
color: color-link
text-decoration: none
&:hover
text-decoration: underline
ul, ol, dl
margin-top: line-height
margin-bottom: line-height
img, video
max-width: 100%
height: auto
display: block
margin: auto
iframe
border: none
table
width: 100%
border-collapse: collapse
border-spacing: 0
th
font-weight: bold
border-bottom: 3px solid color-border
padding-bottom: 0.5em
td
border-bottom: 1px solid color-border
padding: 10px 0
blockquote
font-family: font-serif
margin: line-height 20px
text-align: center
footer
font-size: font-size
margin: line-height 0
font-family: font-sans
cite
&:before
content: ""
padding: 0 0.5em
.pullquote
text-align: left
width: 45%
margin: 0
&.left
margin-left: 0.5em
margin-right: 1em
&.right
margin-right: 0.5em
margin-left: 1em
.caption
color: color-grey
display: block
font-size: 0.9em
margin-top: 0.5em
position: relative
text-align: center
// http://webdesignerwall.com/tutorials/css-elastic-videos
.video-container
position: relative
padding-top: (9 / 16 * 100)% // 16:9 ratio
height: 0
overflow: hidden
iframe, object, embed
position: absolute
top: 0
left: 0
width: 100%
height: 100%
margin-top: 0
.article-more-link a
display: inline-block
line-height: 1em
padding: 6px 15px
border-radius: 15px
background: color-background
color: color-grey
text-shadow: 0 1px #fff
text-decoration: none
&:hover
background: color-link
color: #fff
text-decoration: none
text-shadow: 0 1px darken(color-link, 20%)
.article-footer
clearfix()
font-size: 0.85em
line-height: line-height
border-top: 1px solid color-border
padding-top: line-height
margin: 0 article-padding article-padding
a
color: color-grey
text-decoration: none
&:hover
color: color-default
.article-tag-list-item
float: left
margin-right: 10px
.article-tag-list-link
&:before
content: "#"
.article-comment-link
float: right
&:before
padding-right: 8px
.article-share-link
cursor: pointer
float: right
margin-left: 20px
&:before
padding-right: 6px
#article-nav
clearfix()
position: relative
@media mq-normal
margin: block-margin 0
&:before
absolute-center(8px)
content: ""
border-radius: 50%
background: color-border
box-shadow: 0 1px 2px #fff
.article-nav-link-wrap
text-decoration: none
text-shadow: 0 1px #fff
color: color-grey
box-sizing: border-box
margin-top: block-margin
text-align: center
display: block
&:hover
color: color-default
@media mq-normal
width: 50%
margin-top: 0
#article-nav-newer
@media mq-normal
float: left
text-align: right
padding-right: 20px
#article-nav-older
@media mq-normal
float: right
text-align: left
padding-left: 20px
.article-nav-caption
text-transform: uppercase
letter-spacing: 2px
color: color-border
line-height: 1em
font-weight: bold
#article-nav-newer &
margin-right: -2px
.article-nav-title
font-size: 0.85em
line-height: line-height
margin-top: 0.5em
.article-share-box
position: absolute
display: none
background: #fff
box-shadow: 1px 2px 10px rgba(0, 0, 0, 0.2)
border-radius: 3px
margin-left: -145px
overflow: hidden
z-index: 1
&.on
display: block
.article-share-input
width: 100%
background: none
box-sizing: border-box
font: 14px font-sans
padding: 0 15px
color: color-default
outline: none
border: 1px solid color-border
border-radius: 3px 3px 0 0
height: 36px
line-height: 36px
.article-share-links
clearfix()
background: color-background
$article-share-link
width: 50px
height: 36px
display: block
float: left
position: relative
color: #999
text-shadow: 0 1px #fff
.fa
font-size: 20px
absolute-center(@font-size)
text-align: center
&:hover
color: #fff
.article-share-twitter
@extend $article-share-link
&:hover
background: color-twitter
text-shadow: 0 1px darken(color-twitter, 20%)
.article-share-facebook
@extend $article-share-link
&:hover
background: color-facebook
text-shadow: 0 1px darken(color-facebook, 20%)
.article-share-pinterest
@extend $article-share-link
&:hover
background: color-pinterest
text-shadow: 0 1px darken(color-pinterest, 20%)
.article-share-linkedin
@extend $article-share-link
&:hover
background: color-linkedin
text-shadow: 0 1px darken(color-linkedin, 20%)
.article-gallery
background: #000
position: relative
.article-gallery-photos
position: relative
overflow: hidden
.article-gallery-img
display: none
max-width: 100%
&:first-child
display: block
&.loaded
position: absolute
display: block
img
display: block
max-width: 100%
margin: 0 auto

View File

@@ -0,0 +1,9 @@
#comments
background: #fff
box-shadow: 1px 2px 3px #ddd
padding: article-padding
border: 1px solid color-border
border-radius: 3px
margin: block-margin 0
a
color: color-link

View File

@@ -0,0 +1,14 @@
#footer
background: color-footer-background
padding: 50px 0
border-top: 1px solid color-border
color: color-grey
a
color: color-link
text-decoration: none
&:hover
text-decoration: underline
#footer-info
line-height: line-height
font-size: 0.85em

View File

@@ -0,0 +1,154 @@
#header
height: banner-height
position: relative
border-bottom: 1px solid color-border
&:before, &:after
content: ""
position: absolute
left: 0
right: 0
height: 40px
&:before
top: 0
background: linear-gradient(rgba(0, 0, 0, 0.2), transparent)
&:after
bottom: 0
background: linear-gradient(transparent, rgba(0, 0, 0, 0.2))
#header-outer
height: 100%
position: relative
#header-inner
position: relative
overflow: hidden
#banner
position: absolute
top: 0
left: 0
width: 100%
height: 100%
background: url(banner-url) center #000
background-size: cover
z-index: -1
#header-title
text-align: center
height: logo-size
position: absolute
top: 50%
left: 0
margin-top: logo-size * -0.5
$logo-text
text-decoration: none
color: #fff
font-weight: 300
text-shadow: 0 1px 4px rgba(0, 0, 0, 0.3)
#logo
@extend $logo-text
font-size: logo-size
line-height: logo-size
letter-spacing: 2px
#subtitle
@extend $logo-text
font-size: subtitle-size
line-height: subtitle-size
letter-spacing: 1px
#subtitle-wrap
margin-top: subtitle-size
#main-nav
float: left
margin-left: -15px
$nav-link
float: left
color: #fff
opacity: 0.6
text-decoration: none
text-shadow: 0 1px rgba(0, 0, 0, 0.2)
transition: opacity 0.2s
display: block
padding: 20px 15px
&:hover
opacity: 1
.nav-icon
@extend $nav-link
text-align: center
font-size: font-size
width: font-size
height: font-size
padding: 20px 15px
position: relative
cursor: pointer
.main-nav-link
@extend $nav-link
font-weight: 300
letter-spacing: 1px
@media mq-mobile
display: none
#main-nav-toggle
display: none
@media mq-mobile
display: block
#sub-nav
float: right
margin-right: -15px
#search-form-wrap
position: absolute
top: 15px
width: 150px
height: 30px
right: -150px
opacity: 0
transition: 0.2s ease-out
&.on
opacity: 1
right: 0
@media mq-mobile
width: 100%
right: -100%
.search-form
position: absolute
top: 0
left: 0
right: 0
background: #fff
padding: 5px 15px
border-radius: 15px
box-shadow: 0 0 10px rgba(0, 0, 0, 0.3)
.search-form-input
border: none
background: none
color: color-default
width: 100%
font: 13px font-sans
outline: none
&::-webkit-search-results-decoration
&::-webkit-search-cancel-button
-webkit-appearance: none
.search-form-submit
position: absolute
top: 50%
right: 10px
margin-top: -7px
font: 13px font-icon
border: none
background: none
color: #bbb
cursor: pointer
&:hover, &:focus
color: #777

View File

@@ -0,0 +1,163 @@
// https://github.com/chriskempson/tomorrow-theme
highlight-background = #2d2d2d
highlight-current-line = #393939
highlight-selection = #515151
highlight-foreground = #cccccc
highlight-comment = #999999
highlight-red = #f2777a
highlight-orange = #f99157
highlight-yellow = #ffcc66
highlight-green = #99cc99
highlight-aqua = #66cccc
highlight-blue = #6699cc
highlight-purple = #cc99cc
$code-block
background: highlight-background
margin: 0 article-padding * -1
padding: 15px article-padding
border-style: solid
border-color: color-border
border-width: 1px 0
overflow: auto
color: highlight-foreground
line-height: font-size * line-height
$line-numbers
color: #666
font-size: 0.85em
.article-entry
pre, code
font-family: font-mono
code
background: color-background
text-shadow: 0 1px #fff
padding: 0 0.3em
pre
@extend $code-block
code
background: none
text-shadow: none
padding: 0
.highlight
@extend $code-block
pre
border: none
margin: 0
padding: 0
table
margin: 0
width: auto
td
border: none
padding: 0
figcaption
clearfix()
font-size: 0.85em
color: highlight-comment
line-height: 1em
margin-bottom: 1em
a
float: right
.gutter
-moz-user-select: none;
-ms-user-select: none;
-webkit-user-select: none;
user-select: none;
pre
@extend $line-numbers
text-align: right
padding-right: 20px
.line
height: font-size * line-height
.line.marked
background: highlight-selection
.gist
margin: 0 article-padding * -1
border-style: solid
border-color: color-border
border-width: 1px 0
background: highlight-background
padding: 15px article-padding 15px 0
.gist-file
border: none
font-family: font-mono
margin: 0
.gist-data
background: none
border: none
.line-numbers
@extend $line-numbers
background: none
border: none
padding: 0 20px 0 0
.line-data
padding: 0 !important
.highlight
margin: 0
padding: 0
border: none
.gist-meta
background: highlight-background
color: highlight-comment
font: 0.85em font-sans
text-shadow: 0 0
padding: 0
margin-top: 1em
margin-left: article-padding
a
color: color-link
font-weight: normal
&:hover
text-decoration: underline
pre
.comment
.title
color: highlight-comment
.variable
.attribute
.tag
.regexp
.ruby .constant
.xml .tag .title
.xml .pi
.xml .doctype
.html .doctype
.css .id
.css .class
.css .pseudo
color: highlight-red
.number
.preprocessor
.built_in
.literal
.params
.constant
color: highlight-orange
.class
.ruby .class .title
.css .rules .attribute
color: highlight-green
.string
.value
.inheritance
.header
.ruby .symbol
.xml .cdata
color: highlight-green
.css .hexcolor
color: highlight-aqua
.function
.python .decorator
.python .title
.ruby .function .title
.ruby .title .keyword
.perl .sub
.javascript .title
.coffeescript .title
color: highlight-blue
.keyword
.javascript .function
color: highlight-purple

View File

@@ -0,0 +1,19 @@
@media mq-mobile
#mobile-nav
position: absolute
top: 0
left: 0
width: mobile-nav-width
height: 100%
background: color-mobile-nav-background
border-right: 1px solid #fff
@media mq-mobile
.mobile-nav-link
display: block
color: color-grey
text-decoration: none
padding: 15px 20px
font-weight: bold
&:hover
color: #fff

View File

@@ -0,0 +1,27 @@
#sidebar
@media mq-normal
column(sidebar-column)
.widget-wrap
margin: block-margin 0
.widget-title
@extend $block-caption
.widget
color: color-sidebar-text
text-shadow: 0 1px #fff
background: color-widget-background
box-shadow: 0 -1px 4px color-widget-border inset
border: 1px solid color-widget-border
padding: 15px
border-radius: 3px
a
color: color-link
text-decoration: none
&:hover
text-decoration: underline
ul, ol, dl
ul, ol, dl
margin-left: 15px
list-style: disc

View File

@@ -0,0 +1,27 @@
.widget-wrap
margin-bottom: block-margin !important
@media mq-normal
column(main-column)
.widget-title
color: #ccc
text-transform: uppercase
letter-spacing: 2px
margin-bottom: .5em
line-height: 1em
font-weight: bold
.widget
color: color-grey
ul, ol
li
display: inline-block
zoom:1
*display:inline
padding-right: .75em
/* Having problems getting balanced white space between items
li:before
content: " | "
li:first-child:before
content: none
*/

View File

@@ -0,0 +1,35 @@
if sidebar is bottom
@import "sidebar-bottom"
else
@import "sidebar-aside"
.widget
@extend $base-style
line-height: line-height
word-wrap: break-word
font-size: 0.9em
ul, ol
list-style: none
margin: 0
ul, ol
margin: 0 20px
ul
list-style: disc
ol
list-style: decimal
.category-list-count
.tag-list-count
.archive-list-count
padding-left: 5px
color: color-grey
font-size: 0.85em
&:before
content: "("
&:after
content: ")"
.tagcloud
a
margin-right: 5px
display: inline-block

View File

@@ -0,0 +1,38 @@
/////////////////
// Semantic.gs // for Stylus: http://learnboost.github.com/stylus/
/////////////////
// Utility function you should never need to modify this
// _gridsystem-width = (column-width + gutter-width) * columns
gridsystem-width(_columns = columns)
(column-width + gutter-width) * _columns
// Set @total-width to 100% for a fluid layout
// total-width = gridsystem-width(columns)
total-width = 100%
//////////
// GRID //
//////////
body
clearfix()
width: 100%
row(_columns = columns)
clearfix()
display: block
width: total-width * ((gutter-width + gridsystem-width(_columns)) / gridsystem-width(_columns))
margin: 0 total-width * (((gutter-width * .5) / gridsystem-width(_columns)) * -1)
column(x, _columns = columns)
display: inline
float: left
width: total-width * ((((gutter-width + column-width) * x) - gutter-width) / gridsystem-width(_columns))
margin: 0 total-width * ((gutter-width * .5) / gridsystem-width(_columns))
push(offset = 1)
margin-left: total-width * (((gutter-width + column-width) * offset) / gridsystem-width(columns))
pull(offset = 1)
margin-right: total-width * (((gutter-width + column-width) * offset) / gridsystem-width(columns))

View File

@@ -0,0 +1,31 @@
// http://www.zeldman.com/2012/03/01/replacing-the-9999px-hack-new-image-replacement/
hide-text()
text-indent: 100%
white-space: nowrap
overflow: hidden
// http://codepen.io/shshaw/full/gEiDt
absolute-center(width, height = width)
// margin: auto
// position: absolute
// top: 50%
// top: 0
// left: 0
// bottom: 0
// right: 0
// width: width
// height: height
// overflow: auto
width: width
height: height
position: absolute
top: 50%
left: 50%
margin-top: width * -0.5
margin-left: height * -0.5
avoid-column-break()
vendor("column-break-inside", avoid, only: webkit)
page-break-inside: avoid // for firefox
overflow: hidden // fix for firefox
break-inside: avoid-column

View File

@@ -0,0 +1,61 @@
// Config
support-for-ie = false
vendor-prefixes = webkit moz ms official
// Colors
color-default = #555
color-grey = #999
color-border = #ddd
color-link = #258fb8
color-background = #eee
color-sidebar-text = #777
color-widget-background = #ddd
color-widget-border = #ccc
color-footer-background = #262a30
color-mobile-nav-background = #191919
color-twitter = #00aced
color-facebook = #3b5998
color-pinterest = #cb2027
color-linkedin = #0077B5
// Fonts
font-sans = -apple-system, BlinkMacSystemFont,
"Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell",
"Fira Sans", "Droid Sans", "Helvetica Neue",
sans-serif
font-serif = Georgia, "Times New Roman", serif
font-mono = "Source Code Pro", Consolas, Monaco, Menlo, Consolas, monospace
font-icon = ForkAwesome
font-size = 14px
line-height = 1.6em
line-height-title = 1.1em
// Header
logo-size = 40px
subtitle-size = 16px
banner-height = 300px
banner-url = hexo-config("banner")
sidebar = hexo-config("sidebar")
// Layout
block-margin = 50px
article-padding = 20px
mobile-nav-width = 280px
main-column = 9
sidebar-column = 3
if sidebar and sidebar isnt bottom
_sidebar-column = sidebar-column
else
_sidebar-column = 0
// Grids
column-width = 80px
gutter-width = 20px
columns = main-column + _sidebar-column
// Media queries
mq-mobile = "screen and (max-width: 479px)"
mq-tablet = "screen and (min-width: 480px) and (max-width: 767px)"
mq-normal = "screen and (min-width: 768px)"

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 KiB

View File

@@ -0,0 +1,79 @@
@import "nib"
@import "_variables"
@import "_util/mixin"
@import "_util/grid"
global-reset()
input, button
margin: 0
padding: 0
&::-moz-focus-inner
border: 0
padding: 0
html, body, #container
height: 100%
body
background: color-background
font: font-size font-sans
-webkit-text-size-adjust: 100%
.outer
clearfix()
max-width: (column-width + gutter-width) * columns + gutter-width
margin: 0 auto
padding: 0 gutter-width
.inner
column(columns)
.left, .alignleft
float: left
.right, .alignright
float: right
.clear
clear: both
#container
position: relative
.mobile-nav-on
overflow: hidden
#wrap
height: 100%
width: 100%
position: absolute
top: 0
left: 0
transition: 0.2s ease-out
z-index: 1
background: color-background
.mobile-nav-on &
left: mobile-nav-width
if sidebar and sidebar isnt bottom
#main
@media mq-normal
column(main-column)
if sidebar is left
@media mq-normal
#main
float: right
@import "_extend"
@import "_partial/header"
@import "_partial/article"
@import "_partial/comment"
@import "_partial/archive"
@import "_partial/footer"
@import "_partial/highlight"
@import "_partial/mobile"
if sidebar
@import "_partial/sidebar"

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

138
node_modules/hexo-theme-landscape/source/js/script.js generated vendored Normal file
View File

@@ -0,0 +1,138 @@
(function($){
// Search
var $searchWrap = $('#search-form-wrap'),
isSearchAnim = false,
searchAnimDuration = 200;
var startSearchAnim = function(){
isSearchAnim = true;
};
var stopSearchAnim = function(callback){
setTimeout(function(){
isSearchAnim = false;
callback && callback();
}, searchAnimDuration);
};
$('.nav-search-btn').on('click', function(){
if (isSearchAnim) return;
startSearchAnim();
$searchWrap.addClass('on');
stopSearchAnim(function(){
$('.search-form-input').focus();
});
});
$('.search-form-input').on('blur', function(){
startSearchAnim();
$searchWrap.removeClass('on');
stopSearchAnim();
});
// Share
$('body').on('click', function(){
$('.article-share-box.on').removeClass('on');
}).on('click', '.article-share-link', function(e){
e.stopPropagation();
var $this = $(this),
url = $this.attr('data-url'),
encodedUrl = encodeURIComponent(url),
id = 'article-share-box-' + $this.attr('data-id'),
title = $this.attr('data-title'),
offset = $this.offset();
if ($('#' + id).length){
var box = $('#' + id);
if (box.hasClass('on')){
box.removeClass('on');
return;
}
} else {
var html = [
'<div id="' + id + '" class="article-share-box">',
'<input class="article-share-input" value="' + url + '">',
'<div class="article-share-links">',
'<a href="https://twitter.com/intent/tweet?text=' + encodeURIComponent(title) + '&url=' + encodedUrl + '" class="article-share-twitter" target="_blank" title="Twitter"><span class="fa fa-twitter"></span></a>',
'<a href="https://www.facebook.com/sharer.php?u=' + encodedUrl + '" class="article-share-facebook" target="_blank" title="Facebook"><span class="fa fa-facebook"></span></a>',
'<a href="http://pinterest.com/pin/create/button/?url=' + encodedUrl + '" class="article-share-pinterest" target="_blank" title="Pinterest"><span class="fa fa-pinterest"></span></a>',
'<a href="https://www.linkedin.com/shareArticle?mini=true&url=' + encodedUrl + '" class="article-share-linkedin" target="_blank" title="LinkedIn"><span class="fa fa-linkedin"></span></a>',
'</div>',
'</div>'
].join('');
var box = $(html);
$('body').append(box);
}
$('.article-share-box.on').hide();
box.css({
top: offset.top + 25,
left: offset.left
}).addClass('on');
}).on('click', '.article-share-box', function(e){
e.stopPropagation();
}).on('click', '.article-share-box-input', function(){
$(this).select();
}).on('click', '.article-share-box-link', function(e){
e.preventDefault();
e.stopPropagation();
window.open(this.href, 'article-share-box-window-' + Date.now(), 'width=500,height=450');
});
// Caption
$('.article-entry').each(function(i){
$(this).find('img').each(function(){
if ($(this).parent().hasClass('fancybox') || $(this).parent().is('a')) return;
var alt = this.alt;
if (alt) $(this).after('<span class="caption">' + alt + '</span>');
$(this).wrap('<a href="' + this.src + '" data-fancybox=\"gallery\" data-caption="' + alt + '"></a>')
});
$(this).find('.fancybox').each(function(){
$(this).attr('rel', 'article' + i);
});
});
if ($.fancybox){
$('.fancybox').fancybox();
}
// Mobile nav
var $container = $('#container'),
isMobileNavAnim = false,
mobileNavAnimDuration = 200;
var startMobileNavAnim = function(){
isMobileNavAnim = true;
};
var stopMobileNavAnim = function(){
setTimeout(function(){
isMobileNavAnim = false;
}, mobileNavAnimDuration);
}
$('#main-nav-toggle').on('click', function(){
if (isMobileNavAnim) return;
startMobileNavAnim();
$container.toggleClass('mobile-nav-on');
stopMobileNavAnim();
});
$('#wrap').on('click', function(){
if (isMobileNavAnim || !$container.hasClass('mobile-nav-on')) return;
$container.removeClass('mobile-nav-on');
});
})(jQuery);