Browse Source

image site theme beauty added

master
filesite 2 years ago
parent
commit
495b6e50e3
  1. 12
      conf/app.php
  2. 1
      conf/custom_config_beauty.json
  3. 105
      themes/beauty/controller/ListController.php
  4. 80
      themes/beauty/controller/SiteController.php
  5. 84
      themes/beauty/views/layout/main.php
  6. 243
      themes/beauty/views/site/index.php
  7. 152
      www/css/beauty.css
  8. 6
      www/css/bootstrap.min.css
  9. 1
      www/css/fubox.min.css
  10. 15
      www/img/beauty/buld.svg
  11. 7
      www/img/beauty/clos.svg
  12. 7
      www/img/beauty/huojian.svg
  13. 2
      www/img/beauty/lazy.svg
  14. 2
      www/img/beauty/navshow.svg
  15. 8
      www/img/beauty/scrolltop.svg
  16. 79
      www/js/beauty.js
  17. 6
      www/js/bootstrap.min.js
  18. 13
      www/js/fubox.min.js
  19. 15
      www/js/lazyload.js

12
conf/app.php

@ -18,7 +18,8 @@ $configs = array(
//图片站皮肤 //图片站皮肤
'content_directory' => 'girls/', //directory of contents in /www/ 'content_directory' => 'girls/', //directory of contents in /www/
'theme' => 'googleimage', //name of theme which is enabled //'theme' => 'googleimage', //name of theme which is enabled
'theme' => 'beauty', //皮肤美图
//视频站皮肤 //视频站皮肤
//'content_directory' => 'videos/', //directory of contents in /www/ //'content_directory' => 'videos/', //directory of contents in /www/
@ -49,10 +50,11 @@ $configs = array(
//目前支持的皮肤 //目前支持的皮肤
'allowedThemes' => array( 'allowedThemes' => array(
'manual' => '文档站', 'manual' => '文档站-默认',
'webdirectory' => '导航站', 'webdirectory' => '导航站-默认',
'googleimage' => '图片站', 'googleimage' => '图片站-默认',
'videoblog' => '视频站', 'beauty' => '图片站-美图',
'videoblog' => '视频站-默认',
), ),
//md5加密前缀 //md5加密前缀

1
conf/custom_config_beauty.json

@ -0,0 +1 @@
{"theme":"beauty","content_directory":"girls"}

105
themes/beauty/controller/ListController.php

@ -0,0 +1,105 @@
<?php
/**
* List Controller
*/
require_once __DIR__ . '/../../../lib/DirScanner.php';
require_once __DIR__ . '/../../../plugins/Parsedown.php';
Class ListController extends Controller {
public function actionIndex() {
//获取数据
$menus = array(); //菜单,一级目录
$htmlReadme = ''; //Readme.md 内容,底部网站详细介绍
$htmlCateReadme = ''; //当前目录下的Readme.md 内容
$menus_sorted = array(); //Readme_sort.txt 说明文件内容,一级目录菜单从上到下的排序
$scanner = new DirScanner();
$scanner->setWebRoot(FSC::$app['config']['content_directory']);
$dirTree = $scanner->scan(__DIR__ . '/../../../www/' . FSC::$app['config']['content_directory'], 4);
$scanResults = $scanner->getScanResults();
//获取目录
$menus = $scanner->getMenus();
$titles = array();
$readmeFile = $scanner->getDefaultReadme();
if (!empty($readmeFile)) {
if (!empty($readmeFile['sort'])) {
$menus_sorted = explode("\n", $readmeFile['sort']);
}
$titles = $scanner->getMDTitles($readmeFile['id']);
$Parsedown = new Parsedown();
$content = file_get_contents($readmeFile['realpath']);
$htmlReadme = $Parsedown->text($content);
$htmlReadme = $scanner->fixMDUrls($readmeFile['realpath'], $htmlReadme);
}
//排序
$sortedTree = $this->sortMenusAndDirTree($menus_sorted, $menus, $dirTree);
if (!empty($sortedTree)) {
$menus = $sortedTree['menus'];
$dirTree = $sortedTree['dirTree'];
}
//获取目录面包屑
$cateId = $this->get('id', $menus[0]['id']);
$subcate = $scanResults[$cateId];
$breadcrumbs = $this->getBreadcrumbs($menus, $subcate);
//获取当前目录下的readme
$cateReadmeFile = $scanner->getDefaultReadme($cateId);
if (!empty($cateReadmeFile)) {
$Parsedown = new Parsedown();
$content = file_get_contents($cateReadmeFile['realpath']);
$htmlCateReadme = $Parsedown->text($content);
$htmlCateReadme = $scanner->fixMDUrls($cateReadmeFile['realpath'], $htmlCateReadme);
}
//获取默认mp3文件
$rootCateId = $this->get('id', '');
$mp3File = $scanner->getDefaultFile('mp3', $rootCateId);
if (empty($mp3File)) {
$mp3File = $scanner->getDefaultFile('mp3');
}
$pageTitle = !empty($titles) ? $titles[0]['name'] : "FileSite.io - 无数据库、基于文件和目录的Markdown文档、网址导航、图书、图片、视频网站PHP开源系统";
if (!empty($subcate)) {
$pageTitle = "{$subcate['directory']}的照片,来自{$pageTitle}";
if (!empty($subcate['title'])) {
$pageTitle = $subcate['title'];
}
}
$viewName = '//site/index'; //共享视图
$params = compact(
'cateId', 'dirTree', 'scanResults', 'menus', 'htmlReadme', 'breadcrumbs', 'htmlCateReadme',
'mp3File'
);
return $this->render($viewName, $params, $pageTitle);
}
//根据目录结构以及当前目录获取面包屑
protected function getBreadcrumbs($menus, $subcate) {
$breads = array();
array_push($breads, [
'id' => $subcate['id'],
'name' => $subcate['directory'],
'url' => $subcate['path'],
]);
$foundKey = array_search($subcate['pid'], array_column($menus, 'id'));
if ($foundKey !== false) {
array_unshift($breads, [
'id' => $menus[$foundKey]['id'],
'name' => $menus[$foundKey]['directory'],
'url' => $menus[$foundKey]['path'],
]);
}
return $breads;
}
}

80
themes/beauty/controller/SiteController.php

@ -0,0 +1,80 @@
<?php
/**
* Site Controller
*/
require_once __DIR__ . '/../../../lib/DirScanner.php';
require_once __DIR__ . '/../../../plugins/Parsedown.php';
Class SiteController extends Controller {
public function actionIndex() {
//获取数据
$menus = array(); //菜单,一级目录
$htmlReadme = ''; //Readme.md 内容,底部网站详细介绍
$htmlCateReadme = ''; //当前目录下的Readme.md 内容
$menus_sorted = array(); //Readme_sort.txt 说明文件内容,一级目录菜单从上到下的排序
$scanner = new DirScanner();
$scanner->setWebRoot(FSC::$app['config']['content_directory']);
$dirTree = $scanner->scan(__DIR__ . '/../../../www/' . FSC::$app['config']['content_directory'], 4);
$scanResults = $scanner->getScanResults();
//获取目录
$menus = $scanner->getMenus();
$titles = array();
$readmeFile = $scanner->getDefaultReadme();
if (!empty($readmeFile)) {
if (!empty($readmeFile['sort'])) {
$menus_sorted = explode("\n", $readmeFile['sort']);
}
$titles = $scanner->getMDTitles($readmeFile['id']);
$Parsedown = new Parsedown();
$content = file_get_contents($readmeFile['realpath']);
$htmlReadme = $Parsedown->text($content);
$htmlReadme = $scanner->fixMDUrls($readmeFile['realpath'], $htmlReadme);
}
//排序
$sortedTree = $this->sortMenusAndDirTree($menus_sorted, $menus, $dirTree);
if (!empty($sortedTree)) {
$menus = $sortedTree['menus'];
$dirTree = $sortedTree['dirTree'];
}
$cateId = $this->get('id', $menus[0]['id']);
$subcate = $scanResults[$cateId];
//获取当前目录下的readme
$cateReadmeFile = $scanner->getDefaultReadme($cateId);
if (!empty($cateReadmeFile)) {
$Parsedown = new Parsedown();
$content = file_get_contents($cateReadmeFile['realpath']);
$htmlCateReadme = $Parsedown->text($content);
$htmlCateReadme = $scanner->fixMDUrls($cateReadmeFile['realpath'], $htmlCateReadme);
}
//获取默认mp3文件
$rootCateId = $this->get('id', '');
$mp3File = $scanner->getDefaultFile('mp3', $rootCateId);
if (empty($mp3File)) {
$mp3File = $scanner->getDefaultFile('mp3');
}
$pageTitle = !empty($titles) ? $titles[0]['name'] : "FileSite.io - 无数据库、基于文件和目录的Markdown文档、网址导航、图书、图片、视频网站PHP开源系统";
if (!empty($readmeFile['title'])) {
$pageTitle = $readmeFile['title'];
}
if (!empty($subcate)) {
$pageTitle = "{$subcate['directory']}照片,来自{$pageTitle}";
}
$viewName = 'index';
$params = compact(
'cateId', 'dirTree', 'scanResults', 'menus', 'htmlReadme', 'htmlCateReadme',
'mp3File'
);
return $this->render($viewName, $params, $pageTitle);
}
}

84
themes/beauty/views/layout/main.php

@ -0,0 +1,84 @@
<?php
//常用方法
require_once __DIR__ . '/../../../../plugins/Html.php';
?><!DocType html>
<html>
<head>
<meta charset="utf-8">
<title><?php echo $pageTitle;?></title>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no">
<link rel="icon" type="image/x-icon" href="/favicon.ico?v1.0">
<link href="/css/main.css?v.1.1" rel="stylesheet">
<!--for theme beauty-->
<link href="/css/github-markdown-light.css" rel="stylesheet" id="markdowncss">
<link href="/css/bootstrap.min.css" rel="stylesheet">
<link href="/css/fubox.min.css" rel="stylesheet">
<link href="/css/beauty.css?v<?=Html::getStaticFileVersion('beauty.css', 'css')?>" rel="stylesheet">
</head>
<body>
<div id="image_site" class="main_style">
<?php
//### Render view file
if (!empty($viewFile) && file_exists($viewFile)) {
include_once $viewFile;
}
?>
<!-- 尾部网站信息 -->
<footer class="web_info vercenter">
<p>
Copyright <span>&copy;2022</span>
by <a href="https://filesite.io/" target="_blank">FileSite.io</a>
<br>
<?php if (!empty(FSC::$app['config']['theme'])) { ?>
当前皮肤 <strong><?php echo FSC::$app['config']['theme']; ?></strong>
- 执行耗时: {page_time_cost} ms
<?php } ?>
</p>
<?php if (!empty(FSC::$app['config']['googleimage']['contact'])) {
$contactInfo = FSC::$app['config']['googleimage']['contact'];
echo <<<eof
<p>{$contactInfo}</p>
eof;
} ?>
</footer>
<!-- 右侧弹出框 -->
<div class="blank_cover elementNone blank_coverJS rtcloseJS"></div>
<div class="right_sidebox right_sideboxJS elementNone">
<h5>
<span>联系我们</span>
<a class="rtcloseJS" href="javascript:;">
<img class="icon svgimg verMiddle" src="/img/beauty/clos.svg" alt="关闭" title="关闭">
</a>
</h5>
<div class="modal-body markdown-body">
<?php echo !empty($viewData['htmlReadme']) ? $viewData['htmlReadme'] : ''; ?>
</div>
</div>
<!-- 右下角回到顶部悬浮块 -->
<div class="btrt_side">
<ul class="btrt_side_ul">
<li class="scroll_top scroll_topJS">
<img class="icon svg" src="/img/beauty/huojian.svg" alt="回到顶部" title="点击回到顶部" />
</li>
<li class="connectmeJS">
<img class="icon svg verMiddle" src="/img/beauty/scrolltop.svg" alt="联系我们" title="联系我们" />
</li>
</ul>
</div>
</div>
<!--for theme googleimage-->
<script src="/js/jquery-3.6.0.min.js"></script>
<script src="/js/bootstrap.min.js"></script>
<script src="/js/lazyload.js"></script>
<script src="/js/fubox.min.js"></script>
<script src="/js/beauty.js?v<?=Html::getStaticFileVersion('beauty.js', 'js')?>"></script>
</body>
</html>

243
themes/beauty/views/site/index.php

@ -0,0 +1,243 @@
<!-- 顶部导航栏模块 -->
<nav class="navbar navbar-default navbar-fixed-top navbarJS">
<div class="container-fluid">
<!-- Brand and toggle get grouped for better mobile display navbar-inverse-->
<div class="navbar-header">
<div class="navbar-toggle">
<img class="svg icon1 svgimg lampJS verMiddle" src="/img/beauty/buld.svg" alt="点击关灯/开灯" title="点击关灯/开灯">
<button type="button" class="collapsed mr_button" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"
aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<img class="svg icon1 svgimg verMiddle" src="/img/beauty/navshow.svg" alt="展开列表" title="展开列表">
</button>
</div>
<a class="navbar-brand" href="/">
<img class="verMiddle" src="/content/machete_icon.png" alt="logo图片">
<span class="verMiddle">FileSite图片站</span>
</a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<?php
$selectedId = $viewData['cateId'];
$breadcrumbs = !empty($viewData['breadcrumbs']) ? $viewData['breadcrumbs'] : [];
if (!empty($viewData['menus'])) { //只显示第一级目录
foreach($viewData['menus'] as $index => $item) {
$selected = $item['id'] == $selectedId || (!empty($breadcrumbs) && $item['id'] == $breadcrumbs[0]['id']) ? 'active' : '';
echo <<<eof
<li class="{$selected}"><a href="/?id={$item['id']}">{$item['directory']}</a></li>
eof;
}
}
?>
</ul>
<?php /*
<form class="navbar-form navbar-left">
<div class="form-group">
<input type="text" class="form-control" placeholder="Search">
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
*/ ?>
<div class="nb_right nav navbar-nav navbar-right">
<img class="svg icon1 svgimg lampJS verMiddle" src="/img/beauty/buld.svg" alt="点击关灯/开灯" title="点击关灯/开灯">
<img class="icon1 svg connectmeJS svgimg svgimg2 iconr2 verMiddle" src="/img/beauty/scrolltop.svg" alt="联系我们" title="联系我们">
</div>
</div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid -->
</nav>
<?php
if (!empty($breadcrumbs)) {
echo <<<eof
<div class="breadcrumbs">
<small>当前位置:</small>
eof;
foreach($breadcrumbs as $bread) {
if ($bread['id'] != $selectedId) {
echo <<<eof
<a href="{$bread['url']}">{$bread['name']}</a> /
eof;
}else {
echo <<<eof
<strong>{$bread['name']}</strong>
eof;
}
}
echo <<<eof
</div>
eof;
}
?>
<!-- 内容主题 -->
<div class="img_main">
<div class="im_mainl row">
<?php
$imgExts = !empty(FSC::$app['config']['supportedImageExts']) ? FSC::$app['config']['supportedImageExts'] : array('jpg', 'jpeg', 'png', 'webp', 'gif');
$category = !empty($viewData['scanResults'][$selectedId]) ? $viewData['scanResults'][$selectedId] : [];
//当前目录的描述介绍
if (!empty($category['description'])) {
echo <<<eof
<p class="modal-body">{$category['description']}</p>
eof;
}
//当前目录的readme详细介绍
if (!empty($viewData['htmlCateReadme'])) {
echo <<<eof
<div class="modal-body markdown-body">{$viewData['htmlCateReadme']}</div>
eof;
}
if (!empty($category['directories'])) { //两级目录支持
$index = 0;
foreach($category['directories'] as $dir) {
echo <<<eof
<div class="im_item bor_radius col-xs-6 col-sm-4 col-md-3 col-lg-2">
<a href="{$dir['path']}" class="bor_radius">
eof;
if (!empty($dir['snapshot'])) {
if ($index > 0) {
echo <<<eof
<img data-original="{$dir['snapshot']}" class="bor_radius im_img lazy" alt="{$dir['directory']}">
eof;
}else {
echo <<<eof
<img src="{$dir['snapshot']}" class="bor_radius im_img" alt="{$dir['directory']}">
eof;
}
}else if (!empty($dir['files'])) {
$first_img = array_shift($dir['files']);
if (!in_array($first_img['extension'], $imgExts)) {
foreach($dir['files'] as $file) {
if (in_array($file['extension'], $imgExts)) {
$first_img = $file;
break;
}
}
}
if (in_array($first_img['extension'], $imgExts)) {
if ($index > 0) {
echo <<<eof
<img data-original="{$first_img['path']}" class="bor_radius im_img lazy" alt="{$first_img['filename']}">
eof;
}else {
echo <<<eof
<img src="{$first_img['path']}" class="bor_radius im_img" alt="{$first_img['filename']}">
eof;
}
}else {
echo <<<eof
<img src="/img/default.png" class="bor_radius im_img" alt="default image">
eof;
}
}
$title = !empty($dir['title']) ? $dir['title'] : $dir['directory'];
echo <<<eof
<div class="im_img_title">
<span>{$title}</span>
</div>
</a>
</div>
eof;
$index ++;
}
}
if (!empty($category['files'])) { //一级目录支持
$index = 0;
foreach($category['files'] as $file) {
if (!in_array($file['extension'], $imgExts)) {continue;}
$title = !empty($file['title']) ? $file['title'] : $file['filename'];
if ($index > 0) {
echo <<<eof
<div class="im_item bor_radius col-xs-6 col-sm-4 col-md-3 col-lg-2">
<a href="javascript:;" class="bor_radius" data-fancybox="gallery" data-src="{$file['path']}" data-caption="图片{$title}">
<img src="img/beauty/lazy.svg" data-original="{$file['path']}" class="bor_radius im_img lazy" alt="{$file['filename']}">
</a>
</div>
eof;
}else {
echo <<<eof
<div class="im_item bor_radius col-xs-6 col-sm-4 col-md-3 col-lg-2">
<a href="javascript:;" class="bor_radius" data-fancybox="gallery" data-src="{$file['path']}" data-caption="图片{$title}">
<img src="{$file['path']}" class="bor_radius im_img" alt="{$file['filename']}">
</a>
</div>
eof;
}
$index ++;
}
}
?>
</div>
</div>
<?php /*if (!empty($viewData['mp3File'])) { ?>
<audio autoplay controls loop preload="auto" id="music" class="hide">
<source src="<?=$viewData['mp3File']['path']?>" type="audio/mpeg">
Your browser does not support the audio element.
</audio>
<div class="mbtns" onclick="playMusic()">
<div class="mbtn playing hide" id="btn_playing">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cassette-fill" viewBox="0 0 16 16">
<path d="M1.5 2A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h.191l1.862-3.724A.5.5 0 0 1 4 10h8a.5.5 0 0 1 .447.276L14.31 14h.191a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2h-13ZM4 7a1 1 0 1 1 0-2 1 1 0 0 1 0 2Zm8 0a1 1 0 1 1 0-2 1 1 0 0 1 0 2ZM6 6a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2H7a1 1 0 0 1-1-1Z"/>
<path d="m13.191 14-1.5-3H4.309l-1.5 3h10.382Z"/>
</svg>
</div>
<div class="mbtn paused" id="btn_paused">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cassette" viewBox="0 0 16 16">
<path d="M4 8a1 1 0 1 0 0-2 1 1 0 0 0 0 2Zm9-1a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM7 6a1 1 0 0 0 0 2h2a1 1 0 1 0 0-2H7Z"/>
<path d="M1.5 2A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2h-13ZM1 3.5a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-.691l-1.362-2.724A.5.5 0 0 0 12 10H4a.5.5 0 0 0-.447.276L2.19 13H1.5a.5.5 0 0 1-.5-.5v-9ZM11.691 11l1 2H3.309l1-2h7.382Z"/>
</svg>
</div>
</div>
<script>
function playMusic() {
var mp3 = document.getElementById('music');
var playingBtn = document.getElementById('btn_playing'),
pausedBtn = document.getElementById('btn_paused');
try {
if (mp3.paused) {
mp3.play();
mp3.volume = 0.5;
playingBtn.className = playingBtn.className.replace(' hide', '');
pausedBtn.className = pausedBtn.className.replace(' hide', '') + ' hide';
}else {
mp3.pause();
pausedBtn.className = pausedBtn.className.replace(' hide', '');
playingBtn.className = playingBtn.className.replace(' hide', '') + ' hide';
}
}catch(e){}
}
function detectMusicAutoPlaying() {
var mp3 = document.getElementById('music');
var playingBtn = document.getElementById('btn_playing'),
pausedBtn = document.getElementById('btn_paused');
try {
if (!mp3.paused) {
mp3.volume = 0.5;
playingBtn.className = pausedBtn.className.replace(' hide', '');
pausedBtn.className = playingBtn.className.replace(' hide', '') + ' hide';
if (typeof(timer) != 'undefined') {clearInterval(timer);}
}
}catch(e){}
}
var timer = setInterval(detectMusicAutoPlaying, 50);
</script>
<?php }*/ ?>

152
www/css/beauty.css

@ -0,0 +1,152 @@
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,select,p,blockquote,th,td{margin:0;padding:0;font-size:14px;}
.clearfix{zoom:1;}
.clearfix:after{content:'.';display:block;visibility:hidden;clear:both;overflow:hidden;height:0px;}
body{position:relative;font-family: ;
word-break: break-all;
word-wrap: break-word;background-color:#FFF;font-size:14px;line-height:1.428571429;}
ul,li{list-style:none;margin:0;padding:0;}
img,span{display:inline-block;max-width:100%;}
a{color:#464c5c;}
.img-responsive{max-width:100%;display:block;}
.elementBlock{display:block !important;}
.elementNone{display:none !important;}
.elementhidden{visibility:hidden !important;}
.verMiddle{vertical-align:middle !important;}
.vercenter{text-align:center !important;}
.verbold{font-weight:bold !important;}
.opacityshow{opacity:1 !important;}
.qcmargin{margin:0 !important;}
a:hover{text-decoration:none;}
a:active{text-decoration:none;}
a:visited{text-decoration:none;}
a:link{text-decoration:none;}
.lampshow{background-color:#222}
.main_style{padding-top:64px;}
.navbar-default {
background-color:#FFF;
}
.navbar .navbar-brand {
font-family: Brush Script MT;
font-weight: normal;
color:#b1afaf;
font-size: 21px;
line-height: 21px;
padding:0 14px 0 13px;
height:auto;
margin-top:10px;
text-shadow:1px 1px 0 rgb(122 122 122),
1px 1px 5px rgb(183 183 183 / 80%);
}
.navbar .navbar-brand img{width:30px;display:inline-block;}
/* .navbar{box-shadow: 0px 0px 5px 1px rgba(0, 0, 0, .6);} */
.navbar .navbar-toggle{padding:0;border:none;margin-top:10px;}
.navbar .mr_button{border:none;background:none;}
.svgimg{width:2em;height:2em;vertical-align:middle;fill: currentColor;overflow: hidden;}
.svgimg2{width: 1.8em;height: 1.8em;}
.navbar .svg{cursor:pointer;color: #6c6c6c;}
.navbar .svg:hover{color:#000;}
.navbar .navbar-toggle:focus,
.navbar .navbar-toggle:hover{background:none;}
.nb_right{padding:10px 2% 0 0;}
.nb_right .iconr2{margin:3px 0 0 10px;}
.im_mainl{margin:0 10px 12px 10px;}
.bor_radius{border-radius:10px;}
.im_img{transform:scale(1);transition:all 0.5s ease;object-fit:cover;display:block;width:100%;height:100%;}
.im_img:hover{transform:scale(1.03);}
.im_item{padding:5px;height:16vw;overflow:hidden;}
.im_item>a{overflow: hidden;display:block;position:relative;width: 100%;height: 100%;}
.im_img_title{background:rgba(7, 7, 7, .3);position:absolute;left:0;right:0;bottom:0;top:0;color:#FFF;border-radius:10px;}
.im_item:hover .im_img{transform:scale(1.03);}
.im_img_title span{position:absolute;bottom:10px;left:10px;margin-right:10px;font-weight:bold;padding:5px;border:solid 2px #FFF;border-radius:10px;}
.web_info{padding:10px 0 42px 0;margin-top:15px;border-top:solid 1px #f5f5f5;}
.web_info p{color:#808080;font-size:13px;margin:5px 0;}
.web_info a{text-decoration: underline;color:#808080;}
.web_info a:hover{color:#000;}
.btrt_side{position:fixed;bottom:46px;right:16px;transition:all 0.5s ease;}
.btrt_side_ul li{margin-top:4px;color:#878686;cursor:pointer;width:38px;height: 38px;line-height:38px;border-radius:50%;text-align:center;background-color:#f5f5f5;}
.btrt_side_ul li:hover{background:rgba(209, 209, 209, 1);color:#3e3d3d;}
.scroll_top{display:none;}
.btrt_side_ul li .svg{width:18px;cursor:pointer;}
.blank_cover{transition: all 0.5s ease;position:fixed;left:0;right:0;top:0;bottom:0;background:rgba(0, 0, 0, .7);opacity:0;z-index: 1099}
.right_sidebox{padding:15px 10px 15px 18px;opacity:0;transform:translateX(101%);background-color:#FFF;position:fixed;right:0;top:0;bottom:0;color:#333;width:396px;overflow-y:auto;max-width:100%;z-index:1100;}
.right_sidebox>h5{display:flex;padding:15px 0 10px 0;border-bottom:solid 1px #e9e2e2;margin-bottom:20px;}
.right_sidebox>h5 span{font-size:20px;font-weight:bold;flex: 1;}
.right_sidebox .link{text-decoration: underline;color:#457fc1;}
.right_sidebox .sort1{font-size:16px;font-weight:bold;margin-top:10px;}
.right_sidebox p{margin:5px 0;}
.right_sidebox .codeimg{width:48%;}
.sideboxShow{animation:bounceInRight 0.5s ease forwards;}
.page_meta{padding:10px 0 0 0;}
.page_meta .breadcrumb{background:none;display: inline-block;padding:8px 0 8px 0;margin:0;}
.breadcrumbs{padding-left:1.5em;padding-bottom:10px}
/* 主题切换 */
.lampshow .web_info{border-color:#363636;}
.lampshow .btrt_side_ul li{background-color:#181818;}
.lampshow .right_sidebox{background-color:#222;color:#FFF;}
.lampshow .right_sidebox>h5{border-color: #363636;}
@media screen and (max-width: 1199px) {
.im_item {
height: 23vw;
}
}
@media screen and (max-width: 991px) {
.im_item {
height: 32vw;
}
}
@media screen and (max-width: 767px) {
.im_item {
height: 45vw;
}
}
@keyframes bounceInRight {
0%,
60%,
75%,
90%,
to {
-webkit-animation-timing-function: cubic-bezier(.215, .61, .355, 1);
animation-timing-function: cubic-bezier(.215, .61, .355, 1)
}
0% {
opacity: 0;
-webkit-transform: translate3d(3000px, 0, 0) scaleX(3);
transform: translate3d(3000px, 0, 0) scaleX(3)
}
60% {
opacity: 1;
-webkit-transform: translate3d(-25px, 0, 0) scaleX(1);
transform: translate3d(-25px, 0, 0) scaleX(1)
}
75% {
-webkit-transform: translate3d(10px, 0, 0) scaleX(.98);
transform: translate3d(10px, 0, 0) scaleX(.98)
}
90% {
-webkit-transform: translate3d(-5px, 0, 0) scaleX(.995);
transform: translate3d(-5px, 0, 0) scaleX(.995)
}
to {
opacity: 1;
-webkit-transform: translateZ(0);
transform: translateZ(0)
}
}

6
www/css/bootstrap.min.css vendored

File diff suppressed because one or more lines are too long

1
www/css/fubox.min.css vendored

File diff suppressed because one or more lines are too long

15
www/img/beauty/buld.svg

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg class="icon1" viewBox="0 0 1024 1024" style="color:#6c6c6c;width: 2em;height: 2em;vertical-align: middle;fill: currentColor;overflow: hidden;" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5317">
<path
d="M497.9 897.3c-19 0-36.3-7.7-49.1-19.9 6.1 21.4 25.8 36.9 49.1 36.9h26.7c23.3 0 43-15.5 49.1-36.9-12.8 12.2-30.1 19.9-49.1 19.9h-26.7zM444.2 667.9c-34-21.6-62.9-51.3-82.9-86.2-21.5-37.6-33.2-80.6-33.2-124.5 0-66.7 25.9-129.5 73.1-176.7 15.9-15.9 33.4-29.3 52.4-40.2C354 265.5 280 355.8 280 463.2c0 81.2 41.8 154.7 111 196.5l5.3 2.9v52.2c0 1.2 3.8 4.5 10.4 4.5h39.2c-1.7-3-1.6-6.8-1.6-10.2v-41.2z"
p-id="5318"></path>
<path
d="M614.8 738.7H408.6c-17.6 0-31.4-10.3-31.4-23.5v-41.3c-34-21.6-62.4-51.3-82.4-86.2-21.5-37.6-32.9-80.6-32.9-124.5 0-66.7 26-129.5 73.2-176.7s109.9-73.2 176.7-73.2 129.5 26 176.7 73.2 73.2 109.9 73.2 176.7c0 86.5-43 164.8-115.4 210.5v41.4c-0.1 13.3-13.9 23.6-31.5 23.6z m-217.5-23.8c0.7 1.2 4.7 3.8 11.4 3.8h206.2c6.6 0 10.6-2.6 11.4-3.8v-52.4l4.8-2.9c69.2-41.6 110.5-115 110.5-196.3 0-126.7-103.1-229.9-229.9-229.9-126.7 0-229.9 103.1-229.9 229.9 0 81.2 41.3 154.7 110.5 196.5l4.8 2.9v52.2zM632.4 790.6H391.1c-6.5 0-11.7-5.3-11.7-11.7v-26.6c0-6.5 5.3-11.7 11.7-11.7h241.3c6.5 0 11.7 5.3 11.7 11.7v26.6c0 6.5-5.2 11.7-11.7 11.7z m-233-20h224.8v-10H399.4v10zM632.4 844.6H391.1c-6.5 0-11.7-5.3-11.7-11.7v-25.1c0-6.5 5.3-11.7 11.7-11.7h241.3c6.5 0 11.7 5.3 11.7 11.7v25.1c0 6.5-5.2 11.7-11.7 11.7z m-233-20h224.8v-8.5H399.4v8.5zM525.1 931.2h-26.7c-39.2 0-71-31.9-71-71v-10h168.7v10c0 39.2-31.9 71-71 71z m-76.7-61c4.7 23.4 25.3 41 50 41h26.7c24.7 0 45.4-17.7 50-41H448.4zM884 484.5h-70.1c-5.5 0-10-4.5-10-10s4.5-10 10-10H884c5.5 0 10 4.5 10 10s-4.5 10-10 10zM839 297.2l-60.7 35c-4.8 2.8-10.9 1.1-13.7-3.7s-1.1-10.9 3.7-13.7l60.7-35c4.8-2.8 10.9-1.1 13.7 3.7s1.1 11-3.7 13.7zM706.4 157.5l-35 60.7c-2.8 4.8-8.9 6.4-13.7 3.7s-6.4-8.9-3.7-13.7l35-60.7c2.8-4.8 8.9-6.4 13.7-3.7s6.5 8.9 3.7 13.7zM521.8 102.8v70.1c0 5.5-4.5 10-10 10s-10-4.5-10-10v-70.1c0-5.5 4.5-10 10-10s10 4.5 10 10zM334.4 147.7l35 60.7c2.8 4.8 1.1 10.9-3.7 13.7s-10.9 1.1-13.7-3.7l-35-60.7c-2.8-4.8-1.1-10.9 3.7-13.7s11-1 13.7 3.7zM194.7 280.3l60.7 35c4.8 2.8 6.4 8.9 3.7 13.7s-8.9 6.4-13.7 3.7l-60.7-35c-4.8-2.8-6.4-8.9-3.7-13.7s8.9-6.4 13.7-3.7zM140 465h70.1c5.5 0 10 4.5 10 10s-4.5 10-10 10H140c-5.5 0-10-4.5-10-10s4.5-10 10-10z"
p-id="5319"></path>
<path
d="M537.4 729.3c-3.3-55.5 0.7-125.7 10.8-192.7 1.9-12.5 5.1-31.9 9.4-51.8-17.9 0.6-36.2-1.8-51.2-8-0.9 0.3-1.9 0.5-2.8 0.7-11 2.7-23.4 3.4-36.2 2.1 5.3 26.3 9.8 58.6 13.2 96.3 7 77.3 7.5 152 7.5 152.7l-20 0.1c0-0.7-0.4-74.6-7.4-151.1-4.1-44.9-9.2-77.8-14.5-101.8-1.1-0.3-2.1-0.6-3.2-0.9-32.8-9.4-65.9-31.9-60.9-59.3 1.5-8 6.5-15.2 13.9-19.8 13.7-8.5 24.8-5.8 31.7-2 14.6 8.1 25.8 28.7 35 64.9 6.6 1.1 13.3 1.6 19.9 1.4-6.5-7.7-10.1-17-10.6-27.4-1.7-35.7 16.6-48.6 24.5-52.5 13.5-6.7 29.7-4.6 41.4 5.2 13.8 11.6 18.2 31.2 11.9 52.5l-0.3 0.8c-3.8 9.8-9.7 18-17.2 24.5 9.6 1.6 20 1.9 30.2 1.2 5.9-22.8 13.3-43.4 21.9-51.9l0.3-0.3c11.9-10.7 25.3-14.2 36.8-9.7 10.6 4.2 17.8 14.7 18.8 27.2 1.2 15.7-7.3 30.6-22.8 39.8-10.1 6-23.9 10.5-39 13-3.6 15.8-7.3 34.8-10.6 56.8-9.9 65.7-13.8 134.4-10.6 188.5l-19.9 1.5z m61-302.3c-3.8 3.9-8.9 15.4-14.2 34.3 9.1-2.1 17.2-5.1 23.3-8.7 8.8-5.3 13.7-13.1 13.1-21.1-0.4-4.8-2.8-8.9-6.3-10.2-4.2-1.7-10 0.4-15.9 5.7z m-85.2-30.5c-2.7 0-5.3 0.6-7.8 1.8-9.3 4.6-14.2 16.9-13.4 33.7 0.5 9.9 5.6 17.6 15.7 23.3 10.1-4.4 18.4-11.8 23-23.3 3.9-13.4 1.8-24.7-5.8-31.1-3.3-2.9-7.5-4.4-11.7-4.4zM414 410.3c-1.9 0-4.2 0.7-7.3 2.6-2.6 1.6-4.3 4-4.8 6.4-1.8 9.6 13.1 24.6 38.6 33.8-8.9-30-17.6-39-22.4-41.6-1.1-0.7-2.4-1.2-4.1-1.2z"
p-id="5320"></path>
<path d="M646.7 380.9m-12 0a12 12 0 1 0 24 0 12 12 0 1 0-24 0Z" fill="#FF3333" p-id="5321"></path>
<path d="M519.7 332.9m-12 0a12 12 0 1 0 24 0 12 12 0 1 0-24 0Z" fill="#FF3333" p-id="5322"></path>
<path d="M385.7 360.9m-12 0a12 12 0 1 0 24 0 12 12 0 1 0-24 0Z" fill="#FF3333" p-id="5323"></path>
</svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

7
www/img/beauty/clos.svg

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg class="icon" style="width: 2em;height: 2em;color:#464c5c;vertical-align: middle;fill: currentColor;overflow: hidden;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7837">
<path
d="M512 64c-247.00852 0-448 200.960516-448 448S264.960516 960 512 960c247.00852 0 448-200.960516 448-448S759.039484 64 512 64zM694.752211 649.984034c12.480043 12.54369 12.447359 32.768069-0.063647 45.248112-6.239161 6.208198-14.399785 9.34412-22.591372 9.34412-8.224271 0-16.415858-3.135923-22.65674-9.407768l-137.60043-138.016718-138.047682 136.576912c-6.239161 6.14455-14.368821 9.247789-22.496761 9.247789-8.255235 0-16.479505-3.168606-22.751351-9.504099-12.416396-12.576374-12.320065-32.800753 0.25631-45.248112l137.887703-136.384249-137.376804-137.824056c-12.480043-12.512727-12.447359-32.768069 0.063647-45.248112 12.512727-12.512727 32.735385-12.447359 45.248112 0.063647l137.567746 137.984034 138.047682-136.575192c12.54369-12.447359 32.831716-12.320065 45.248112 0.25631 12.447359 12.576374 12.320065 32.831716-0.25631 45.248112L557.344443 512.127295 694.752211 649.984034z"
p-id="7838"></path>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

7
www/img/beauty/huojian.svg

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg class="icon" style="color:#6c6c6c;vertical-align:middle;fill: currentColor;overflow: hidden;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7497">
<path
d="M732.14332 523.674261c3.335505-253.498368-203.465796-366.905533-220.14332-373.576543l0 0c0 0 0 0 0 0 0 0 0 0 0 0l0 0c-13.342019 6.67101-223.478825 123.413679-220.14332 373.576543C248.495117 550.358299 205.133554 600.390872 211.804564 683.778493c6.67101 83.387621 90.058631 140.091203 120.078174 136.755699 30.019544-3.335505 23.348534-26.684039 23.348534-26.684039l10.006515-43.361563c0 0 46.697068 70.045602 60.039087 70.045602 13.342019 0 76.716611 0 83.387621 0l0 0c0 0 0 0 0 0 0 0 0 0 0 0l0 0c6.67101 0 70.045602 0 83.387621 0 13.342019 0 60.039087-70.045602 60.039087-70.045602l10.006515 43.361563c0 0-10.006515 23.348534 23.348534 26.684039 30.019544 3.335505 113.407165-53.368078 120.078174-136.755699C818.866446 600.390872 775.504883 550.358299 732.14332 523.674261L732.14332 523.674261zM512 520.338756c-6.67101 0-83.387621-3.335505-90.058631-93.394136C425.276874 340.221494 505.32899 333.550484 512 333.550484c6.67101 0 86.723126 6.67101 90.058631 93.394136C595.387621 517.003251 518.67101 520.338756 512 520.338756L512 520.338756zM465.302932 957.28989c0 10.006515-6.67101 20.013029-20.013029 20.013029l0 0c-10.006515 0-20.013029-6.67101-20.013029-20.013029l0-93.394136c0-10.006515 6.67101-20.013029 20.013029-20.013029l0 0c10.006515 0 20.013029 6.67101 20.013029 20.013029L465.302932 957.28989 465.302932 957.28989zM535.348534 1003.986958c0 10.006515-10.006515 20.013029-20.013029 20.013029l0 0c-10.006515 0-20.013029-10.006515-20.013029-20.013029L495.322476 867.23126c0-10.006515 10.006515-20.013029 20.013029-20.013029l0 0c10.006515 0 20.013029 10.006515 20.013029 20.013029L535.348534 1003.986958 535.348534 1003.986958zM598.723126 933.941356c0 10.006515-6.67101 20.013029-20.013029 20.013029l0 0c-10.006515 0-20.013029-6.67101-20.013029-20.013029l0-66.710097c0-10.006515 6.67101-20.013029 20.013029-20.013029l0 0c10.006515 0 20.013029 6.67101 20.013029 20.013029L598.723126 933.941356 598.723126 933.941356zM598.723126 933.941356M868.899018 0C868.899018 0 868.899018 0 868.899018 0L155.100982 0l0 0C148.429972 0 145.094467 6.67101 145.094467 13.342019c0 6.67101 3.335505 13.342019 10.006515 13.342019l0 0 713.798037 0c0 0 0 0 0 0 6.67101 0 10.006515-6.67101 10.006515-13.342019C878.905533 6.67101 875.570028 0 868.899018 0z"
p-id="7498"></path>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

2
www/img/beauty/lazy.svg

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="800" height="800" viewBox="0 0 800 800" xmlns="http://www.w3.org/2000/svg"><style>@keyframes dash1{0%{stroke-dashoffset:135}3%,to{stroke-dashoffset:0}}@keyframes dash2{0%,3%{stroke-dashoffset:2265}70%,to{stroke-dashoffset:0}}@keyframes dash3{0%,70%{stroke-dashoffset:135}73%,to{stroke-dashoffset:0}}</style><g id="page1" fill="none" fill-rule="evenodd"><path id="loading-bg" fill="#e7e7e7" d="M0 0h800v800H0z"/><path d="M190.83 359.28c1.545-4.135 3.058-14.913 1.542-11.686-21.59 45.965-47.036 106.732-41.638 111.406" stroke="#666" stroke-width="5" stroke-linecap="round" stroke-linejoin="round" style="animation:dash1 5s linear infinite" stroke-dasharray="135" stroke-dashoffset="135"/><path d="M171.267 371.447c-3.17 3.164-12.561 4.652-13.197 0-2.329-17.052 53.938-57.608 67.535-36.429 19.407 30.228-37.26 92.235-47.352 82.934-6.467-5.96 39.473-22.18 47.352-24.803 27.946-9.3 56.118-70.808 48.13-63.556-8.54 7.75-45.8 86.034-49.682 102.31-2.118 8.882 21.735-35.653 35.708-35.653 7.763 0 5.434 19.377 9.315 19.377 13.164 0 42.695-28.678 34.932-23.253-11.407 7.973-15.21 29.453-7.762 29.453 17.078 0 26.256-33.314 20.183-37.979-10.092-7.75-28.797 24.438 0 22.478 34.156-2.326 45.187-59.702 41.142-49.605-3.105 7.75-27.065 52.844-17.854 65.106 4.657 6.201 52.786-34.878 44.247-29.453-6.402 4.068-18.63 24.803-9.315 29.453 9.315 4.65 29.925-33.575 21.735-37.979-10.091-5.425-32.313 25.735 0 23.253 10.092-.775 36.485-17.052 29.498-15.502-6.986 1.55-27.932 26.17-19.406 32.554 6.21 4.65 35.986-44.434 33.38-37.204-6.987 19.377-31.828 83.709-41.92 83.709-8.274 0 10.073-23.911 31.052-44.955 20.349-20.413 43.286-37.98 39.59-37.98-2.33 0-12.422 34.779-11.645 32.554 9.713-27.795 63.762-29.62 61.325-32.553-9.683-11.655-34.053 24.163-24.064 27.903 6.21 2.325 18.63-15.502 18.63-20.152 0-1.95 1.553 20.152 10.092 18.602 18.188-3.302 40.952-41.665 33.38-34.104-3.545 3.539-14.284 23.472-21.736 44.18-8.869 24.644-14.228 50.108-13.197 46.505.788-2.755 8.74-28.097 19.407-50.38 10.348-21.617 23.078-40.223 27.946-37.98 10.091 4.65-10.868 46.505-22.512 44.955-11.644-1.55 10.42-13.137 37.26-31.003 18.631-12.402 51.794-79.254 38.038-63.557-10.868 12.401-55.891 117.812-46.576 99.986 4.602-8.807 26.43-34.543 34.932-36.43 6.986-1.55 5.434 17.828 9.315 19.378 4.225 1.687 14.834-5.289 31.827-20.927" stroke="#666" stroke-width="5" stroke-linecap="round" stroke-linejoin="round" style="animation:dash2 5s linear infinite" stroke-dasharray="2265" stroke-dashoffset="2265"/><path d="M309 367c37.866-4.156 69.592-6.743 95.179-7.761 17.746-.707 29.354.156 34.821 2.587" stroke="#666" stroke-width="5" stroke-linecap="round" stroke-linejoin="round" style="animation:dash3 5s linear infinite" stroke-dasharray="135" stroke-dashoffset="135"/></g></svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

2
www/img/beauty/navshow.svg

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg class="svg icon1" style="color:#6c6c6c;width:2em;height:2em;vertical-align:middle" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" fill="currentColor" overflow="hidden"><path d="M384 160H192a64 64 0 0 0-64 64v192a64 64 0 0 0 64 64h192a64 64 0 0 0 64-64V224a64 64 0 0 0-64-64zm448 0H640a64 64 0 0 0-64 64v192a64 64 0 0 0 64 64h192a64 64 0 0 0 64-64V224a64 64 0 0 0-64-64zM384 608H192a64 64 0 0 0-64 64v192a64 64 0 0 0 64 64h192a64 64 0 0 0 64-64V672a64 64 0 0 0-64-64zm448 0H640a64 64 0 0 0-64 64v192a64 64 0 0 0 64 64h192a64 64 0 0 0 64-64V672a64 64 0 0 0-64-64z"/></svg>

After

Width:  |  Height:  |  Size: 626 B

8
www/img/beauty/scrolltop.svg

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg class="icon verMiddle"
style="color:#6c6c6c;vertical-align: middle;fill: currentColor;overflow: hidden;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6083">
<path
d="M182.091294 756.705882H57.690353C45.281882 756.705882 7.529412 756.675765 7.529412 709.074824V463.631059c0-33.927529 18.748235-53.278118 50.160941-53.278118h124.416c34.032941 0 66.379294 20.871529 66.379294 53.278118v245.443765c-0.015059 17.769412-16.865882 47.631059-66.394353 47.631058zM966.174118 756.705882h-128.692706c-22.678588 0-46.878118-5.436235-46.878118-47.631058V463.631059c0-47.134118 28.687059-53.278118 46.878118-53.278118h128.692706c33.355294 0 50.296471 19.862588 50.29647 53.278118v245.443765c0 31.593412-14.426353 47.631059-50.29647 47.631058zM60.054588 428.739765a14.471529 14.471529 0 0 1-14.396235-16.00753C70.098824 184.801882 266.405647 19.365647 512.421647 19.365647c245.684706 0 441.976471 165.391059 466.718118 393.261177a14.456471 14.456471 0 0 1-28.762353 3.132235C927.262118 202.842353 743.062588 48.308706 512.421647 48.308706c-234.676706 0-414.795294 151.130353-438.000941 367.510588a14.456471 14.456471 0 0 1-14.366118 12.920471z m797.936941-3.282824a14.456471 14.456471 0 0 1-14.411294-13.342117C831.563294 259.403294 679.920941 130.379294 512.421647 130.379294s-319.156706 129.008941-331.143529 281.720471a14.471529 14.471529 0 0 1-28.852706-2.258824c13.146353-167.168 177.995294-308.389647 359.996235-308.389647 182.000941 0 346.849882 141.221647 359.996235 308.404706a14.471529 14.471529 0 0 1-14.426353 15.600941zM607.472941 984.139294a14.456471 14.456471 0 0 1-3.072-28.596706c106.601412-23.356235 233.773176-105.336471 259.553883-211.275294a14.456471 14.456471 0 1 1 28.114823 6.851765C863.518118 868.442353 725.729882 958.569412 610.575059 983.792941a14.607059 14.607059 0 0 1-3.102118 0.346353zM603.934118 1007.962353a38.339765 38.339765 0 0 1-38.294589-38.294588 38.339765 38.339765 0 0 1 38.294589-38.294589 38.339765 38.339765 0 0 1 38.294588 38.294589 38.324706 38.324706 0 0 1-38.294588 38.294588z m0-47.661177a9.366588 9.366588 0 0 0 0 18.718118 9.366588 9.366588 0 0 0 0-18.718118z"
p-id="6084"></path>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

79
www/js/beauty.js

@ -0,0 +1,79 @@
/*
******The author
******Tan
*/
if ($('#image_site').get(0)) {
// 图片浏览
$('[data-fancybox]').fancybox({
toolbar: true,
loop: false,
smallBtn: false,
buttons: ["zoom", "slideShow", "fullScreen", "download", "thumbs", "close"],
iframe: {
preload: false
}
})
// 图片懒加载
$("img.lazy").lazyload({
effect: "fadeIn",
event: "scroll"
});
// 返回顶部
var scrolltop = $('#image_site .scroll_topJS');
$(window).scroll(function () {
if ($(this).scrollTop() > 100) {
scrolltop.fadeIn();
} else {
scrolltop.fadeOut();
}
});
scrolltop.on('touchstart click', function () {
$('html, body').animate({ scrollTop: 0 }, 380);
return false;
});
// 点击打开右侧弹出框
$('#image_site .connectmeJS').click(function () {
$('#image_site .blank_coverJS, #image_site .right_sideboxJS').removeClass('elementNone');
window.setTimeout(function () {
$('#image_site .blank_coverJS').addClass('opacityshow');
$('#image_site .right_sideboxJS').addClass('sideboxShow');
}, 0);
});
// 点击关闭右侧弹出框
$('#image_site .rtcloseJS').click(function () {
$('#image_site .blank_coverJS').removeClass('opacityshow');
$('#image_site .right_sideboxJS').removeClass('sideboxShow');
window.setTimeout(function () {
$('#image_site .blank_coverJS, #image_site .right_sideboxJS').addClass('elementNone');
}, 500);
});
// 白天黑夜模式切换
var lanpnum = 0;
$('#image_site .lampJS').click(function () {
if (lanpnum == 0) {
$('#markdowncss').attr('href', '/css/github-markdown-dark.css');
$(document.body).addClass('lampshow');
$('#image_site .navbarJS').removeClass('navbar-default').addClass('navbar-inverse'); // 导航栏用bootstrap主题切换
lanpnum = 1;
} else if (lanpnum == 1){
$('#markdowncss').attr('href', '/css/github-markdown-light.css');
$(document.body).removeClass('lampshow');
$('#image_site .navbarJS').addClass('navbar-default').removeClass('navbar-inverse');
lanpnum = 0;
}
return;
});
}

6
www/js/bootstrap.min.js vendored

File diff suppressed because one or more lines are too long

13
www/js/fubox.min.js vendored

File diff suppressed because one or more lines are too long

15
www/js/lazyload.js

@ -0,0 +1,15 @@
(function($,window,document,undefined){var $window=$(window);$.fn.lazyload=function(options){var elements=this;var $container;var settings={threshold:0,failure_limit:0,event:"scroll",effect:"show",container:window,data_attribute:"original",skip_invisible:true,appear:null,load:null,placeholder:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC"};function update(){var counter=0;elements.each(function(){var $this=$(this);if(settings.skip_invisible&&!$this.is(":visible")){return;}
if($.abovethetop(this,settings)||$.leftofbegin(this,settings)){}else if(!$.belowthefold(this,settings)&&!$.rightoffold(this,settings)){$this.trigger("appear");counter=0;}else{if(++counter>settings.failure_limit){return false;}}});}
if(options){if(undefined!==options.failurelimit){options.failure_limit=options.failurelimit;delete options.failurelimit;}
if(undefined!==options.effectspeed){options.effect_speed=options.effectspeed;delete options.effectspeed;}
$.extend(settings,options);}
$container=(settings.container===undefined||settings.container===window)?$window:$(settings.container);if(0===settings.event.indexOf("scroll")){$container.bind(settings.event,function(){return update();});}
this.each(function(){var self=this;var $self=$(self);self.loaded=false;if($self.attr("src")===undefined||$self.attr("src")===false){if($self.is("img")){$self.attr("src",settings.placeholder);}}
$self.one("appear",function(){if(!this.loaded){if(settings.appear){var elements_left=elements.length;settings.appear.call(self,elements_left,settings);}
$("<img />").bind("load",function(){var original=$self.attr("data-"+settings.data_attribute);$self.hide();if($self.is("img")){$self.attr("src",original);}else{$self.css("background-image","url('"+original+"')");}
$self[settings.effect](settings.effect_speed);self.loaded=true;var temp=$.grep(elements,function(element){return!element.loaded;});elements=$(temp);if(settings.load){var elements_left=elements.length;settings.load.call(self,elements_left,settings);}}).attr("src",$self.attr("data-"+settings.data_attribute));}});if(0!==settings.event.indexOf("scroll")){$self.bind(settings.event,function(){if(!self.loaded){$self.trigger("appear");}});}});$window.bind("resize",function(){update();});if((/(?:iphone|ipod|ipad).*os 5/gi).test(navigator.appVersion)){$window.bind("pageshow",function(event){if(event.originalEvent&&event.originalEvent.persisted){elements.each(function(){$(this).trigger("appear");});}});}
$(document).ready(function(){update();});return this;};$.belowthefold=function(element,settings){var fold;if(settings.container===undefined||settings.container===window){fold=(window.innerHeight?window.innerHeight:$window.height())+$window.scrollTop();}else{fold=$(settings.container).offset().top+$(settings.container).height();}
return fold<=$(element).offset().top-settings.threshold;};$.rightoffold=function(element,settings){var fold;if(settings.container===undefined||settings.container===window){fold=$window.width()+$window.scrollLeft();}else{fold=$(settings.container).offset().left+$(settings.container).width();}
return fold<=$(element).offset().left-settings.threshold;};$.abovethetop=function(element,settings){var fold;if(settings.container===undefined||settings.container===window){fold=$window.scrollTop();}else{fold=$(settings.container).offset().top;}
return fold>=$(element).offset().top+settings.threshold+$(element).height();};$.leftofbegin=function(element,settings){var fold;if(settings.container===undefined||settings.container===window){fold=$window.scrollLeft();}else{fold=$(settings.container).offset().left;}
return fold>=$(element).offset().left+settings.threshold+$(element).width();};$.inviewport=function(element,settings){return!$.rightoffold(element,settings)&&!$.leftofbegin(element,settings)&&!$.belowthefold(element,settings)&&!$.abovethetop(element,settings);};$.extend($.expr[":"],{"below-the-fold":function(a){return $.belowthefold(a,{threshold:0});},"above-the-top":function(a){return!$.belowthefold(a,{threshold:0});},"right-of-screen":function(a){return $.rightoffold(a,{threshold:0});},"left-of-screen":function(a){return!$.rightoffold(a,{threshold:0});},"in-viewport":function(a){return $.inviewport(a,{threshold:0});},"above-the-fold":function(a){return!$.belowthefold(a,{threshold:0});},"right-of-fold":function(a){return $.rightoffold(a,{threshold:0});},"left-of-fold":function(a){return!$.rightoffold(a,{threshold:0});}});})(jQuery,window,document);
Loading…
Cancel
Save