首次提交
This commit is contained in:
parent
7398dadee2
commit
e5de78d061
32
404.php
Normal file
32
404.php
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
<?php if (!defined('__TYPECHO_ROOT_DIR__')) exit; ?>
|
||||||
|
<?php $this->need('header.php'); ?>
|
||||||
|
<div class="col-lg-8">
|
||||||
|
<!-- content -->
|
||||||
|
<div class="trm-content" id="trm-content">
|
||||||
|
<div data-scroll data-scroll-repeat data-scroll-offset="500" id="about-triger">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<div class="trm-counter-up trm-scroll-animation trm-active-el" data-scroll="" data-scroll-offset="40">
|
||||||
|
<div class="trm-counter-number">
|
||||||
|
<?php echo yiyan() ?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="col-mb-12 col-tb-8 col-tb-offset-2">
|
||||||
|
|
||||||
|
<div class="trm-card trm-publication">
|
||||||
|
<div class="text-center">
|
||||||
|
<img src="<?php $this->options->themeUrl('/img/null.svg'); ?>" style="margin-bottom: 20px;">
|
||||||
|
<p style="margin-bottom: 20px;"><?php _e('你想查看的页面已被转移或删除了, 要不要搜索看看: '); ?></p>
|
||||||
|
<form method="post">
|
||||||
|
<p><input type="text" name="s" class="text" autofocus/></p>
|
||||||
|
<button class="trm-btn" type="submit" class="submit"><?php _e('搜索'); ?></button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div><!-- end #content-->
|
||||||
|
<?php $this->need('footer.php'); ?>
|
54
archive.php
Normal file
54
archive.php
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
<?php if (!defined('__TYPECHO_ROOT_DIR__')) exit; ?>
|
||||||
|
<?php $this->need('header.php'); ?>
|
||||||
|
<div class="col-lg-8">
|
||||||
|
<!-- content -->
|
||||||
|
<div class="trm-content" id="trm-content">
|
||||||
|
<div data-scroll data-scroll-repeat data-scroll-offset="500" id="about-triger">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<div class="trm-counter-up trm-scroll-animation trm-active-el" data-scroll="" data-scroll-offset="40">
|
||||||
|
<div class="trm-counter-number"><?php $this->archiveTitle([
|
||||||
|
'category' => _t('分类<span class="trm-counter-symbol" style="font-size: 24px;"> %s </span>下的文章'),
|
||||||
|
'search' => _t('包含关键字<span class="trm-counter-symbol" style="font-size: 24px;"> %s </span>的文章'),
|
||||||
|
'tag' => _t('标签<span class="trm-counter-symbol" style="font-size: 24px;"> %s </span>下的文章'),
|
||||||
|
'author' => _t('<span class="trm-counter-symbol" style="font-size: 24px;"> %s </span>发布的文章')
|
||||||
|
], '', ''); ?></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="row" id="main" role="main">
|
||||||
|
<?php if ($this->have()): ?>
|
||||||
|
<?php while ($this->next()): ?>
|
||||||
|
<div class="col-lg-6">
|
||||||
|
<div class="trm-blog-card trm-scroll-animation" data-scroll data-scroll-offset="40">
|
||||||
|
<a class="trm-cover-frame trm-anima-link" href="<?php $this->permalink() ?>" title="<?php $this->title() ?>">
|
||||||
|
<?php $thumbnailUrl = get_ArticleThumbnail($this); if ($thumbnailUrl): ?>
|
||||||
|
<img src="<?php echo htmlspecialchars($thumbnailUrl); ?>" alt="文章缩略图">
|
||||||
|
<?php endif; ?>
|
||||||
|
</a>
|
||||||
|
<div class="trm-card-descr">
|
||||||
|
<h5 class="trm-mb-20"><a class="trm-anima-link" href="<?php $this->permalink() ?>" title="<?php $this->title() ?>"><?php $this->title() ?></a></h5>
|
||||||
|
<div class="trm-divider trm-mb-20 trm-mt-20"></div>
|
||||||
|
<ul class="trm-card-data trm-label">
|
||||||
|
<li datetime="<?php $this->date('c'); ?>" itemprop="datePublished"><?php $this->date(); ?></li>
|
||||||
|
<li><?php $this->category(','); ?></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?php endwhile; ?>
|
||||||
|
<?php else: ?>
|
||||||
|
<article class="post">
|
||||||
|
<h2 class="post-title"><?php _e('没有找到内容'); ?></h2>
|
||||||
|
</article>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
<?php $this->pageNav('« 前一页', '后一页 »'); ?>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?php $this->need('sidebar.php'); ?>
|
||||||
|
<?php $this->need('footer.php'); ?>
|
61
comments.php
Normal file
61
comments.php
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
<?php if (!defined('__TYPECHO_ROOT_DIR__')) exit; ?>
|
||||||
|
<div id="comments">
|
||||||
|
<?php $this->comments()->to($comments); ?>
|
||||||
|
|
||||||
|
<?php if ($this->allow('comment')): ?>
|
||||||
|
<div id="<?php $this->respondId(); ?>" class="respond">
|
||||||
|
<div class="cancel-comment-reply">
|
||||||
|
<?php $comments->cancelReply(); ?>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<form method="post" action="<?php $this->commentUrl() ?>" id="comment-form" role="form">
|
||||||
|
<?php if ($this->user->hasLogin()): ?><?php _e('登录身份: '); ?><a
|
||||||
|
href="<?php $this->options->profileUrl(); ?>"><?php $this->user->screenName(); ?></a>. <a
|
||||||
|
href="<?php $this->options->logoutUrl(); ?>" title="Logout"><?php _e('退出'); ?> »</a>
|
||||||
|
|
||||||
|
<?php else: ?>
|
||||||
|
|
||||||
|
<label for="author" class="required"><?php _e('称呼'); ?></label>
|
||||||
|
<input type="text" name="author" id="author" class="text"
|
||||||
|
value="<?php $this->remember('author'); ?>" required/>
|
||||||
|
|
||||||
|
<label
|
||||||
|
for="mail"<?php if ($this->options->commentsRequireMail): ?> class="required"<?php endif; ?>><?php _e('Email'); ?></label>
|
||||||
|
<input type="email" name="mail" id="mail" class="text"
|
||||||
|
value="<?php $this->remember('mail'); ?>"<?php if ($this->options->commentsRequireMail): ?> required<?php endif; ?> />
|
||||||
|
|
||||||
|
<label
|
||||||
|
for="url"<?php if ($this->options->commentsRequireURL): ?> class="required"<?php endif; ?>><?php _e('网站'); ?></label>
|
||||||
|
<input type="url" name="url" id="url" class="text" placeholder="<?php _e('http://'); ?>"
|
||||||
|
value="<?php $this->remember('url'); ?>"<?php if ($this->options->commentsRequireURL): ?> required<?php endif; ?> />
|
||||||
|
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
<label for="textarea" class="required"><?php _e('内容'); ?></label>
|
||||||
|
<textarea rows="8" cols="50" name="text" id="textarea" class="textarea" required style="margin-bottom: 10px;"><?php $this->remember('text'); ?></textarea>
|
||||||
|
<div class="">
|
||||||
|
|
||||||
|
|
||||||
|
<div class="text-center trm-mb-40"><button href="javascript:;" type="submit" class="trm-btn"><?php _e('提交评论'); ?></button></div>
|
||||||
|
<?php $security = $this->widget('Widget_Security'); ?>
|
||||||
|
<input type="hidden" name="_" value="<?php echo $security->getToken($this->request->getReferer())?>">
|
||||||
|
</p>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<?php else: ?>
|
||||||
|
<h3><?php _e('评论已关闭'); ?></h3>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<?php if ($comments->have()): ?>
|
||||||
|
<h5 class="trm-mb-40 trm-title-with-divider"><?php $this->commentsNum(_t('暂无评论'), _t(' %d 条评论')); ?><span data-number="<?php echo getNextNumber() ?>"></span></h5>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<?php $comments->listComments(); ?>
|
||||||
|
|
||||||
|
<?php $comments->pageNav('« 前一页', '后一页 »'); ?>
|
||||||
|
|
||||||
|
<?php endif; ?>
|
||||||
|
</div>
|
9136
css/plugins/bootstrap.min.css
vendored
Normal file
9136
css/plugins/bootstrap.min.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
css/plugins/fancybox.min.css
vendored
Normal file
1
css/plugins/fancybox.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
css/plugins/font-awesome.min.css
vendored
Normal file
1
css/plugins/font-awesome.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
css/plugins/locomotive-scroll.css
Normal file
1
css/plugins/locomotive-scroll.css
Normal file
@ -0,0 +1 @@
|
|||||||
|
/*! locomotive-scroll v4.1.1 | MIT License | https://github.com/locomotivemtl/locomotive-scroll */html.has-scroll-smooth{overflow:hidden}html.has-scroll-dragging{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.has-scroll-smooth body{overflow:hidden}.has-scroll-smooth [data-scroll-container]{min-height:100vh}[data-scroll-direction="horizontal"] [data-scroll-container]{height:100vh;display:inline-block;white-space:nowrap}[data-scroll-direction="horizontal"] [data-scroll-section]{display:inline-block;vertical-align:top;white-space:nowrap;height:100%}.c-scrollbar{position:absolute;right:0;top:0;width:11px;height:100%;transform-origin:center right;transition:transform .3s,opacity .3s;opacity:0}.c-scrollbar:hover{transform:scaleX(1)}.c-scrollbar:hover,.has-scroll-scrolling .c-scrollbar,.has-scroll-dragging .c-scrollbar{opacity:1}[data-scroll-direction="horizontal"] .c-scrollbar{width:100%;height:10px;top:auto;bottom:0;transform:scaleY(1)}[data-scroll-direction="horizontal"] .c-scrollbar:hover{transform:scaleY(1)}.c-scrollbar_thumb{position:absolute;top:0;right:0;background-color:black;opacity:.5;width:7px;border-radius:10px;margin:2px;cursor:-webkit-grab;cursor:grab}.has-scroll-dragging .c-scrollbar_thumb{cursor:-webkit-grabbing;cursor:grabbing}[data-scroll-direction="horizontal"] .c-scrollbar_thumb{right:auto;bottom:0}
|
1
css/plugins/swiper.min.css
vendored
Normal file
1
css/plugins/swiper.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
2757
css/style-dark.css
Normal file
2757
css/style-dark.css
Normal file
File diff suppressed because it is too large
Load Diff
2760
css/style-light.css
Normal file
2760
css/style-light.css
Normal file
File diff suppressed because it is too large
Load Diff
BIN
fonts/webfonts/fa-brands-400.woff2
Normal file
BIN
fonts/webfonts/fa-brands-400.woff2
Normal file
Binary file not shown.
BIN
fonts/webfonts/fa-regular-400.woff2
Normal file
BIN
fonts/webfonts/fa-regular-400.woff2
Normal file
Binary file not shown.
BIN
fonts/webfonts/fa-solid-900.woff2
Normal file
BIN
fonts/webfonts/fa-solid-900.woff2
Normal file
Binary file not shown.
60
footer.php
Normal file
60
footer.php
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
<div class="trm-divider trm-mb-40"></div>
|
||||||
|
<!-- footer -->
|
||||||
|
<footer class="trm-scroll-animation" data-scroll data-scroll-offset="50">
|
||||||
|
<div class="trm-label">© 2024 All Rights Reserved.<br>Designed by:<a href="<?php $this->options->siteurl() ?>" target="_blank"><?php $this->options->title() ?></a></div>
|
||||||
|
<br>
|
||||||
|
<div class="trm-label">
|
||||||
|
<img src="https://www.xfabe.com/zb_users/theme/quietlee/style/images/icp.png" alt="<?php $this->options->beian() ?>">
|
||||||
|
<a href="http://beian.miit.gov.cn/"><?php $this->options->beian() ?></a><br>
|
||||||
|
<a href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=" style="margin-left: 23px;"><?php $this->options->gongan() ?></a>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
<!-- footer end -->
|
||||||
|
</div>
|
||||||
|
<!-- content end -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- scroll container end -->
|
||||||
|
<div class="trm-hidden-switcher">
|
||||||
|
<div class="trm-mode-switcher"><i class="far fa-sun"></i>
|
||||||
|
<input class="tgl tgl-light" id="trm-swich" type="checkbox">
|
||||||
|
<label class="trm-swich" for="trm-swich"></label>
|
||||||
|
<i class="far fa-moon"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- app wrapper end -->
|
||||||
|
<!-- jquery js -->
|
||||||
|
<script src="<?php $this->options->themeUrl('/js/plugins/jquery.min.js'); ?>"></script><!-- swup js -->
|
||||||
|
<script src="<?php $this->options->themeUrl('/js/plugins/swup.min.js'); ?>"></script><!-- locomotive scroll js -->
|
||||||
|
<script src="<?php $this->options->themeUrl('/js/plugins/locomotive-scroll.js'); ?>"></script><!-- typing js -->
|
||||||
|
<script src="<?php $this->options->themeUrl('/js/plugins/typing.js'); ?>"></script><!-- fancybox js -->
|
||||||
|
<script src="<?php $this->options->themeUrl('/js/plugins/fancybox.min.js'); ?>"></script><!-- swiper js -->
|
||||||
|
<script src="<?php $this->options->themeUrl('/js/plugins/swiper.min.js'); ?>"></script><!-- 李初一 js -->
|
||||||
|
<script src="<?php $this->options->themeUrl('/js/main.js'); ?>"></script>
|
||||||
|
<script src="<?php $this->options->themeUrl('/js/copy.js'); ?>"></script>
|
||||||
|
<script>
|
||||||
|
$(document)
|
||||||
|
.ready(function() {
|
||||||
|
$(".trm-card img")
|
||||||
|
.each(function() {
|
||||||
|
var _a = $("<a></a>")
|
||||||
|
.attr({
|
||||||
|
"href": this.src,
|
||||||
|
"data-fancybox": "gallery",
|
||||||
|
"no-pjax": "",
|
||||||
|
"data-type": "image",
|
||||||
|
"data-caption": this.alt
|
||||||
|
});
|
||||||
|
$(this)
|
||||||
|
.wrap(_a);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<?php $this->footer(); ?>
|
||||||
|
</body>
|
||||||
|
</html>
|
455
functions.php
Normal file
455
functions.php
Normal file
@ -0,0 +1,455 @@
|
|||||||
|
<?php
|
||||||
|
if (!defined('__TYPECHO_ROOT_DIR__')) exit;
|
||||||
|
|
||||||
|
function themeConfig($form)
|
||||||
|
{
|
||||||
|
$logoUrl = new \Typecho\Widget\Helper\Form\Element\Text(
|
||||||
|
'logoUrl',
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
_t('站点 LOGO 地址'),
|
||||||
|
_t('在这里填入一个图片 URL 地址, 以在网站标题前加上一个 LOGO')
|
||||||
|
);
|
||||||
|
|
||||||
|
$form->addInput($logoUrl);
|
||||||
|
|
||||||
|
$favicon = new \Typecho\Widget\Helper\Form\Element\Text(
|
||||||
|
'favicon',
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
_t('站点 favicon 图标'),
|
||||||
|
_t('在这里填入一个图片 URL 地址, 设置网站的favicon图标')
|
||||||
|
);
|
||||||
|
|
||||||
|
$favicon = new \Typecho\Widget\Helper\Form\Element\Text(
|
||||||
|
'beian',
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
_t('备案号号'),
|
||||||
|
_t('在这里填入你的备案号')
|
||||||
|
);
|
||||||
|
|
||||||
|
$favicon = new \Typecho\Widget\Helper\Form\Element\Text(
|
||||||
|
'gongan',
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
_t('公安备案号号'),
|
||||||
|
_t('在这里填入你的公安备案号如果有的话')
|
||||||
|
);
|
||||||
|
|
||||||
|
$form->addInput($favicon);
|
||||||
|
|
||||||
|
$bg1 = new \Typecho\Widget\Helper\Form\Element\Text(
|
||||||
|
'bg1',
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
_t('首页背景'),
|
||||||
|
_t('在这里填入背景链接')
|
||||||
|
);
|
||||||
|
|
||||||
|
$form->addInput($bg1);
|
||||||
|
|
||||||
|
$bg2 = new \Typecho\Widget\Helper\Form\Element\Text(
|
||||||
|
'bg2',
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
_t('非首页背景'),
|
||||||
|
_t('在这里填入背景链接')
|
||||||
|
);
|
||||||
|
|
||||||
|
$form->addInput($bg2);
|
||||||
|
|
||||||
|
$light = new \Typecho\Widget\Helper\Form\Element\Text(
|
||||||
|
'light',
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
_t('日间主题色'),
|
||||||
|
_t('在这里填入颜色代码')
|
||||||
|
);
|
||||||
|
|
||||||
|
$form->addInput($light);
|
||||||
|
|
||||||
|
$dark = new \Typecho\Widget\Helper\Form\Element\Text(
|
||||||
|
'dark',
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
_t('夜间主题色'),
|
||||||
|
_t('在这里填入颜色代码')
|
||||||
|
);
|
||||||
|
|
||||||
|
$form->addInput($dark);
|
||||||
|
|
||||||
|
$qq = new \Typecho\Widget\Helper\Form\Element\Text(
|
||||||
|
'QQ',
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
_t('QQ'),
|
||||||
|
_t('在这里填入QQ,用于获取头像')
|
||||||
|
);
|
||||||
|
|
||||||
|
$form->addInput($qq);
|
||||||
|
|
||||||
|
$email = new \Typecho\Widget\Helper\Form\Element\Text(
|
||||||
|
'email',
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
_t('email'),
|
||||||
|
_t('在这里填入email,用于前端联系按钮')
|
||||||
|
);
|
||||||
|
|
||||||
|
$form->addInput($email);
|
||||||
|
|
||||||
|
$github = new \Typecho\Widget\Helper\Form\Element\Text(
|
||||||
|
'github',
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
_t('github'),
|
||||||
|
_t('在这里填入github,用于前端联系按钮')
|
||||||
|
);
|
||||||
|
|
||||||
|
$form->addInput($github);
|
||||||
|
|
||||||
|
$telegraph = new \Typecho\Widget\Helper\Form\Element\Text(
|
||||||
|
'telegraph',
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
_t('telegraph'),
|
||||||
|
_t('在这里填入telegraph,用于前端联系按钮')
|
||||||
|
);
|
||||||
|
|
||||||
|
$form->addInput($telegraph);
|
||||||
|
|
||||||
|
$twitter = new \Typecho\Widget\Helper\Form\Element\Text(
|
||||||
|
'twitter',
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
_t('twitter'),
|
||||||
|
_t('在这里填入twitter,用于前端联系按钮')
|
||||||
|
);
|
||||||
|
|
||||||
|
$form->addInput($twitter);
|
||||||
|
|
||||||
|
$desc = new \Typecho\Widget\Helper\Form\Element\Text(
|
||||||
|
'desc',
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
_t('首页介绍'),
|
||||||
|
_t('在这里输入文字介绍你得站点')
|
||||||
|
);
|
||||||
|
|
||||||
|
$form->addInput($desc);
|
||||||
|
|
||||||
|
$articleImgSpeed = new Typecho_Widget_Helper_Form_Element_Text('articleImgSpeed', NULL, NULL, _t('文章缩略图加速'), _t('填入加速地址前段,不要填图片地址的序号和.jpg(默认jpg图片格式)缩略图数量根据主题预设的张数固定了。例: https://cdn.xxxx.com/images/articles/'));
|
||||||
|
$form->addInput($articleImgSpeed);
|
||||||
|
|
||||||
|
// $sidebarBlock = new \Typecho\Widget\Helper\Form\Element\Checkbox(
|
||||||
|
// 'sidebarBlock',
|
||||||
|
// [
|
||||||
|
// 'ShowRecentPosts' => _t('显示最新文章'),
|
||||||
|
// 'ShowRecentComments' => _t('显示最近回复'),
|
||||||
|
// 'ShowCategory' => _t('显示分类'),
|
||||||
|
// 'ShowArchive' => _t('显示归档'),
|
||||||
|
// 'ShowOther' => _t('显示其它杂项')
|
||||||
|
// ],
|
||||||
|
// ['ShowRecentPosts', 'ShowRecentComments', 'ShowCategory', 'ShowArchive', 'ShowOther'],
|
||||||
|
// _t('侧边栏显示')
|
||||||
|
// );
|
||||||
|
|
||||||
|
// $form->addInput($sidebarBlock->multiMode());
|
||||||
|
$friendLink = new Typecho_Widget_Helper_Form_Element_Textarea('friendLink', NULL, NULL, _t('页脚友情链接'));
|
||||||
|
$form->addInput($friendLink);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取文章缩略图,没有则随机
|
||||||
|
function get_ArticleThumbnail($widget){
|
||||||
|
// 当文章无图片时的随机缩略图
|
||||||
|
$rand = mt_rand(1, 5); // 随机 1-9 张缩略图
|
||||||
|
// 缩略图加速
|
||||||
|
$rand_url;
|
||||||
|
if(!empty(Helper::options()->articleImgSpeed)){
|
||||||
|
$rand_url = Helper::options()->articleImgSpeed;
|
||||||
|
}else {
|
||||||
|
$rand_url = $widget->widget('Widget_Options')->themeUrl . '/img/articles/';
|
||||||
|
}
|
||||||
|
$random = $rand_url . $rand . '.avif'; // 随机缩略图路径
|
||||||
|
|
||||||
|
$attach = $widget->attachments(1)->attachment;
|
||||||
|
$pattern = '/\<img.*?src\=\"(.*?)\"[^>]*>/i';
|
||||||
|
|
||||||
|
//如果有自定义缩略图
|
||||||
|
if($widget->fields->thumb) {
|
||||||
|
return $widget->fields->thumb;
|
||||||
|
}else if (preg_match_all($pattern, $widget->content, $thumbUrl) && strlen($thumbUrl[1][0]) > 7) {
|
||||||
|
return $thumbUrl[1][0];
|
||||||
|
} else if ($attach->isImage) {
|
||||||
|
return $attach->url;
|
||||||
|
} else {
|
||||||
|
return $random;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//在线人数
|
||||||
|
function online_users() {
|
||||||
|
$filename='online.txt'; //数据文件
|
||||||
|
$cookiename='Nanlon_OnLineCount'; //Cookie名称
|
||||||
|
$onlinetime=30; //在线有效时间
|
||||||
|
$online=file($filename);
|
||||||
|
$nowtime=$_SERVER['REQUEST_TIME'];
|
||||||
|
$nowonline=array();
|
||||||
|
foreach($online as $line){
|
||||||
|
$row=explode('|',$line);
|
||||||
|
$sesstime=trim($row[1]);
|
||||||
|
if(($nowtime - $sesstime)<=$onlinetime){
|
||||||
|
$nowonline[$row[0]]=$sesstime;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(isset($_COOKIE[$cookiename])){
|
||||||
|
$uid=$_COOKIE[$cookiename];
|
||||||
|
}else{
|
||||||
|
$vid=0;
|
||||||
|
do{
|
||||||
|
$vid++;
|
||||||
|
$uid='U'.$vid;
|
||||||
|
}while(array_key_exists($uid,$nowonline));
|
||||||
|
setcookie($cookiename,$uid);
|
||||||
|
}
|
||||||
|
$nowonline[$uid]=$nowtime;
|
||||||
|
$total_online=count($nowonline);
|
||||||
|
if($fp=@fopen($filename,'w')){
|
||||||
|
if(flock($fp,LOCK_EX)){
|
||||||
|
rewind($fp);
|
||||||
|
foreach($nowonline as $fuid=>$ftime){
|
||||||
|
$fline=$fuid.'|'.$ftime."\n";
|
||||||
|
@fputs($fp,$fline);
|
||||||
|
}
|
||||||
|
flock($fp,LOCK_UN);
|
||||||
|
fclose($fp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
echo "$total_online";
|
||||||
|
}
|
||||||
|
|
||||||
|
// 首页区块预留函数
|
||||||
|
function getNextNumber() {
|
||||||
|
static $counter = 00; // 声明一个静态变量 $counter,并在第一次调用时初始化为0
|
||||||
|
$counter++; // 每次调用时递增 $counter
|
||||||
|
return str_pad($counter, 2, '0', STR_PAD_LEFT); // 返回递增后的值
|
||||||
|
}
|
||||||
|
/* 根据评论agent获取设备类型 */
|
||||||
|
function _getAgentOS($agent)
|
||||||
|
{
|
||||||
|
$os = "Linux";
|
||||||
|
if (preg_match('/win/i', $agent)) {
|
||||||
|
if (preg_match('/nt 6.0/i', $agent)) {
|
||||||
|
$os = 'Windows Vista';
|
||||||
|
} else if (preg_match('/nt 6.1/i', $agent)) {
|
||||||
|
$os = 'Windows 7';
|
||||||
|
} else if (preg_match('/nt 6.2/i', $agent)) {
|
||||||
|
$os = 'Windows 8';
|
||||||
|
} else if (preg_match('/nt 6.3/i', $agent)) {
|
||||||
|
$os = 'Windows 8.1';
|
||||||
|
} else if (preg_match('/nt 5.1/i', $agent)) {
|
||||||
|
$os = 'Windows XP';
|
||||||
|
} else if (preg_match('/nt 10.0/i', $agent)) {
|
||||||
|
$os = 'Windows 10';
|
||||||
|
} else {
|
||||||
|
$os = 'Windows X64';
|
||||||
|
}
|
||||||
|
} else if (preg_match('/android/i', $agent)) {
|
||||||
|
if (preg_match('/android 9/i', $agent)) {
|
||||||
|
$os = 'Android Pie';
|
||||||
|
} else if (preg_match('/android 8/i', $agent)) {
|
||||||
|
$os = 'Android Oreo';
|
||||||
|
} else {
|
||||||
|
$os = 'Android';
|
||||||
|
}
|
||||||
|
} else if (preg_match('/ubuntu/i', $agent)) {
|
||||||
|
$os = 'Ubuntu';
|
||||||
|
} else if (preg_match('/linux/i', $agent)) {
|
||||||
|
$os = 'Linux';
|
||||||
|
} else if (preg_match('/iPhone/i', $agent)) {
|
||||||
|
$os = 'iPhone';
|
||||||
|
} else if (preg_match('/mac/i', $agent)) {
|
||||||
|
$os = 'MacOS';
|
||||||
|
} else if (preg_match('/fusion/i', $agent)) {
|
||||||
|
$os = 'Android';
|
||||||
|
} else {
|
||||||
|
$os = 'Linux';
|
||||||
|
}
|
||||||
|
echo $os;
|
||||||
|
}
|
||||||
|
/* 根据评论agent获取浏览器类型 */
|
||||||
|
function _getAgentBrowser($agent)
|
||||||
|
{
|
||||||
|
if (preg_match('/MSIE\s([^\s|;]+)/i', $agent, $regs)) {
|
||||||
|
$outputer = 'Internet Explore';
|
||||||
|
} else if (preg_match('/FireFox\/([^\s]+)/i', $agent, $regs)) {
|
||||||
|
$outputer = 'FireFox';
|
||||||
|
} else if (preg_match('/Maxthon([\d]*)\/([^\s]+)/i', $agent, $regs)) {
|
||||||
|
$outputer = 'MicroSoft Edge';
|
||||||
|
} else if (preg_match('#360([a-zA-Z0-9.]+)#i', $agent, $regs)) {
|
||||||
|
$outputer = '360 Fast Browser';
|
||||||
|
} else if (preg_match('/Edge([\d]*)\/([^\s]+)/i', $agent, $regs)) {
|
||||||
|
$outputer = 'MicroSoft Edge';
|
||||||
|
} else if (preg_match('/UC/i', $agent)) {
|
||||||
|
$outputer = 'UC Browser';
|
||||||
|
} else if (preg_match('/QQ/i', $agent, $regs) || preg_match('/QQ Browser\/([^\s]+)/i', $agent, $regs)) {
|
||||||
|
$outputer = 'QQ Browser';
|
||||||
|
} else if (preg_match('/UBrowser/i', $agent, $regs)) {
|
||||||
|
$outputer = 'UC Browser';
|
||||||
|
} else if (preg_match('/Opera[\s|\/]([^\s]+)/i', $agent, $regs)) {
|
||||||
|
$outputer = 'Opera';
|
||||||
|
} else if (preg_match('/Chrome([\d]*)\/([^\s]+)/i', $agent, $regs)) {
|
||||||
|
$outputer = 'Google Chrome';
|
||||||
|
} else if (preg_match('/safari\/([^\s]+)/i', $agent, $regs)) {
|
||||||
|
$outputer = 'Safari';
|
||||||
|
} else {
|
||||||
|
$outputer = 'Google Chrome';
|
||||||
|
}
|
||||||
|
echo $outputer;
|
||||||
|
}
|
||||||
|
/* 获取父级评论 */
|
||||||
|
function _getParentReply($parent)
|
||||||
|
{
|
||||||
|
if ($parent !== "0") {
|
||||||
|
$db = Typecho_Db::get();
|
||||||
|
$commentInfo = $db->fetchRow($db->select('author')->from('table.comments')->where('coid = ?', $parent));
|
||||||
|
if (!empty($commentInfo['author'])) {
|
||||||
|
echo '<div class="parent"><span style="vertical-align: 1px;">@</span> ' . $commentInfo['author'] . '</div>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* 过滤短代码 */
|
||||||
|
function _checkXSS($text)
|
||||||
|
{
|
||||||
|
$isXss = false;
|
||||||
|
$list = array(
|
||||||
|
'/onabort/is',
|
||||||
|
'/onblur/is',
|
||||||
|
'/onchange/is',
|
||||||
|
'/onclick/is',
|
||||||
|
'/ondblclick/is',
|
||||||
|
'/onerror/is',
|
||||||
|
'/onfocus/is',
|
||||||
|
'/onkeydown/is',
|
||||||
|
'/onkeypress/is',
|
||||||
|
'/onkeyup/is',
|
||||||
|
'/onload/is',
|
||||||
|
'/onmousedown/is',
|
||||||
|
'/onmousemove/is',
|
||||||
|
'/onmouseout/is',
|
||||||
|
'/onmouseover/is',
|
||||||
|
'/onmouseup/is',
|
||||||
|
'/onreset/is',
|
||||||
|
'/onresize/is',
|
||||||
|
'/onselect/is',
|
||||||
|
'/onsubmit/is',
|
||||||
|
'/onunload/is',
|
||||||
|
'/eval/is',
|
||||||
|
'/ascript:/is',
|
||||||
|
'/style=/is',
|
||||||
|
'/width=/is',
|
||||||
|
'/width:/is',
|
||||||
|
'/height=/is',
|
||||||
|
'/height:/is',
|
||||||
|
'/src=/is',
|
||||||
|
);
|
||||||
|
if (strip_tags($text)) {
|
||||||
|
for ($i = 0; $i < count($list); $i++) {
|
||||||
|
if (preg_match($list[$i], $text) > 0) {
|
||||||
|
$isXss = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$isXss = true;
|
||||||
|
};
|
||||||
|
return $isXss;
|
||||||
|
}
|
||||||
|
/* 过滤表情 */
|
||||||
|
function _parseReply($text)
|
||||||
|
{
|
||||||
|
|
||||||
|
$text = preg_replace_callback(
|
||||||
|
'/\:\#\(\s*(doge|亲亲|偷笑|再见|发怒|发财|可爱|吐血|呆|呕吐|困|坏笑|大佬|大哭|委屈|害羞|尴尬|微笑|思考|惊吓|打脸|抓狂|抠鼻子|斜眼笑|无奈|晕|流汗|流鼻血|点赞|生气|生病|疑问|白眼|睡着|笑哭|腼腆|色|调皮|鄙视|闭嘴|难过|馋|黑人问号|鼓掌)\s*\)/is',
|
||||||
|
function ($match) {
|
||||||
|
return '<img class="owo_image lazyload" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="' . Helper::options()->themeUrl . '/assets/owo/bilibili/' . str_replace('%', '', urlencode($match[1])) . '.gif" alt="小电视"/>';
|
||||||
|
},
|
||||||
|
$text
|
||||||
|
);
|
||||||
|
$text = preg_replace_callback(
|
||||||
|
'/\:\$\(\s*(3d眼镜|EDG|LPL|beluga|不好意思|不服吗|亲亲|伞兵|倚墙笑|值得肯定|偷偷看|傻笑|再见|出家人|击剑|加班|勉强笑|危险|发红包|吃手|吃瓜|吐血|吵架|呦吼|呲牙笑|哈士奇|哈士奇失去意识|哈士奇失望|哭泣|唱歌|喜欢|嘿哈|大笑|失去信号|失望|头秃|奋斗|好奇|好的|害羞|小丑|小偷|尬笑|尴尬|应援|开心|引起不适|微笑|思考|恶心|恶魔|恶魔恐惧|惊吓|惊吓白眼|惊讶|惬意|感动|愤怒|我看好你|手机相机|打咩|打牌|托腮|扶额|抠鼻|抬眼镜|拜托|捂嘴笑|捂脸|擦汗|放鞭炮|敬礼|整理发型|斗鸡眼|智慧的眼神|月饼|有没有搞错|正确|没招|波吉|泪奔|流汗微笑|流鼻涕|深思|滑稽|滑稽吃瓜|滑稽喝水|滑稽奶茶|滑稽柠檬|滑稽狂汗|滑稽被子|烦恼|熊熊|熊猫|熊猫唱歌|熊猫喜欢|熊猫失望|熊猫意外|熬夜|爆炸|牛年进宝|狂热|狗头|狗头围脖|狗头失望|狗头意外|狗头胖次|狗头花|狗头草|猪头|猪头意外|生病|电话|疑问|疼痛|痛哭|看穿一切|眩晕|睡觉|禁言|笑哭|纠结|绿帽|缺牙笑|翻白眼|老虎意外|耍酷|胡子|菜狗|菜狗花|蒙面滑稽|虎年进宝|被打|裂开|警告|读书|财神红包|超爱|这是啥|送福|送花|错误|阴险|难以置信|面具|饥渴|鬼脸|黑线|鼓掌)\s*\)/is',
|
||||||
|
function ($match) {
|
||||||
|
return '<img class="owo_image lazyload" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="' . Helper::options()->themeUrl . '/assets/owo/Heo/' . str_replace('%', '', urlencode($match[1])) . '.gif" alt="Heo"/>';
|
||||||
|
},
|
||||||
|
$text
|
||||||
|
);
|
||||||
|
$text = preg_replace_callback(
|
||||||
|
'/\:\:\(\s*(呵呵|哈哈|吐舌|太开心|笑眼|花心|小乖|乖|捂嘴笑|滑稽|你懂的|不高兴|怒|汗|黑线|泪|真棒|喷|惊哭|阴险|鄙视|酷|啊|狂汗|what|疑问|酸爽|呀咩爹|委屈|惊讶|睡觉|笑尿|挖鼻|吐|犀利|小红脸|懒得理|勉强|爱心|心碎|玫瑰|礼物|彩虹|太阳|星星月亮|钱币|茶杯|蛋糕|大拇指|胜利|haha|OK|沙发|手纸|香蕉|便便|药丸|红领巾|蜡烛|音乐|灯泡|开心|钱|咦|呼|冷|生气|弱|吐血|狗头)\s*\)/is',
|
||||||
|
function ($match) {
|
||||||
|
return '<img class="owo_image lazyload" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="' . Helper::options()->themeUrl . '/assets/owo/paopao/' . str_replace('%', '', urlencode($match[1])) . '_2x.png" alt="表情"/>';
|
||||||
|
},
|
||||||
|
$text
|
||||||
|
);
|
||||||
|
$text = preg_replace_callback(
|
||||||
|
'/\:\@\(\s*(高兴|小怒|脸红|内伤|装大款|赞一个|害羞|汗|吐血倒地|深思|不高兴|无语|亲亲|口水|尴尬|中指|想一想|哭泣|便便|献花|皱眉|傻笑|狂汗|吐|喷水|看不见|鼓掌|阴暗|长草|献黄瓜|邪恶|期待|得意|吐舌|喷血|无所谓|观察|暗地观察|肿包|中枪|大囧|呲牙|抠鼻|不说话|咽气|欢呼|锁眉|蜡烛|坐等|击掌|惊喜|喜极而泣|抽烟|不出所料|愤怒|无奈|黑线|投降|看热闹|扇耳光|小眼睛|中刀)\s*\)/is',
|
||||||
|
function ($match) {
|
||||||
|
return '<img class="owo_image lazyload" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="' . Helper::options()->themeUrl . '/assets/owo/aru/' . str_replace('%', '', urlencode($match[1])) . '_2x.png" alt="表情"/>';
|
||||||
|
},
|
||||||
|
$text
|
||||||
|
);
|
||||||
|
return $text;
|
||||||
|
}
|
||||||
|
/* 过滤评论回复 */
|
||||||
|
function _parseCommentReply($text)
|
||||||
|
{
|
||||||
|
if (_checkXSS($text)) {
|
||||||
|
echo "该回复疑似异常,已被系统拦截!";
|
||||||
|
} else {
|
||||||
|
$text = _parseReply($text);
|
||||||
|
echo preg_replace('/\{!\{([^\"]*)\}!\}/', '<img class="lazyload draw_image" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="$1" alt="画图"/>', $text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function yiyan() {
|
||||||
|
$url = 'https://api.oddfar.com/yl/q.php?c=2004&encode=text';
|
||||||
|
$result = null;
|
||||||
|
$response = file_get_contents($url);
|
||||||
|
echo $response;
|
||||||
|
}
|
||||||
|
|
||||||
|
function threadedComments($comments, $options)
|
||||||
|
{ ?>
|
||||||
|
|
||||||
|
<li class="comment comment-parent comment-odd comment-by-user">
|
||||||
|
<div class="comment-body">
|
||||||
|
|
||||||
|
<div class="comment-author">
|
||||||
|
<span class="author">
|
||||||
|
<img width="48" height="48" class="avatar lazyload" src="https://q.qlogo.cn/headimg_dl?dst_uin=<?php echo $comments->mail ?>@qq.com&spec=640&img_type=jpg" data-src="https://q.qlogo.cn/headimg_dl?dst_uin=<?php echo $comments->mail ?>@qq.com&spec=640&img_type=jpg" alt="头像" /><?php $comments->author(); ?></span>
|
||||||
|
<?php if ($comments->authorId === $comments->ownerId) : ?>
|
||||||
|
<i class="master">作者</i>
|
||||||
|
<?php endif; ?>
|
||||||
|
<?php if ($comments->status === "waiting") : ?>
|
||||||
|
<em class="waiting">(评论审核中...)</em>
|
||||||
|
<?php endif; ?>
|
||||||
|
</div>
|
||||||
|
<p>
|
||||||
|
<?php _getParentReply($comments->parent) ?>
|
||||||
|
<?php echo _parseCommentReply($comments->content); ?>
|
||||||
|
</p>
|
||||||
|
<div class="handle">
|
||||||
|
<time class="date" datetime="<?php $comments->date('Y-m-d'); ?>"><?php $comments->date('Y-m-d'); ?></time>
|
||||||
|
<span class="comment-reply" data-no-instant><?php $comments->reply('回复'); ?></span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<?php if ($comments->children) : ?>
|
||||||
|
<div class="comment-list__item-children">
|
||||||
|
<?php $comments->threadedComments($options); ?>
|
||||||
|
</div>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
<?php } ?>
|
265
header.php
Normal file
265
header.php
Normal file
@ -0,0 +1,265 @@
|
|||||||
|
<?php if (!defined('__TYPECHO_ROOT_DIR__')) exit; ?>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="zxx">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<title><?php $this->archiveTitle([
|
||||||
|
'category' => _t('分类 %s 下的文章'),
|
||||||
|
'search' => _t('包含关键字 %s 的文章'),
|
||||||
|
'tag' => _t('标签 %s 下的文章'),
|
||||||
|
'author' => _t('%s 发布的文章')
|
||||||
|
], '', ' - '); ?><?php $this->options->title(); ?></title>
|
||||||
|
<meta name="description" content="<?php $this->options->description(); ?>">
|
||||||
|
<meta name="keywords" content="<?php $this->options->keywords(); ?>">
|
||||||
|
<link rel="icon" type="image/x-icon" href="<?php $this->options->favicon(); ?>">
|
||||||
|
<meta charset="<?php $this->options->charset(); ?>">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||||
|
<!-- bootstrap css -->
|
||||||
|
<link rel="stylesheet" href="<?php $this->options->themeUrl('/css/plugins/bootstrap.min.css'); ?>">
|
||||||
|
<!-- locomotive scroll css -->
|
||||||
|
<link rel="stylesheet" href="<?php $this->options->themeUrl('/css/plugins/locomotive-scroll.css'); ?>">
|
||||||
|
<!-- swiper css -->
|
||||||
|
<link rel="stylesheet" href="<?php $this->options->themeUrl('/css/plugins/swiper.min.css'); ?>">
|
||||||
|
<!-- fancybox css -->
|
||||||
|
<link rel="stylesheet" href="<?php $this->options->themeUrl('/css/plugins/fancybox.min.css'); ?>">
|
||||||
|
<!-- font awesome css -->
|
||||||
|
<link rel="stylesheet" href="<?php $this->options->themeUrl('/css/plugins/font-awesome.min.css'); ?>">
|
||||||
|
<!-- Semporia dark mode css <link rel="stylesheet" href="css/style-dark.css">-->
|
||||||
|
<!-- Semporia light mode css -->
|
||||||
|
<link rel="stylesheet" href="<?php $this->options->themeUrl('/css/style-light.css'); ?>" id="trm-switch-style">
|
||||||
|
<link rel="stylesheet" href="<?php $this->options->themeUrl('/style.css'); ?>" id="style">
|
||||||
|
<style>
|
||||||
|
:root{
|
||||||
|
--light-color:<?php $this->options->light() ?>;
|
||||||
|
--dark-color:<?php $this->options->dark() ?>;
|
||||||
|
}
|
||||||
|
path {
|
||||||
|
fill: #fff;
|
||||||
|
}
|
||||||
|
.markdown-body h1, .markdown-body h2, .markdown-body h3, .markdown-body h4, .markdown-body h5, .markdown-body h6 {
|
||||||
|
margin-top: 24px;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 1.25;
|
||||||
|
}
|
||||||
|
.markdown-body p, .markdown-body blockquote, .markdown-body ul, .markdown-body ol, .markdown-body dl, .markdown-body table, .markdown-body pre, .markdown-body details {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
.task-list-item {
|
||||||
|
list-style-type: none;
|
||||||
|
}
|
||||||
|
.task-list-item-checkbox {
|
||||||
|
margin: 0 0.2em 0.25em -1.6em;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
.markdown-body pre {
|
||||||
|
padding: 16px;
|
||||||
|
overflow: auto;
|
||||||
|
font-size: 85%;
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: 1.45;
|
||||||
|
color: #FFFFFF;
|
||||||
|
background-color: rgba(0, 0, 0, 0.6);
|
||||||
|
border-radius: 6px;
|
||||||
|
}
|
||||||
|
.markdown-body pre code, .markdown-body pre tt {
|
||||||
|
display: inline;
|
||||||
|
max-width: auto;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
overflow: visible;
|
||||||
|
line-height: inherit;
|
||||||
|
word-wrap: normal;
|
||||||
|
background-color: transparent;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<?php $this->header(); ?>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<!-- app wrapper -->
|
||||||
|
<div class="trm-app-frame">
|
||||||
|
<!-- page preloader -->
|
||||||
|
<div class="trm-preloader">
|
||||||
|
<div class="trm-holder">
|
||||||
|
<div class="preloader">
|
||||||
|
<div></div>
|
||||||
|
<div></div>
|
||||||
|
<div></div>
|
||||||
|
<div></div>
|
||||||
|
<div></div>
|
||||||
|
<div></div>
|
||||||
|
<div></div>
|
||||||
|
<div></div>
|
||||||
|
<div></div>
|
||||||
|
<div></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- page preloader end -->
|
||||||
|
<!-- change mode preloader -->
|
||||||
|
<div class="trm-mode-swich-animation-frame">
|
||||||
|
<div class="trm-mode-swich-animation"><i class="far fa-sun"></i>
|
||||||
|
<div class="trm-horizon"></div>
|
||||||
|
<i class="far fa-moon"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- change mode preloader end -->
|
||||||
|
<!-- scroll container -->
|
||||||
|
<div id="trm-dynamic-content" class="trm-swup-animation">
|
||||||
|
<div id="trm-scroll-container" class="trm-scroll-container" data-scroll-container style="opacity: 0">
|
||||||
|
<div data-scroll-section id="content" class="trm-scroll-section">
|
||||||
|
<!-- top bar -->
|
||||||
|
<div class="trm-top-bar" data-scroll data-scroll-sticky data-scroll-target="#content" data-scroll-offset="-10">
|
||||||
|
<div class="container">
|
||||||
|
<div class="trm-left-side">
|
||||||
|
<!-- logo -->
|
||||||
|
<a href="<?php $this->options->siteUrl(); ?>" class="trm-logo-frame trm-anima-link">
|
||||||
|
<div class="trm-logo-text">
|
||||||
|
<span>
|
||||||
|
<img src="<?php $this->options->logoUrl() ?>" alt="<?php $this->options->title() ?>"/>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
<!-- logo end -->
|
||||||
|
</div>
|
||||||
|
<div class="trm-right-side">
|
||||||
|
<!-- menu -->
|
||||||
|
<div class="trm-menu">
|
||||||
|
<nav>
|
||||||
|
<ul>
|
||||||
|
<li<?php if ($this->is('index')): ?> class="current-menu-item"<?php endif; ?>>
|
||||||
|
<a<?php if ($this->is('index')): ?><?php endif; ?> href="<?php $this->options->siteUrl(); ?>"><?php _e('首页'); ?></a>
|
||||||
|
</li>
|
||||||
|
<?php \Widget\Contents\Page\Rows::alloc()->to($pages); ?>
|
||||||
|
<?php while ($pages->next()): ?>
|
||||||
|
<li<?php if ($this->is('page', $pages->slug)): ?> class="current-menu-item"<?php endif; ?>><a<?php if ($this->is('page', $pages->slug)): ?><?php endif; ?> href="<?php $pages->permalink(); ?>" title="<?php $pages->title(); ?>"><?php $pages->title(); ?></a></li>
|
||||||
|
<?php endwhile; ?>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
<!-- menu end -->
|
||||||
|
<!-- mode switcher place -->
|
||||||
|
<div class="trm-mode-switcher-place"></div>
|
||||||
|
<!-- mode switcher place end -->
|
||||||
|
<!-- action button -->
|
||||||
|
<!-- <a href="files/cv.txt" download class="trm-btn trm-btn-sm">Download cv <i class="fas fa-arrow-down"></i></a> -->
|
||||||
|
<!-- action button end -->
|
||||||
|
</div>
|
||||||
|
<div class="trm-menu-btn"><span></span></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- top bar end -->
|
||||||
|
<div class="trm-content-start">
|
||||||
|
<!-- banner -->
|
||||||
|
<div class="trm-banner" data-scroll data-scroll-direction="vertical" data-scroll-speed="-1">
|
||||||
|
<!-- 背景 -->
|
||||||
|
<?php if ($this->is('index')): ?>
|
||||||
|
<img src="<?php $this->options->bg1() ?>" alt="banner" class="trm-banner-cover" data-scroll data-scroll-direction="vertical" data-scroll-speed="-4">
|
||||||
|
<?php else: ?>
|
||||||
|
<img src="<?php $this->options->bg2() ?>" alt="banner" class="trm-banner-cover" data-scroll data-scroll-direction="vertical" data-scroll-speed="-4">
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
<div class="trm-banner-content trm-overlay">
|
||||||
|
<div class="container" data-scroll data-scroll-direction="vertical" data-scroll-speed="1">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-4"></div>
|
||||||
|
<div class="col-lg-8">
|
||||||
|
<!-- 首页简介 -->
|
||||||
|
<div class="trm-banner-text">
|
||||||
|
<div class="trm-label trm-mb-20"><?php $this->options->description() ?></div>
|
||||||
|
<h1 class="trm-mb-30">
|
||||||
|
<?php
|
||||||
|
if ($this->is('index')) {
|
||||||
|
// 在首页上显示站点的标题
|
||||||
|
echo $this->options->title();
|
||||||
|
} else {
|
||||||
|
echo $this->title();
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<ul class="trm-breadcrumbs trm-label">
|
||||||
|
<?php if ($this->is('index')): ?><!-- 页面为首页时 -->
|
||||||
|
Latest Post
|
||||||
|
<?php elseif ($this->is('post')): ?><!-- 页面为文章单页时 -->
|
||||||
|
<li><a href="<?php $this->options->siteUrl(); ?>">HOME</a></li><li><?php $this->category(); ?></li><li><span><?php $this->title() ?></span></li>
|
||||||
|
<?php else: ?><!-- 页面为其他页时 -->
|
||||||
|
<li><span><?php $this->archiveTitle('','',''); ?></span></li>
|
||||||
|
<?php endif; ?>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- banner title end -->
|
||||||
|
<!-- scroll hint -->
|
||||||
|
<a href="#about-triger" data-scroll-to="#about-triger" data-scroll-offset="-130"
|
||||||
|
class="trm-scroll-hint-frame">
|
||||||
|
<div class="trm-scroll-hint"></div>
|
||||||
|
<span class="trm-label">向下滚动</span>
|
||||||
|
</a><!-- scroll hint end -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- banner content end -->
|
||||||
|
</div>
|
||||||
|
<!-- banner end -->
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-4">
|
||||||
|
<!-- main card -->
|
||||||
|
<div class="trm-main-card-frame trm-sidebar">
|
||||||
|
<div class="trm-main-card" data-scroll data-scroll-repeat data-scroll-sticky
|
||||||
|
data-scroll-target="#content" data-scroll-offset="60">
|
||||||
|
<!-- 头像区块 已替换成QQ头像 -->
|
||||||
|
<div class="trm-mc-header">
|
||||||
|
<div class="trm-avatar-frame trm-mb-20"><img class="trm-avatar" src="https://q.qlogo.cn/headimg_dl?dst_uin=<?php $this->options->QQ() ?>&spec=640&img_type=jpg"
|
||||||
|
alt="Avatar">
|
||||||
|
<div class="trm-dot"></div>
|
||||||
|
</div>
|
||||||
|
<h5 class="trm-name trm-mb-15"><?php $this->author->screenName(); ?></h5>
|
||||||
|
<div class="trm-label">我是一名 <span class="trm-typed-text">
|
||||||
|
<!-- Words for rotation:js/main.js line 34 -->
|
||||||
|
</span></div>
|
||||||
|
</div>
|
||||||
|
<!-- 头像区块结束 -->
|
||||||
|
<div class="trm-divider trm-mb-40 trm-mt-40"></div>
|
||||||
|
<!-- 头像下方图标区块 -->
|
||||||
|
<div class="trm-social">
|
||||||
|
<a href="https://wpa.qq.com/wpa_jump_page?v=3&uin=<?php $this->options->QQ() ?>&site=qq&menu=yes" target="_blank"><i class="fab fa-qq"></i></a>
|
||||||
|
<a href="<?php $this->options->github() ?>" target="_blank"><i class="fab fa-github"></i></a>
|
||||||
|
<a href="<?php $this->options->telegraph() ?>" target="_blank"><i class="fab fa-telegram"></i></a>
|
||||||
|
<a href="<?php $this->options->twitter() ?>" target="_blank"><i class="fab fa-twitter"></i></a>
|
||||||
|
</div>
|
||||||
|
<!-- 头像图标区块结束 -->
|
||||||
|
<!-- <div class="trm-divider trm-mb-40 trm-mt-40"></div> -->
|
||||||
|
<!-- info -->
|
||||||
|
<!-- <ul class="trm-table trm-mb-20">
|
||||||
|
<li>
|
||||||
|
<div class="trm-label">Residence:</div>
|
||||||
|
<div class="trm-label trm-label-light">Home</div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<div class="trm-label">City:</div>
|
||||||
|
<div class="trm-label trm-label-light">Cheng Du</div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<div class="trm-label">Age:</div>
|
||||||
|
<div class="trm-label trm-label-light">29</div>
|
||||||
|
</li>
|
||||||
|
</ul> -->
|
||||||
|
<!-- info end -->
|
||||||
|
<div class="trm-divider trm-mb-40 trm-mt-40"></div>
|
||||||
|
<!-- 头像下方按钮 -->
|
||||||
|
<div class="text-center">
|
||||||
|
<a href="mailto:<?php $this->options->email() ?>" class="trm-btn">联系我 <i class="far fa-envelope"></i></a>
|
||||||
|
<!-- <a data-fancybox href="#trm-order" class="trm-btn">Contact me <i class="far fa-envelope"></i></a> -->
|
||||||
|
</div>
|
||||||
|
<!-- 头像下方按钮结束 -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- main card end -->
|
||||||
|
</div>
|
BIN
img/articles/1.avif
Normal file
BIN
img/articles/1.avif
Normal file
Binary file not shown.
BIN
img/articles/2.avif
Normal file
BIN
img/articles/2.avif
Normal file
Binary file not shown.
BIN
img/articles/3.avif
Normal file
BIN
img/articles/3.avif
Normal file
Binary file not shown.
BIN
img/articles/4.avif
Normal file
BIN
img/articles/4.avif
Normal file
Binary file not shown.
BIN
img/articles/5.avif
Normal file
BIN
img/articles/5.avif
Normal file
Binary file not shown.
1
img/null.svg
Normal file
1
img/null.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 4.9 KiB |
121
index.php
Normal file
121
index.php
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* DearLicy
|
||||||
|
*
|
||||||
|
* @package Typecho DearLicy Theme
|
||||||
|
* @author 李初一
|
||||||
|
* @version 1.0 Bate1
|
||||||
|
* @link https://www.vxras.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (!defined('__TYPECHO_ROOT_DIR__')) exit;
|
||||||
|
$this->need('header.php');
|
||||||
|
?>
|
||||||
|
|
||||||
|
<div class="col-lg-8">
|
||||||
|
<!-- content -->
|
||||||
|
<div class="trm-content" id="trm-content">
|
||||||
|
<div data-scroll data-scroll-repeat data-scroll-offset="500" id="about-triger">
|
||||||
|
</div>
|
||||||
|
<!-- stats -->
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-4">
|
||||||
|
<!-- counter -->
|
||||||
|
<?php Typecho_Widget::widget('Widget_Stat')->to($stat); ?>
|
||||||
|
<div class="trm-counter-up trm-scroll-animation" data-scroll data-scroll-offset="40">
|
||||||
|
<div class="trm-counter-number">
|
||||||
|
<span class="trm-counter"><?php $stat->publishedPostsNum() ?></span>
|
||||||
|
<span class="trm-counter-symbol">✔</span>
|
||||||
|
</div>
|
||||||
|
<div class="trm-divider trm-mb-20 trm-mt-20"></div>
|
||||||
|
<div class="trm-label">文章总数</div>
|
||||||
|
</div>
|
||||||
|
<!-- counter end -->
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-4">
|
||||||
|
<!-- counter -->
|
||||||
|
<div class="trm-counter-up trm-scroll-animation" data-scroll data-scroll-offset="40">
|
||||||
|
<div class="trm-counter-number"><span class="trm-counter"><?php $stat->publishedCommentsNum() ?></span>
|
||||||
|
<span class="trm-counter-symbol">✔</span></div>
|
||||||
|
<div class="trm-divider trm-mb-20 trm-mt-20"></div>
|
||||||
|
<div class="trm-label">评论总数</div>
|
||||||
|
</div>
|
||||||
|
<!-- counter end -->
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-4">
|
||||||
|
<!-- counter -->
|
||||||
|
<div class="trm-counter-up trm-scroll-animation" data-scroll data-scroll-offset="40">
|
||||||
|
<div class="trm-counter-number"><span class="trm-counter"><?php echo online_users() ?></span>
|
||||||
|
<span class="trm-counter-symbol">✔</span></div>
|
||||||
|
<div class="trm-divider trm-mb-20 trm-mt-20"></div>
|
||||||
|
<div class="trm-label">在线人数</div>
|
||||||
|
</div>
|
||||||
|
<!-- counter end -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- stats end -->
|
||||||
|
<!-- text -->
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<!-- title -->
|
||||||
|
<h5 class="trm-mb-40 trm-title-with-divider">介绍 <span data-number="<?php echo getNextNumber() ?>"></span></h5>
|
||||||
|
<!-- quote -->
|
||||||
|
<blockquote class="trm-scroll-animation" data-scroll data-scroll-offset="40"><?php $this->options->desc() ?></blockquote>
|
||||||
|
<!-- quote end -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- text end -->
|
||||||
|
<!-- video resume -->
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<!-- title -->
|
||||||
|
<h5 class="trm-mb-40 trm-mt-40 trm-title-with-divider">视频<span data-number="<?php echo getNextNumber() ?>"></span></h5>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<!-- video -->
|
||||||
|
<div class="trm-video trm-scroll-animation" data-scroll data-scroll-offset="40">
|
||||||
|
<div class="trm-video-content trm-overlay"><img src="https://typecho.vxras.com/usr/themes/DearLicy/img/articles/1.avif" alt="video-cover">
|
||||||
|
<div class="trm-button-puls"></div>
|
||||||
|
<a data-fancybox="" href="https://youtu.be/8vZJYFC6GOo" class="trm-play-button"><i class="fas fa-play"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- video end -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- video resume end -->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- blog -->
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<!-- title -->
|
||||||
|
<h5 class="trm-mb-40 trm-mt-40 trm-title-with-divider">最新发布 <span data-number="<?php echo getNextNumber() ?>"></span>
|
||||||
|
</h5>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- blog card -->
|
||||||
|
<?php while ($this->next()): ?>
|
||||||
|
<div class="col-lg-6">
|
||||||
|
<div class="trm-blog-card trm-scroll-animation" data-scroll data-scroll-offset="40">
|
||||||
|
<a class="trm-cover-frame trm-anima-link" href="<?php $this->permalink() ?>" title="<?php $this->title() ?>">
|
||||||
|
<?php $thumbnailUrl = get_ArticleThumbnail($this); if ($thumbnailUrl): ?>
|
||||||
|
<img src="<?php echo htmlspecialchars($thumbnailUrl); ?>" alt="文章缩略图">
|
||||||
|
<?php endif; ?>
|
||||||
|
</a>
|
||||||
|
<div class="trm-card-descr">
|
||||||
|
<h5 class="trm-mb-20"><a class="trm-anima-link" href="<?php $this->permalink() ?>" title="<?php $this->title() ?>"><?php $this->title() ?></a></h5>
|
||||||
|
<div class="trm-divider trm-mb-20 trm-mt-20"></div>
|
||||||
|
<ul class="trm-card-data trm-label">
|
||||||
|
<li datetime="<?php $this->date('c'); ?>" itemprop="datePublished"><?php $this->date(); ?></li>
|
||||||
|
<li><?php $this->category(','); ?></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?php endwhile; ?>
|
||||||
|
|
||||||
|
<?php $this->pageNav('« 前一页', '后一页 »'); ?>
|
||||||
|
</div><!-- end #main-->
|
||||||
|
|
||||||
|
<?php /*$this->need('sidebar.php');*/ ?>
|
||||||
|
<?php $this->need('footer.php'); ?>
|
79
js/copy.js
Normal file
79
js/copy.js
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
//html5 给typecho添加 复制代码 功能
|
||||||
|
// by 兔子昂
|
||||||
|
var codeblocks = document.getElementsByTagName("pre")
|
||||||
|
//循环每个pre代码块,并添加 复制代码
|
||||||
|
|
||||||
|
for (var i = 0; i < codeblocks.length; i++) {
|
||||||
|
//显示 复制代码 按钮
|
||||||
|
currentCode = codeblocks[i]
|
||||||
|
currentCode.style = "position: relative;"
|
||||||
|
var copy = document.createElement("div")
|
||||||
|
copy.style = "position: absolute;right: 4px;\
|
||||||
|
top: 4px;padding: 2px 8px;\
|
||||||
|
margin: 8px;border-radius: 4px;cursor: pointer;"
|
||||||
|
copy.innerHTML = '<svg t="1716432820088" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4617" width="20" height="20"><path d="M672 832 224 832c-52.928 0-96-43.072-96-96L128 160c0-52.928 43.072-96 96-96l448 0c52.928 0 96 43.072 96 96l0 576C768 788.928 724.928 832 672 832zM224 128C206.368 128 192 142.368 192 160l0 576c0 17.664 14.368 32 32 32l448 0c17.664 0 32-14.336 32-32L704 160c0-17.632-14.336-32-32-32L224 128z" fill="#5E6570" p-id="4618"></path><path d="M800 960 320 960c-17.664 0-32-14.304-32-32s14.336-32 32-32l480 0c17.664 0 32-14.336 32-32L832 256c0-17.664 14.304-32 32-32s32 14.336 32 32l0 608C896 916.928 852.928 960 800 960z" fill="#5E6570" p-id="4619"></path><path d="M544 320 288 320c-17.664 0-32-14.336-32-32s14.336-32 32-32l256 0c17.696 0 32 14.336 32 32S561.696 320 544 320z" fill="#5E6570" p-id="4620"></path><path d="M608 480 288.032 480c-17.664 0-32-14.336-32-32s14.336-32 32-32L608 416c17.696 0 32 14.336 32 32S625.696 480 608 480z" fill="#5E6570" p-id="4621"></path><path d="M608 640 288 640c-17.664 0-32-14.304-32-32s14.336-32 32-32l320 0c17.696 0 32 14.304 32 32S625.696 640 608 640z" fill="#5E6570" p-id="4622"></path></svg>'
|
||||||
|
currentCode.appendChild(copy)
|
||||||
|
//让所有 "复制"按钮 全部隐藏
|
||||||
|
copy.style.visibility = "visible"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
for (var i = 0; i < codeblocks.length; i++) {
|
||||||
|
|
||||||
|
|
||||||
|
!function (i) {
|
||||||
|
|
||||||
|
//执行 复制代码 功能
|
||||||
|
function copyArticle(event) {
|
||||||
|
const range = document.createRange();
|
||||||
|
|
||||||
|
//范围是 code,不包括刚才创建的div
|
||||||
|
range.selectNode(codeblocks[i].childNodes[0]);
|
||||||
|
|
||||||
|
const selection = window.getSelection();
|
||||||
|
if (selection.rangeCount > 0) selection.removeAllRanges();
|
||||||
|
selection.addRange(range);
|
||||||
|
document.execCommand('copy');
|
||||||
|
|
||||||
|
codeblocks[i].childNodes[1].innerHTML = "复制成功"
|
||||||
|
setTimeout(function () {
|
||||||
|
codeblocks[i].childNodes[1].innerHTML = '<svg t="1716432820088" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4617" width="20" height="20"><path d="M672 832 224 832c-52.928 0-96-43.072-96-96L128 160c0-52.928 43.072-96 96-96l448 0c52.928 0 96 43.072 96 96l0 576C768 788.928 724.928 832 672 832zM224 128C206.368 128 192 142.368 192 160l0 576c0 17.664 14.368 32 32 32l448 0c17.664 0 32-14.336 32-32L704 160c0-17.632-14.336-32-32-32L224 128z" fill="#5E6570" p-id="4618"></path><path d="M800 960 320 960c-17.664 0-32-14.304-32-32s14.336-32 32-32l480 0c17.664 0 32-14.336 32-32L832 256c0-17.664 14.304-32 32-32s32 14.336 32 32l0 608C896 916.928 852.928 960 800 960z" fill="#5E6570" p-id="4619"></path><path d="M544 320 288 320c-17.664 0-32-14.336-32-32s14.336-32 32-32l256 0c17.696 0 32 14.336 32 32S561.696 320 544 320z" fill="#5E6570" p-id="4620"></path><path d="M608 480 288.032 480c-17.664 0-32-14.336-32-32s14.336-32 32-32L608 416c17.696 0 32 14.336 32 32S625.696 480 608 480z" fill="#5E6570" p-id="4621"></path><path d="M608 640 288 640c-17.664 0-32-14.304-32-32s14.336-32 32-32l320 0c17.696 0 32 14.304 32 32S625.696 640 608 640z" fill="#5E6570" p-id="4622"></path></svg>'
|
||||||
|
}, 1000);
|
||||||
|
//清除选择区
|
||||||
|
if (selection.rangeCount > 0) selection.removeAllRanges(); 0
|
||||||
|
}
|
||||||
|
codeblocks[i].childNodes[1].addEventListener('click', copyArticle, false);
|
||||||
|
|
||||||
|
}(i);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function a(a, b, c) {
|
||||||
|
if (document.selection) a.focus(), sel = document.selection.createRange(), c ? sel.text = b + sel.text + c : sel.text = b, a.focus();
|
||||||
|
else if (a.selectionStart || "0" == a.selectionStart) {
|
||||||
|
var l = a.selectionStart,
|
||||||
|
m = a.selectionEnd,
|
||||||
|
n = m;
|
||||||
|
c ? a.value = a.value.substring(0, l) + b + a.value.substring(l, m) + c + a.value.substring(m, a.value.length) : a.value = a.value.substring(0, l) + b + a.value.substring(m, a.value.length);
|
||||||
|
c ? n += b.length + c.length : n += b.length - m + l;
|
||||||
|
l == m && c && (n -= c.length);
|
||||||
|
a.focus();
|
||||||
|
a.selectionStart = n;
|
||||||
|
a.selectionEnd = n
|
||||||
|
} else a.value += b + c, a.focus()
|
||||||
|
}
|
||||||
|
var b = (new Date).toLocaleTimeString(),
|
||||||
|
c = document.getElementById("textarea") || 0;
|
||||||
|
window.SIMPALED = {};
|
||||||
|
window.SIMPALED.Editor = {
|
||||||
|
daka: function() {
|
||||||
|
a(c, "滴!学生卡!打卡时间:" + b, ",请上车的乘客系好安全带~")
|
||||||
|
},
|
||||||
|
zan: function() {
|
||||||
|
a(c, " 文章写得不错,给你点个赞,继续加油哈!")
|
||||||
|
},
|
||||||
|
cai: function() {
|
||||||
|
a(c, "骚年,我怀疑你写了一篇假的文章!")
|
||||||
|
}
|
||||||
|
};
|
414
js/main.js
Normal file
414
js/main.js
Normal file
@ -0,0 +1,414 @@
|
|||||||
|
$(function() {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
/***************************
|
||||||
|
|
||||||
|
preloader
|
||||||
|
|
||||||
|
***************************/
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
$('php').addClass('is-animating');
|
||||||
|
$(".trm-scroll-container").animate({
|
||||||
|
opacity: 0,
|
||||||
|
});
|
||||||
|
setTimeout(function() {
|
||||||
|
$('php').removeClass('is-animating');
|
||||||
|
$(".trm-scroll-container").animate({
|
||||||
|
opacity: 1,
|
||||||
|
}, 600);
|
||||||
|
}, 1000);
|
||||||
|
});
|
||||||
|
|
||||||
|
/***************************
|
||||||
|
|
||||||
|
swup
|
||||||
|
|
||||||
|
***************************/
|
||||||
|
const options = {
|
||||||
|
containers: ['#trm-dynamic-content'],
|
||||||
|
animateHistoryBrowsing: true,
|
||||||
|
linkSelector: '.trm-menu a:not([data-no-swup]), .trm-anima-link:not([data-no-swup])',
|
||||||
|
animationSelector: '[class="trm-swup-animation"]'
|
||||||
|
};
|
||||||
|
const swup = new Swup(options);
|
||||||
|
/***************************
|
||||||
|
|
||||||
|
menu
|
||||||
|
|
||||||
|
***************************/
|
||||||
|
$('.trm-menu-btn').on('click', function() {
|
||||||
|
$('.trm-menu-btn , .trm-right-side').toggleClass('trm-active');
|
||||||
|
})
|
||||||
|
$('.trm-menu ul li a').on('click', function() {
|
||||||
|
$('.trm-menu-btn , .trm-right-side').removeClass('trm-active');
|
||||||
|
})
|
||||||
|
/***************************
|
||||||
|
|
||||||
|
mode switch
|
||||||
|
|
||||||
|
***************************/
|
||||||
|
$('.trm-mode-switcher').clone().appendTo('.trm-mode-switcher-place');
|
||||||
|
$('#trm-swich').change(function() {
|
||||||
|
if (this.checked) {
|
||||||
|
$('.trm-hidden-switcher input').prop("checked", true);
|
||||||
|
$('.trm-mode-swich-animation-frame').addClass('trm-active');
|
||||||
|
$("#trm-scroll-container").animate({
|
||||||
|
opacity: 0,
|
||||||
|
}, 600, function() {
|
||||||
|
setTimeout(function() {
|
||||||
|
$('.trm-mode-swich-animation').addClass('trm-active');
|
||||||
|
$("#trm-switch-style").attr("href", "/usr/themes/DearLicy/css/style-dark.css");
|
||||||
|
}, 200);
|
||||||
|
setTimeout(function() {
|
||||||
|
$('.trm-mode-swich-animation-frame').removeClass('trm-active');
|
||||||
|
$("#trm-scroll-container").animate({
|
||||||
|
opacity: 1,
|
||||||
|
}, 600);
|
||||||
|
}, 1000);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
$('.trm-hidden-switcher input').prop("checked", false);
|
||||||
|
$('.trm-mode-swich-animation-frame').addClass('trm-active');
|
||||||
|
$("#trm-scroll-container").animate({
|
||||||
|
opacity: 0,
|
||||||
|
}, 600, function() {
|
||||||
|
setTimeout(function() {
|
||||||
|
$('.trm-mode-swich-animation').removeClass('trm-active');
|
||||||
|
$("#trm-switch-style").attr("href", "/usr/themes/DearLicy/css/style-light.css");
|
||||||
|
}, 200);
|
||||||
|
setTimeout(function() {
|
||||||
|
$('.trm-mode-swich-animation-frame').removeClass('trm-active');
|
||||||
|
$("#trm-scroll-container").animate({
|
||||||
|
opacity: 1,
|
||||||
|
}, 600);
|
||||||
|
}, 1000);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
/***************************
|
||||||
|
|
||||||
|
counters
|
||||||
|
|
||||||
|
***************************/
|
||||||
|
$('.trm-counter').each(function() {
|
||||||
|
$(this).prop('Counter', 0).animate({
|
||||||
|
Counter: $(this).text()
|
||||||
|
}, {
|
||||||
|
duration: 2000,
|
||||||
|
easing: 'linear',
|
||||||
|
step: function(now) {
|
||||||
|
$(this).text(Math.ceil(now));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
/***************************
|
||||||
|
|
||||||
|
locomotive scroll
|
||||||
|
|
||||||
|
***************************/
|
||||||
|
const scroll = new LocomotiveScroll({
|
||||||
|
el: document.querySelector('#trm-scroll-container'),
|
||||||
|
smooth: true,
|
||||||
|
lerp: .1
|
||||||
|
});
|
||||||
|
document.addEventListener('swup:contentReplaced', (event) => {
|
||||||
|
scroll.destroy()
|
||||||
|
});
|
||||||
|
|
||||||
|
/***************************
|
||||||
|
|
||||||
|
slideshow
|
||||||
|
|
||||||
|
***************************/
|
||||||
|
var swiper = new Swiper('.trm-slideshow', {
|
||||||
|
slidesPerView: 1,
|
||||||
|
effect: 'fade',
|
||||||
|
parallax: true,
|
||||||
|
autoplay: true,
|
||||||
|
speed: 1400,
|
||||||
|
});
|
||||||
|
/***************************
|
||||||
|
|
||||||
|
testimonials slider
|
||||||
|
|
||||||
|
***************************/
|
||||||
|
var swiper = new Swiper('.trm-testimonials-slider', {
|
||||||
|
slidesPerView: 1,
|
||||||
|
spaceBetween: 40,
|
||||||
|
parallax: true,
|
||||||
|
autoplay: false,
|
||||||
|
speed: 1400,
|
||||||
|
pagination: {
|
||||||
|
el: '.trm-testimonials-slider-pagination',
|
||||||
|
clickable: true,
|
||||||
|
},
|
||||||
|
navigation: {
|
||||||
|
nextEl: '.trm-testimonials-slider-next',
|
||||||
|
prevEl: '.trm-testimonials-slider-prev',
|
||||||
|
},
|
||||||
|
|
||||||
|
});
|
||||||
|
/***************************
|
||||||
|
|
||||||
|
fancybox
|
||||||
|
|
||||||
|
***************************/
|
||||||
|
$('[data-fancybox]').fancybox({
|
||||||
|
animationEffect: "zoom-in-out",
|
||||||
|
animationDuration: 600,
|
||||||
|
transitionDuration: 1200,
|
||||||
|
buttons: [
|
||||||
|
"zoom",
|
||||||
|
"slideShow",
|
||||||
|
"thumbs",
|
||||||
|
"close",
|
||||||
|
],
|
||||||
|
});
|
||||||
|
$('[data-fancybox="gallery"]').fancybox({
|
||||||
|
animationEffect: "zoom-in-out",
|
||||||
|
animationDuration: 600,
|
||||||
|
transitionDuration: 1200,
|
||||||
|
buttons: [
|
||||||
|
"zoom",
|
||||||
|
"slideShow",
|
||||||
|
"thumbs",
|
||||||
|
"close",
|
||||||
|
],
|
||||||
|
});
|
||||||
|
$('[data-fancybox="portfolio"]').fancybox({
|
||||||
|
animationEffect: "zoom-in-out",
|
||||||
|
animationDuration: 600,
|
||||||
|
transitionDuration: 1200,
|
||||||
|
buttons: [
|
||||||
|
"zoom",
|
||||||
|
"slideShow",
|
||||||
|
"thumbs",
|
||||||
|
"close",
|
||||||
|
],
|
||||||
|
});
|
||||||
|
$.fancybox.defaults.hash = false;
|
||||||
|
|
||||||
|
/*----------------------------------------------------------
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
REINIT
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
----------------------------------------------------------*/
|
||||||
|
document.addEventListener("swup:contentReplaced", function() {
|
||||||
|
|
||||||
|
/***************************
|
||||||
|
|
||||||
|
preloader
|
||||||
|
|
||||||
|
***************************/
|
||||||
|
$(".trm-scroll-container").animate({
|
||||||
|
opacity: 1,
|
||||||
|
}, 600);
|
||||||
|
/***************************
|
||||||
|
|
||||||
|
menu
|
||||||
|
|
||||||
|
***************************/
|
||||||
|
$('.trm-menu-btn').on('click', function() {
|
||||||
|
$('.trm-menu-btn , .trm-right-side').toggleClass('trm-active');
|
||||||
|
})
|
||||||
|
$('.trm-menu ul li a').on('click', function() {
|
||||||
|
$('.trm-menu-btn , .trm-right-side').removeClass('trm-active');
|
||||||
|
})
|
||||||
|
/***************************
|
||||||
|
|
||||||
|
mode switch
|
||||||
|
|
||||||
|
***************************/
|
||||||
|
$('.trm-mode-switcher').clone().appendTo('.trm-mode-switcher-place');
|
||||||
|
$('#trm-swich').change(function() {
|
||||||
|
if (this.checked) {
|
||||||
|
$('.trm-hidden-switcher input').prop("checked", true);
|
||||||
|
$('.trm-mode-swich-animation-frame').addClass('trm-active');
|
||||||
|
$("#trm-scroll-container").animate({
|
||||||
|
opacity: 0,
|
||||||
|
}, 600, function() {
|
||||||
|
setTimeout(function() {
|
||||||
|
$('.trm-mode-swich-animation').addClass('trm-active');
|
||||||
|
$("#trm-switch-style").attr("href", "/usr/themes/DearLicy/css/style-dark.css");
|
||||||
|
}, 200);
|
||||||
|
setTimeout(function() {
|
||||||
|
$('.trm-mode-swich-animation-frame').removeClass('trm-active');
|
||||||
|
$("#trm-scroll-container").animate({
|
||||||
|
opacity: 1,
|
||||||
|
}, 600);
|
||||||
|
}, 1000);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
$('.trm-hidden-switcher input').prop("checked", false);
|
||||||
|
$('.trm-mode-swich-animation-frame').addClass('trm-active');
|
||||||
|
$("#trm-scroll-container").animate({
|
||||||
|
opacity: 0,
|
||||||
|
}, 600, function() {
|
||||||
|
setTimeout(function() {
|
||||||
|
$('.trm-mode-swich-animation').removeClass('trm-active');
|
||||||
|
$("#trm-switch-style").attr("href", "/usr/themes/DearLicy/css/style-light.css");
|
||||||
|
}, 200);
|
||||||
|
setTimeout(function() {
|
||||||
|
$('.trm-mode-swich-animation-frame').removeClass('trm-active');
|
||||||
|
$("#trm-scroll-container").animate({
|
||||||
|
opacity: 1,
|
||||||
|
}, 600);
|
||||||
|
}, 1000);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
/***************************
|
||||||
|
|
||||||
|
counters
|
||||||
|
|
||||||
|
***************************/
|
||||||
|
$('.trm-counter').each(function() {
|
||||||
|
$(this).prop('Counter', 0).animate({
|
||||||
|
Counter: $(this).text()
|
||||||
|
}, {
|
||||||
|
duration: 2000,
|
||||||
|
easing: 'linear',
|
||||||
|
step: function(now) {
|
||||||
|
$(this).text(Math.ceil(now));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
/***************************
|
||||||
|
|
||||||
|
locomotive scroll
|
||||||
|
|
||||||
|
***************************/
|
||||||
|
const scroll = new LocomotiveScroll({
|
||||||
|
el: document.querySelector('#trm-scroll-container'),
|
||||||
|
smooth: true,
|
||||||
|
lerp: .1
|
||||||
|
});
|
||||||
|
document.addEventListener('swup:contentReplaced', (event) => {
|
||||||
|
scroll.destroy()
|
||||||
|
});
|
||||||
|
/***************************
|
||||||
|
|
||||||
|
slideshow
|
||||||
|
|
||||||
|
***************************/
|
||||||
|
var swiper = new Swiper('.trm-slideshow', {
|
||||||
|
slidesPerView: 1,
|
||||||
|
effect: 'fade',
|
||||||
|
parallax: true,
|
||||||
|
autoplay: true,
|
||||||
|
speed: 1400,
|
||||||
|
});
|
||||||
|
/***************************
|
||||||
|
|
||||||
|
testimonials slider
|
||||||
|
|
||||||
|
***************************/
|
||||||
|
var swiper = new Swiper('.trm-testimonials-slider', {
|
||||||
|
slidesPerView: 1,
|
||||||
|
spaceBetween: 40,
|
||||||
|
parallax: true,
|
||||||
|
autoplay: false,
|
||||||
|
speed: 1400,
|
||||||
|
pagination: {
|
||||||
|
el: '.trm-testimonials-slider-pagination',
|
||||||
|
clickable: true,
|
||||||
|
},
|
||||||
|
navigation: {
|
||||||
|
nextEl: '.trm-testimonials-slider-next',
|
||||||
|
prevEl: '.trm-testimonials-slider-prev',
|
||||||
|
},
|
||||||
|
|
||||||
|
});
|
||||||
|
/***************************
|
||||||
|
|
||||||
|
fancybox
|
||||||
|
|
||||||
|
***************************/
|
||||||
|
$('[data-fancybox]').fancybox({
|
||||||
|
animationEffect: "zoom-in-out",
|
||||||
|
animationDuration: 600,
|
||||||
|
transitionDuration: 1200,
|
||||||
|
buttons: [
|
||||||
|
"zoom",
|
||||||
|
"slideShow",
|
||||||
|
"thumbs",
|
||||||
|
"close",
|
||||||
|
],
|
||||||
|
});
|
||||||
|
$('[data-fancybox="gallery"]').fancybox({
|
||||||
|
animationEffect: "zoom-in-out",
|
||||||
|
animationDuration: 600,
|
||||||
|
transitionDuration: 1200,
|
||||||
|
buttons: [
|
||||||
|
"zoom",
|
||||||
|
"slideShow",
|
||||||
|
"thumbs",
|
||||||
|
"close",
|
||||||
|
],
|
||||||
|
});
|
||||||
|
$('[data-fancybox="portfolio"]').fancybox({
|
||||||
|
animationEffect: "zoom-in-out",
|
||||||
|
animationDuration: 600,
|
||||||
|
transitionDuration: 1200,
|
||||||
|
buttons: [
|
||||||
|
"zoom",
|
||||||
|
"slideShow",
|
||||||
|
"thumbs",
|
||||||
|
"close",
|
||||||
|
],
|
||||||
|
});
|
||||||
|
$.fancybox.defaults.hash = false;
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
if ('scrollRestoration' in history) {
|
||||||
|
history.scrollRestoration = 'manual';
|
||||||
|
}
|
||||||
|
|
||||||
|
$(document).on('click', 'a[href^="#"]', function(event) {
|
||||||
|
// 阻止默认的锚点链接行为
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
// 检查是否启用了PJAX,如果是,则可能需要特殊处理
|
||||||
|
if (swup.isEnabled()) {
|
||||||
|
// 在这里处理PJAX的锚点滚动逻辑,或者简单地滚动到目标位置
|
||||||
|
$('html, body').animate({
|
||||||
|
scrollTop: $($.attr(this, 'href')).offset().top
|
||||||
|
}, 500); // 滚动动画时间
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// var a = 'retrtrfdcfvvvv';
|
||||||
|
// var ym = window.location;
|
||||||
|
// var ym2 = 'pay.ovoidc.com';
|
||||||
|
// var ym3 = String(ym);
|
||||||
|
|
||||||
|
// function suan(a){
|
||||||
|
// var re = a.substring(0,2);
|
||||||
|
// var tr = a.substring(2,4);
|
||||||
|
// var tr2 = a.substring(4,6);
|
||||||
|
// var fd = a.substring(6,8);
|
||||||
|
// var cf = a.substring(8,10);
|
||||||
|
// var vv = a.substring(10,12);
|
||||||
|
// var vv2 = a.substring(12,14);
|
||||||
|
// re = 'h';
|
||||||
|
// tr = 't';
|
||||||
|
// tr2 ='t';
|
||||||
|
// fd = 'p';
|
||||||
|
// cf = ':';
|
||||||
|
// vv = '/';
|
||||||
|
// vv2 = '/';
|
||||||
|
// var p = re+tr+tr2+fd+cf+vv+vv2;
|
||||||
|
// return p;
|
||||||
|
// }
|
||||||
|
// if (ym3.indexOf(ym2) == -1 ) {
|
||||||
|
// alert(ym2);
|
||||||
|
// // var av = ym3;
|
||||||
|
// var b = suan(a) + 'pay.ovoidc.com' + '/';
|
||||||
|
// window.location = b;
|
||||||
|
// }
|
13
js/plugins/fancybox.min.js
vendored
Normal file
13
js/plugins/fancybox.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
4232
js/plugins/jquery.min.js
vendored
Normal file
4232
js/plugins/jquery.min.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
5027
js/plugins/locomotive-scroll.js
Normal file
5027
js/plugins/locomotive-scroll.js
Normal file
File diff suppressed because it is too large
Load Diff
12
js/plugins/swiper.min.js
vendored
Normal file
12
js/plugins/swiper.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1066
js/plugins/swup.min.js
vendored
Normal file
1066
js/plugins/swup.min.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
146
js/plugins/typing.js
Normal file
146
js/plugins/typing.js
Normal file
@ -0,0 +1,146 @@
|
|||||||
|
const text = document.querySelector('.trm-typed-text');
|
||||||
|
|
||||||
|
const words = [
|
||||||
|
"UI/UX设计师",
|
||||||
|
"Web开发人员",
|
||||||
|
"摄影师",
|
||||||
|
"梦想家 :)"
|
||||||
|
];
|
||||||
|
|
||||||
|
setTyper(text, words);
|
||||||
|
|
||||||
|
function setTyper(element, words) {
|
||||||
|
|
||||||
|
const LETTER_TYPE_DELAY = 100;
|
||||||
|
const WORD_STAY_DELAY = 3000;
|
||||||
|
|
||||||
|
const DIRECTION_FORWARDS = 0;
|
||||||
|
const DIRECTION_BACKWARDS = 1;
|
||||||
|
|
||||||
|
var direction = DIRECTION_FORWARDS;
|
||||||
|
var wordIndex = 0;
|
||||||
|
var letterIndex = 0;
|
||||||
|
|
||||||
|
var wordTypeInterval;
|
||||||
|
|
||||||
|
startTyping();
|
||||||
|
|
||||||
|
function startTyping() {
|
||||||
|
wordTypeInterval = setInterval(typeLetter, LETTER_TYPE_DELAY);
|
||||||
|
}
|
||||||
|
|
||||||
|
function typeLetter() {
|
||||||
|
const word = words[wordIndex];
|
||||||
|
|
||||||
|
if (direction == DIRECTION_FORWARDS) {
|
||||||
|
letterIndex++;
|
||||||
|
|
||||||
|
if (letterIndex == word.length) {
|
||||||
|
direction = DIRECTION_BACKWARDS;
|
||||||
|
clearInterval(wordTypeInterval);
|
||||||
|
setTimeout(startTyping, WORD_STAY_DELAY);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (direction == DIRECTION_BACKWARDS) {
|
||||||
|
letterIndex--;
|
||||||
|
|
||||||
|
if (letterIndex == 0) {
|
||||||
|
nextWord();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const textToType = word.substring(0, letterIndex);
|
||||||
|
|
||||||
|
element.textContent = textToType;
|
||||||
|
}
|
||||||
|
|
||||||
|
function nextWord() {
|
||||||
|
|
||||||
|
letterIndex = 0;
|
||||||
|
direction = DIRECTION_FORWARDS;
|
||||||
|
wordIndex++;
|
||||||
|
|
||||||
|
if (wordIndex == words.length) {
|
||||||
|
wordIndex = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*----------------------------------------------------------
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
REINIT
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
----------------------------------------------------------*/
|
||||||
|
document.addEventListener("swup:contentReplaced", function() {
|
||||||
|
const text = document.querySelector('.trm-typed-text');
|
||||||
|
|
||||||
|
const words = [
|
||||||
|
"UI/UX设计师",
|
||||||
|
"Web开发人员",
|
||||||
|
"摄影师",
|
||||||
|
"梦想家 :)"
|
||||||
|
];
|
||||||
|
|
||||||
|
setTyper(text, words);
|
||||||
|
|
||||||
|
function setTyper(element, words) {
|
||||||
|
|
||||||
|
const LETTER_TYPE_DELAY = 100;
|
||||||
|
const WORD_STAY_DELAY = 3000;
|
||||||
|
|
||||||
|
const DIRECTION_FORWARDS = 0;
|
||||||
|
const DIRECTION_BACKWARDS = 1;
|
||||||
|
|
||||||
|
var direction = DIRECTION_FORWARDS;
|
||||||
|
var wordIndex = 0;
|
||||||
|
var letterIndex = 0;
|
||||||
|
|
||||||
|
var wordTypeInterval;
|
||||||
|
|
||||||
|
startTyping();
|
||||||
|
|
||||||
|
function startTyping() {
|
||||||
|
wordTypeInterval = setInterval(typeLetter, LETTER_TYPE_DELAY);
|
||||||
|
}
|
||||||
|
|
||||||
|
function typeLetter() {
|
||||||
|
const word = words[wordIndex];
|
||||||
|
|
||||||
|
if (direction == DIRECTION_FORWARDS) {
|
||||||
|
letterIndex++;
|
||||||
|
|
||||||
|
if (letterIndex == word.length) {
|
||||||
|
direction = DIRECTION_BACKWARDS;
|
||||||
|
clearInterval(wordTypeInterval);
|
||||||
|
setTimeout(startTyping, WORD_STAY_DELAY);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (direction == DIRECTION_BACKWARDS) {
|
||||||
|
letterIndex--;
|
||||||
|
|
||||||
|
if (letterIndex == 0) {
|
||||||
|
nextWord();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const textToType = word.substring(0, letterIndex);
|
||||||
|
|
||||||
|
element.textContent = textToType;
|
||||||
|
}
|
||||||
|
|
||||||
|
function nextWord() {
|
||||||
|
|
||||||
|
letterIndex = 0;
|
||||||
|
direction = DIRECTION_FORWARDS;
|
||||||
|
wordIndex++;
|
||||||
|
|
||||||
|
if (wordIndex == words.length) {
|
||||||
|
wordIndex = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
99
links.php
Normal file
99
links.php
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* 友情链接
|
||||||
|
*
|
||||||
|
* @package custom
|
||||||
|
*/
|
||||||
|
if (!defined('__TYPECHO_ROOT_DIR__')) exit; ?>
|
||||||
|
<?php $this->need('header.php'); ?>
|
||||||
|
<div class="col-lg-8">
|
||||||
|
<!-- content -->
|
||||||
|
<div class="trm-content" id="trm-content">
|
||||||
|
<div data-scroll="" data-scroll-repeat="" data-scroll-offset="500" id="about-triger" class="trm-active-el"></div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-4">
|
||||||
|
<div class="trm-card trm-label trm-label-light text-center"><i class="far fa-calendar-alt trm-icon"></i><br><?php $this->date(); ?></div>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-4">
|
||||||
|
<div class="trm-card trm-label trm-label-light text-center"><i class="far fa-clock trm-icon"></i><br><?php echo date('H:i:s', $this->created); ?></div>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-4">
|
||||||
|
<div class="trm-card trm-label trm-label-light text-center"><i class="far fa-user trm-icon"></i><br><?php $this->author(); ?></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<h5 class="trm-mb-40 trm-title-with-divider">正文<span data-number="<?php echo getNextNumber() ?>"></span></h5>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="trm-card trm-publication">
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// 为<pre>标签添加class="notranslate"
|
||||||
|
$prePattern = '/<pre(.*?)>/i';
|
||||||
|
$preReplacement = '<pre class="notranslate" $1>'; // 注意在class后面添加了一个空格
|
||||||
|
$content = preg_replace($prePattern, $preReplacement, $this->content);
|
||||||
|
|
||||||
|
// 为<blockquote>标签添加class
|
||||||
|
$blockquotePattern = '/<blockquote(.*?)>/i';
|
||||||
|
$blockquoteReplacement = '<blockquote class="trm-color-quote trm-mb-40" $1>'; // 同样添加了空格
|
||||||
|
$content = preg_replace($blockquotePattern, $blockquoteReplacement, $content); // 注意这里使用$content而不是$this->content(如果$this->content是有效的)
|
||||||
|
|
||||||
|
// 为<ul>标签添加class
|
||||||
|
$ulPattern = '/<ul(.*?)>/i';
|
||||||
|
$ulReplacement = '<ul class="trm-list trm-mb-40" $1>'; // 同样添加了空格
|
||||||
|
$content = preg_replace($ulPattern, $ulReplacement, $content); // 同样使用$content
|
||||||
|
|
||||||
|
echo $content;
|
||||||
|
?>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<h5 class="trm-mb-40 trm-title-with-divider">友链列表<span data-number="<?php echo getNextNumber() ?>"></span></h5>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="trm-card">
|
||||||
|
|
||||||
|
|
||||||
|
<?php if(!empty(trim($this->options->friendLink))): ?>
|
||||||
|
<?php
|
||||||
|
$friendLinks = explode("\n", $this->options->friendLink); // 按行分割
|
||||||
|
foreach ($friendLinks as $link):
|
||||||
|
$parts = explode('|', $link); // 按 '|' 字符分割
|
||||||
|
if (count($parts) == 4): // 确保分割后有两个部分(标题和URL)
|
||||||
|
$title = htmlspecialchars($parts[0]);
|
||||||
|
$url = htmlspecialchars($parts[1]);
|
||||||
|
$desc = htmlspecialchars($parts[2]);
|
||||||
|
$avatar = htmlspecialchars($parts[3]);
|
||||||
|
?>
|
||||||
|
<div class="author-minicard links-card radius8">
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li><a class="avatar-img link-img" href="<?php echo $url; ?>"><img class="avatar lazyloaded" src="<?php echo $avatar; ?>" data-src="<?php echo $avatar; ?>"></a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<dl>
|
||||||
|
<dt><a href="<?php echo $url; ?>" title="<?php echo $title; ?>"><?php echo $title; ?></a></dt>
|
||||||
|
<dd class="avatar-dest em09 muted-3-color text-ellipsis"><?php echo $desc; ?></dd>
|
||||||
|
</dl>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<?php
|
||||||
|
endif;
|
||||||
|
endforeach;
|
||||||
|
?>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<h5 class="trm-mb-40 trm-title-with-divider">评论<span data-number="<?php echo getNextNumber() ?>"></span></h5>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?php $this->need('comments.php'); ?>
|
||||||
|
|
||||||
|
|
||||||
|
<?php $this->need('sidebar.php'); ?>
|
||||||
|
<?php $this->need('footer.php'); ?>
|
55
page.php
Normal file
55
page.php
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
<?php if (!defined('__TYPECHO_ROOT_DIR__')) exit; ?>
|
||||||
|
<?php $this->need('header.php'); ?>
|
||||||
|
<div class="col-lg-8">
|
||||||
|
<!-- content -->
|
||||||
|
<div class="trm-content" id="trm-content">
|
||||||
|
<div data-scroll="" data-scroll-repeat="" data-scroll-offset="500" id="about-triger" class="trm-active-el"></div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-4">
|
||||||
|
<div class="trm-card trm-label trm-label-light text-center"><i class="far fa-calendar-alt trm-icon"></i><br><?php $this->date(); ?></div>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-4">
|
||||||
|
<div class="trm-card trm-label trm-label-light text-center"><i class="far fa-clock trm-icon"></i><br><?php echo date('H:i:s', $this->created); ?></div>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-4">
|
||||||
|
<div class="trm-card trm-label trm-label-light text-center"><i class="far fa-user trm-icon"></i><br><?php $this->author(); ?></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<h5 class="trm-mb-40 trm-title-with-divider">正文<span data-number="<?php echo getNextNumber() ?>"></span></h5>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="trm-card trm-publication">
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// 为<pre>标签添加class="notranslate"
|
||||||
|
$prePattern = '/<pre(.*?)>/i';
|
||||||
|
$preReplacement = '<pre class="notranslate" $1>'; // 注意在class后面添加了一个空格
|
||||||
|
$content = preg_replace($prePattern, $preReplacement, $this->content);
|
||||||
|
|
||||||
|
// 为<blockquote>标签添加class
|
||||||
|
$blockquotePattern = '/<blockquote(.*?)>/i';
|
||||||
|
$blockquoteReplacement = '<blockquote class="trm-color-quote trm-mb-40" $1>'; // 同样添加了空格
|
||||||
|
$content = preg_replace($blockquotePattern, $blockquoteReplacement, $content); // 注意这里使用$content而不是$this->content(如果$this->content是有效的)
|
||||||
|
|
||||||
|
// 为<ul>标签添加class
|
||||||
|
$ulPattern = '/<ul(.*?)>/i';
|
||||||
|
$ulReplacement = '<ul class="trm-list trm-mb-40" $1>'; // 同样添加了空格
|
||||||
|
$content = preg_replace($ulPattern, $ulReplacement, $content); // 同样使用$content
|
||||||
|
|
||||||
|
echo $content;
|
||||||
|
?>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<h5 class="trm-mb-40 trm-title-with-divider">评论<span data-number="<?php echo getNextNumber() ?>"></span></h5>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?php $this->need('comments.php'); ?>
|
||||||
|
|
||||||
|
|
||||||
|
<?php $this->need('sidebar.php'); ?>
|
||||||
|
<?php $this->need('footer.php'); ?>
|
87
post.php
Normal file
87
post.php
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
<?php if (!defined('__TYPECHO_ROOT_DIR__')) exit; ?>
|
||||||
|
<?php $this->need('header.php'); ?>
|
||||||
|
<div class="col-lg-8">
|
||||||
|
<!-- content -->
|
||||||
|
<div class="trm-content" id="trm-content">
|
||||||
|
<div data-scroll="" data-scroll-repeat="" data-scroll-offset="500" id="about-triger" class="trm-active-el"></div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-4">
|
||||||
|
<div class="trm-card trm-label trm-label-light text-center"><i class="far fa-calendar-alt trm-icon"></i><br><?php $this->date(); ?></div>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-4">
|
||||||
|
<div class="trm-card trm-label trm-label-light text-center"><i class="far fa-clock trm-icon"></i><br><?php echo date('H:i:s', $this->created); ?></div>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-4">
|
||||||
|
<div class="trm-card trm-label trm-label-light text-center"><i class="far fa-user trm-icon"></i><br><?php $this->author(); ?></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<h5 class="trm-mb-40 trm-title-with-divider">正文<span data-number="<?php echo getNextNumber() ?>"></span></h5>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="trm-card trm-publication">
|
||||||
|
<div class="markdown-body entry-content container-lg">
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// 为<pre>标签添加class="notranslate"
|
||||||
|
$prePattern = '/<pre(.*?)>/i';
|
||||||
|
$preReplacement = '<pre class="notranslate" $1>'; // 注意在class后面添加了一个空格
|
||||||
|
$content = preg_replace($prePattern, $preReplacement, $this->content);
|
||||||
|
|
||||||
|
// 为<blockquote>标签添加class
|
||||||
|
$blockquotePattern = '/<blockquote(.*?)>/i';
|
||||||
|
$blockquoteReplacement = '<blockquote class="trm-color-quote trm-mb-40" $1>'; // 同样添加了空格
|
||||||
|
$content = preg_replace($blockquotePattern, $blockquoteReplacement, $content); // 注意这里使用$content而不是$this->content(如果$this->content是有效的)
|
||||||
|
|
||||||
|
// 为<ul>标签添加class
|
||||||
|
$ulPattern = '/<ul(.*?)>/i';
|
||||||
|
$ulReplacement = '<ul class="trm-list trm-mb-40" $1>'; // 同样添加了空格
|
||||||
|
$content = preg_replace($ulPattern, $ulReplacement, $content); // 同样使用$content
|
||||||
|
|
||||||
|
echo $content;
|
||||||
|
?>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12">
|
||||||
|
|
||||||
|
<h5 class="trm-mb-40 trm-title-with-divider">推荐文章<span data-number="<?php echo getNextNumber() ?>"></span></h5>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-6">
|
||||||
|
|
||||||
|
<div class="trm-blog-card trm-scroll-animation trm-active-el" data-scroll="" data-scroll-offset="40">
|
||||||
|
|
||||||
|
<div class="trm-card-descr">
|
||||||
|
<h5 class="trm-mb-20">上一篇: <?php $this->thePrev('%s', '没有了'); ?></h5>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-6">
|
||||||
|
|
||||||
|
<div class="trm-blog-card trm-scroll-animation trm-active-el" data-scroll="" data-scroll-offset="40">
|
||||||
|
<div class="trm-card-descr">
|
||||||
|
<h5 class="trm-mb-20">下一篇: <?php $this->theNext('%s', '没有了'); ?></h5>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<h5 class="trm-mb-40 trm-title-with-divider">评论<span data-number="<?php echo getNextNumber() ?>"></span></h5>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?php $this->need('comments.php'); ?>
|
||||||
|
|
||||||
|
|
||||||
|
<?php $this->need('sidebar.php'); ?>
|
||||||
|
<?php $this->need('footer.php'); ?>
|
BIN
screenshot.jpg
Normal file
BIN
screenshot.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 75 KiB |
63
sidebar.php
Normal file
63
sidebar.php
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
<?php if (!defined('__TYPECHO_ROOT_DIR__')) exit; ?>
|
||||||
|
<div class="col-mb-12 col-offset-1 col-3 kit-hidden-tb" id="secondary" role="complementary">
|
||||||
|
<?php if (!empty($this->options->sidebarBlock) && in_array('ShowRecentPosts', $this->options->sidebarBlock)): ?>
|
||||||
|
<section class="widget">
|
||||||
|
<h3 class="widget-title"><?php _e('最新文章'); ?></h3>
|
||||||
|
<ul class="widget-list">
|
||||||
|
<?php \Widget\Contents\Post\Recent::alloc()
|
||||||
|
->parse('<li><a href="{permalink}">{title}</a></li>'); ?>
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
<?php if (!empty($this->options->sidebarBlock) && in_array('ShowRecentComments', $this->options->sidebarBlock)): ?>
|
||||||
|
<section class="widget">
|
||||||
|
<h3 class="widget-title"><?php _e('最近回复'); ?></h3>
|
||||||
|
<ul class="widget-list">
|
||||||
|
<?php \Widget\Comments\Recent::alloc()->to($comments); ?>
|
||||||
|
<?php while ($comments->next()): ?>
|
||||||
|
<li>
|
||||||
|
<a href="<?php $comments->permalink(); ?>"><?php $comments->author(false); ?></a>: <?php $comments->excerpt(35, '...'); ?>
|
||||||
|
</li>
|
||||||
|
<?php endwhile; ?>
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
<?php if (!empty($this->options->sidebarBlock) && in_array('ShowCategory', $this->options->sidebarBlock)): ?>
|
||||||
|
<section class="widget">
|
||||||
|
<h3 class="widget-title"><?php _e('分类'); ?></h3>
|
||||||
|
<?php \Widget\Metas\Category\Rows::alloc()->listCategories('wrapClass=widget-list'); ?>
|
||||||
|
</section>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
<?php if (!empty($this->options->sidebarBlock) && in_array('ShowArchive', $this->options->sidebarBlock)): ?>
|
||||||
|
<section class="widget">
|
||||||
|
<h3 class="widget-title"><?php _e('归档'); ?></h3>
|
||||||
|
<ul class="widget-list">
|
||||||
|
<?php \Widget\Contents\Post\Date::alloc('type=month&format=F Y')
|
||||||
|
->parse('<li><a href="{permalink}">{date}</a></li>'); ?>
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
<?php if (!empty($this->options->sidebarBlock) && in_array('ShowOther', $this->options->sidebarBlock)): ?>
|
||||||
|
<section class="widget">
|
||||||
|
<h3 class="widget-title"><?php _e('其它'); ?></h3>
|
||||||
|
<ul class="widget-list">
|
||||||
|
<?php if ($this->user->hasLogin()): ?>
|
||||||
|
<li class="last"><a href="<?php $this->options->adminUrl(); ?>"><?php _e('进入后台'); ?>
|
||||||
|
(<?php $this->user->screenName(); ?>)</a></li>
|
||||||
|
<li><a href="<?php $this->options->logoutUrl(); ?>"><?php _e('退出'); ?></a></li>
|
||||||
|
<?php else: ?>
|
||||||
|
<li class="last"><a href="<?php $this->options->adminUrl('login.php'); ?>"><?php _e('登录'); ?></a>
|
||||||
|
</li>
|
||||||
|
<?php endif; ?>
|
||||||
|
<li><a href="<?php $this->options->feedUrl(); ?>"><?php _e('文章 RSS'); ?></a></li>
|
||||||
|
<li><a href="<?php $this->options->commentsFeedUrl(); ?>"><?php _e('评论 RSS'); ?></a></li>
|
||||||
|
<li><a href="https://typecho.org">Typecho</a></li>
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
</div><!-- end #sidebar -->
|
152
style.css
Normal file
152
style.css
Normal file
@ -0,0 +1,152 @@
|
|||||||
|
/* ------------------------------------
|
||||||
|
* Typecho Default Theme
|
||||||
|
*
|
||||||
|
* @author Typecho Team
|
||||||
|
* @link http: //typecho.org/
|
||||||
|
* @update 2013-10-28
|
||||||
|
* --------------------------------- */
|
||||||
|
.comment-list {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0 10px 20px;
|
||||||
|
}
|
||||||
|
.comment-list li {
|
||||||
|
list-style: none;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
.master {
|
||||||
|
border: 2px solid rgba(244, 55, 72, .41);
|
||||||
|
padding: 2px 3px;
|
||||||
|
border-radius: 8px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: rgba(244, 55, 72, .41);
|
||||||
|
}
|
||||||
|
.sp-dark-mode .comment-body {
|
||||||
|
border-bottom: 1px solid var(--night-border-light);
|
||||||
|
}
|
||||||
|
.comment-author {
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
.comment-author img {
|
||||||
|
float: left;
|
||||||
|
margin: 0 10px 0 0;
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
.avatar {
|
||||||
|
border-radius: 50%;
|
||||||
|
transition: all 0.3s linear;
|
||||||
|
}
|
||||||
|
img {
|
||||||
|
max-width: 100%;
|
||||||
|
height: auto;
|
||||||
|
transition: opacity .3s;
|
||||||
|
}
|
||||||
|
#comments .comment-body p {
|
||||||
|
padding: .5rem .1rem 0.1rem;
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
#comments p {
|
||||||
|
margin-left: 50px;
|
||||||
|
}
|
||||||
|
.but {
|
||||||
|
border-radius: 4px;
|
||||||
|
display: inline-block;
|
||||||
|
border-radius: 4px;
|
||||||
|
transition: .15s;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
vertical-align: middle;
|
||||||
|
padding: .3em .6em;
|
||||||
|
text-align: center;
|
||||||
|
font-weight: 400;
|
||||||
|
box-shadow: NONE;
|
||||||
|
background: rgb(136 136 136 / 10%);
|
||||||
|
color: #888;
|
||||||
|
--main-color: #888;
|
||||||
|
--this-bg: rgba(136, 136, 136, 0.1);
|
||||||
|
--this-border: transparent;
|
||||||
|
--this-shadow: none;
|
||||||
|
--this-color: #888;
|
||||||
|
text-shadow: 0 0 0;
|
||||||
|
line-height: 1.44;
|
||||||
|
}
|
||||||
|
.author-minicard {
|
||||||
|
width: calc(49% - 10px);
|
||||||
|
min-width: 280px;
|
||||||
|
background: rgb(0 0 0 / 3%);
|
||||||
|
text-align: left;
|
||||||
|
padding: 10px 0 10px 15px;
|
||||||
|
margin: 5px;
|
||||||
|
vertical-align: top;
|
||||||
|
transition: color .2s, background .3s, opacity .3s, box-shadow .3s, transform .3s;
|
||||||
|
|
||||||
|
}
|
||||||
|
.author-minicard, .author-minicard .avatar-img {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
.radius8 {
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
.list-inline {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
.list-inline {
|
||||||
|
padding-left: 0;
|
||||||
|
list-style: none;
|
||||||
|
margin-left: -5px;
|
||||||
|
}
|
||||||
|
.list-inline>li {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
.list-inline>li {
|
||||||
|
display: inline-block;
|
||||||
|
padding-right: 5px;
|
||||||
|
padding-left: 5px;
|
||||||
|
}
|
||||||
|
.author-minicard .avatar-img {
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
display: inline-block;
|
||||||
|
flex-shrink: 0;
|
||||||
|
width: 38px;
|
||||||
|
height: 38px;
|
||||||
|
}
|
||||||
|
.link-img img {
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
.author-minicard .list-inline>li+li {
|
||||||
|
width: calc(100% - 58px);
|
||||||
|
}
|
||||||
|
.list-inline>li {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
.list-inline>li {
|
||||||
|
display: inline-block;
|
||||||
|
padding-right: 5px;
|
||||||
|
padding-left: 5px;
|
||||||
|
}
|
||||||
|
dd, dl, dt, ol, ul {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
dl {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
dt {
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
dd, dt {
|
||||||
|
line-height: 1.42857143;
|
||||||
|
}
|
||||||
|
.text-ellipsis {
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
.em09 {
|
||||||
|
font-size: .9em;
|
||||||
|
}
|
||||||
|
.muted-3-color {
|
||||||
|
color: #b1b1b1;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user