handsome主题美化及优化:10.1.0最新版 - 2
文章目录
- 前言
- 基础设置优化
- 开启全站 HTTPS
- 添加 GZIP 压缩
- 美化永久链接
- 自定义后台路径
- 启用 Emoji 支持
- 功能增强
- 每日新闻自动更新
- 文章嵌入外部网页
- 时光机栏目配置
- 自定义音乐播放器音量
- 自定义CSS配置
- 文章标题居中显示
- 标题背景美化
- 文章版式优化
- LOGO 扫光特效
- 头像动画效果
- 图片悬停效果
- 滚动条美化
- 评论区美化
- 标签云优化
- 赞赏按钮动画
- 文本样式优化
- 海浪背景
- 全站黑白模式
- 移动端优化
- 自定义JavaScript配置
- 复制功能优化
- 禁止复制
- 复制成功提示
- 复制文章自动添加版权
- 界面特效
- 鼠标点击爱心特效
- 网站加载完成提示
- FPS 显示
- 左侧图标颜色和彩色标签云
- 动态网站标题
- 打字动画效果
- 安全防护
- 防止调试
- 滚动条优化
- 顶部滚动进度条
- 总结
前言
优化 typecho 博客不仅能提升访问速度,还能改善用户体验和网站安全性。本文将介绍一系列实用的优化配置,帮助你打造一个更完善的博客系统。
基础设置优化
开启全站 HTTPS
HTTPS 不仅能确保网站安全,还能提升搜索引擎排名。配置步骤如下:
- 首先在宝塔面板或通过配置文件给网站配置好 SSL 证书,并开启强制 HTTPS
- 进入网站后台,找到
设置
->基本设置
->站点地址
,将其改为 https 开头的网址
添加 GZIP 压缩
GZIP 压缩可以显著减小带宽压力,加快网站加载速度。在 config.inc.php
文件中添加以下配置:
/** 开启gzip压缩 */
ob_start('ob_gzhandler');
美化永久链接
可以去掉 URL 中的 index.php,使链接更加简洁:
更改前:https://example.com/index.php/archives/5.html
更改后:https://example.com/archives/5.html
配置步骤:
- 进入后台
设置
->永久链接
,启用地址重写功能 - 配置伪静态规则:
- 如果使用宝塔面板:网站 -> 设置 -> 伪静态 -> 选择 Typecho -> 保存
自定义后台路径
为了提高网站安全性,建议修改默认的后台路径:
- 将 Typecho 根目录中的
admin
文件夹改名,例如改为dashboard
- 修改
config.inc.php
文件中的后台路径配置:
/* 后台路径(相对路径) */
define('TYPECHO_ADMIN_DIR', '/dashboard/');
启用 Emoji 支持
要让 Typecho 完美支持 emoji 表情,需要修改数据库编码。执行以下 SQL 语句:
alter table typecho_comments convert to character set utf8mb4 collate utf8mb4_unicode_ci;
alter table typecho_contents convert to character set utf8mb4 collate utf8mb4_unicode_ci;
alter table typecho_fields convert to character set utf8mb4 collate utf8mb4_unicode_ci;
alter table typecho_metas convert to character set utf8mb4 collate utf8mb4_unicode_ci;
alter table typecho_options convert to character set utf8mb4 collate utf8mb4_unicode_ci;
alter table typecho_relationships convert to character set utf8mb4 collate utf8mb4_unicode_ci;
alter table typecho_users convert to character set utf8mb4 collate utf8mb4_unicode_ci;
然后修改 config.inc.php
中的数据库配置:
$db->addServer(array ('host' => 'localhost', 'user' => 'root','password' => 'root','charset' => 'utf8mb4', // 修改这一行'port' => 3306,'database' => ''
), Typecho_Db::READ | Typecho_Db::WRITE);
功能增强
每日新闻自动更新
创建一个独立页面,添加以下代码即可显示每日新闻图片:
<img src="https://api.4rz.cn/zbPhoto.jpg" />
或者使用备用接口:
<img src="http://api.03c3.cn/zb" />
文章嵌入外部网页
在文章中使用以下代码可以嵌入外部网页:
<iframe align="center" width="100%" height="740px" src="目标网页地址" frameborder="no" border="0" scrolling="no" marginwidth="0" marginheight="0">
</iframe>
时光机栏目配置
在主题后台的时光机配置
-> RSS动态内容配置
中添加以下内容:
{"id": "iciba","name": "每日一句","url": "https://proxy.attainment.cn/https://rss.attainment.cn/iciba/7/poster"
},
{"id": "bing","name": "Bing 壁纸","url": "https://proxy.attainment.cn/https://rss.attainment.cn/bing"
},
{"id": "DailyArt","name": "每日艺术","url": "https://proxy.attainment.cn/https://rss.attainment.cn/dailyart/zh"
}
自定义音乐播放器音量
在主题后台的设置外观
-> 开发者设置
-> 自定义JS
中添加:
setTimeout(function() {document.querySelector(".skPlayer-source").volume = 0.3;
}, 3000);
音量范围为 0.0-1.0,默认为 0.3,可根据需要调整。
自定义CSS配置
本节主要介绍 Handsome 主题的美化配置,所有 CSS 代码都需要添加到主题后台的外观
-> 设置外观
-> 开发者设置
-> 自定义CSS
中。部分涉及 PJAX 回调的代码需要添加到外观
-> 外观设置
-> PJAX
-> PJAX回调函数
中。
文章标题居中显示
/* 文章标题居中 */
header.bg-light.lter.wrapper-md {text-align: center;
}/* 首页标题文字居中 */
.m-t-none.text-ellipsis.index-post-title.text-title {text-align: center !important;
}
标题背景美化
/* 文章页h标签背景颜色修改 */
#post-content h1, #post-content h2 {background: linear-gradient(to bottom, transparent 60%, rgba(0,191,255,.3) 0) no-repeat;
}
文章版式优化
/* 首页文章版式阴影颜色 */
.panel {box-shadow: 1px 1px 5px 5px rgba(26, 169, 255, 0.35);-moz-box-shadow: 1px 1px 5px 5px rgba(26, 169, 255, 0.35);
}.panel:hover {box-shadow: 1px 1px 5px 5px rgba(26, 169, 255, 0.35);-moz-box-shadow: 1px 1px 5px 5px rgba(26, 169, 255, 0.35);
}/* 首页文章版式圆角化 */
.panel {border: none;border-radius: 15px;
}.panel-small {border: none;border-radius: 15px;
}.item-thumb {border-radius: 15px;
}/* 首页文章列表悬停上浮 */
.blog-post .panel:not(article) {transition: all 0.3s;
}.blog-post .panel:not(article):hover {transform: translateY(-10px);box-shadow: 0 8px 10px rgba(73, 90, 47, 0.47);
}
LOGO 扫光特效
/* logo扫光 */
.navbar-brand {position: relative;overflow: hidden;margin: 0px 0 0 0px;
}.navbar-brand:before {content: "";position: absolute;left: -665px;top: -460px;width: 200px;height: 15px;background-color: rgba(255,255,255,.5);-webkit-transform: rotate(-45deg);transform: rotate(-45deg);-webkit-animation: searchLights 6s ease-in 0s infinite;animation: searchLights 6s ease-in 0s infinite;
}@keyframes searchLights {40% { left: -100px; top: 0; }60% { left: 120px; top: 100px; }80% { left: -100px; top: 0px; }
}
头像动画效果
/* 鼠标经过头像旋转放大 */
.img-circle {border-radius: 50%;animation: light 4s ease-in-out infinite;transition: all 0.5s;
}.img-circle:hover {transform: scale(1.15) rotate(720deg);
}@keyframes light {0% { box-shadow: 0 0 4px #f00; }25% { box-shadow: 0 0 16px #0f0; }50% { box-shadow: 0 0 4px #00f; }75% { box-shadow: 0 0 16px #0f0; }100% { box-shadow: 0 0 4px #f00; }
}/* 时光机圆形头像 */
.img-square {border-radius: 50%;transition: all 0.3s;
}.img-square:hover {transform: rotate(360deg);
}.list-group-item .thumb-sm .img-square {border-radius: 5px;
}
图片悬停效果
/* 首页文章图片获取焦点放大 */
.item-thumb {cursor: pointer; transition: all 0.6s;
}.item-thumb:hover {transform: scale(1.05);
}.item-thumb-small {cursor: pointer; transition: all 0.6s;
}.item-thumb-small:hover {transform: scale(1.05);
}
滚动条美化
/* 美化网站右侧滚动条样式 */
::-webkit-scrollbar {width: 8px;height: 6px;
}::-webkit-scrollbar-track {background-color: transparent;-webkit-border-radius: 2em;border-radius: 2em;
}::-webkit-scrollbar-thumb {background-color: #949494;background-image: -webkit-linear-gradient(45deg,rgba(255,255,255,.4) 100%,transparent 100%,transparent 50%,rgba(255,255,255,.4) 50%,rgba(255,255,255,.4) 75%,transparent 75%,transparent);-webkit-border-radius: 2em;border-radius: 2em;
}
评论区美化
/* 评论边框 */
.comment-parent {margin: 20px;padding: 20px;border-radius: 25px;border: 1px solid rgba(255,255,255,.3);
}
标签云优化
/* 词云等距美化 */
#tag_cloud-2 a {border-radius: 5px;width: 32%;
}
赞赏按钮动画
/* 赞赏按钮跳动 */
.btn-pay {animation: star 0.5s ease-in-out infinite alternate;
}@keyframes star {from { transform: scale(1); }to { transform: scale(1.1); }
}
文本样式优化
/* 粗斜体上色 */
strong {color: #f26522;
}em {font-style: normal;color: #fcaf17;
}
海浪背景
在主题后台的开发者设置
-> 自定义CSS
中添加:
/* 海浪背景CSS部分 */
#wavesDIV {position: fixed;bottom: 0;width: 100%;display: block;height: 20vh;background-color: rgb(125,165,191);animation: move-out 2s cubic-bezier(0,.98,.97,1) forwards;
}.waves {position: relative;width: 100%;height: 15vh;margin-top: -15vh;min-height: 100px;max-height: 150px;
}.parallax > use {animation: move-forever 25s cubic-bezier(.55, .5, .45, .5) infinite;
}.parallax > use:nth-child(1) {animation-delay: -2s;animation-duration: 7s;
}.parallax > use:nth-child(2) {animation-delay: -3s;animation-duration: 10s;
}.parallax > use:nth-child(3) {animation-delay: -4s;animation-duration: 13s;
}.parallax > use:nth-child(4) {animation-delay: -5s;animation-duration: 20s;
}@keyframes move-forever {0% { transform: translate3d(-90px, 0, 0); }100% { transform: translate3d(85px, 0, 0); }
}@keyframes move-out {0% { transform: translateY(400%); }100% { transform: translateY(0%); }
}
在主题后台的开发者设置
-> 自定义输出head头部的HTML代码
中添加:
<!-- 海浪背景 -->
<div id="wavesDIV" style="display: block;"><svg class="waves" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 24 150 28" preserveAspectRatio="none" shape-rendering="auto"><defs><path id="gentle-wave" d="M-160 44c30 0 58-18 88-18s 58 18 88 18 58-18 88-18 58 18 88 18 v44h-352z"></path></defs><g class="parallax"><use xlink:href="#gentle-wave" x="48" y="-2" fill="rgba(125,165,191,0.3)"></use><use xlink:href="#gentle-wave" x="48" y="3" fill="rgba(125,165,191,0.5)"></use><use xlink:href="#gentle-wave" x="48" y="5" fill="rgba(125,165,191,0.7)"></use><use xlink:href="#gentle-wave" x="48" y="12" fill="rgba(125,165,191,1)"></use></g></svg>
</div>
全站黑白模式
可以选择以下任一方式开启全站黑白模式:
/* 方式一 */
html {-webkit-filter: grayscale(100%);filter: progid:DXImageTransform.Microsoft.BasicImage(graysale=1);filter: grayscale(100%);-webkit-filter: grayscale(1);
}/* 方式二(简化版) */
html {-webkit-filter: grayscale(100%);
}
移动端优化
/* 手机端不显示热门文章和标签云 */
@media (max-width:767px) {#tabs-4, #tag_cloud-2 {display: none;}
}
自定义JavaScript配置
本节介绍 Handsome 主题的 JavaScript 自定义配置,所有代码都需要添加到主题后台的外观
-> 设置外观
-> 开发者设置
-> 自定义 JavaScript
中。部分涉及 PJAX 回调的代码需要添加到外观
-> 外观设置
-> PJAX
-> PJAX回调函数
中。
复制功能优化
禁止复制
document.oncontextmenu = new Function("event.returnValue=false");
document.onselectstart = new Function("event.returnValue=false");
复制成功提示
/* 复制成功提示 */
kaygb_copy();
function kaygb_copy() {$(document).ready(function() {$("body").bind('copy', function(e) {hellolayer()})});var sitesurl = window.location.href;function hellolayer() {$.message({message: "尊重原创,转载请注明出处!<br> 本文作者:xuan<br>原文链接:" + sitesurl,title: "复制成功",type: "warning",autoHide: !1,time: "5000"})}
}
复制文章自动添加版权
/* 复制文章自动带版权 */
document.body.addEventListener('copy', function (e) {if (window.getSelection().toString() && window.getSelection().toString().length > 42) {setClipboardText(e);notie({type: 'info',text: '商业转载请联系作者获得授权,非商业转载请注明出处,谢谢合作。', autoHide: true})}
});function setClipboardText(event) {var clipboardData = event.clipboardData || window.clipboardData;if (clipboardData) {event.preventDefault();var htmlData = ''+ '著作权归作者所有。<br>'+ '商业转载请联系作者获得授权,非商业转载请注明出处!<br>'+ '本博转载文章版权及解释权归原作者所有,博主只是勤劳的搬运工!<br>'+ '作者:岁月无声<br>'+ '链接:' + window.location.href + '<br>'+ '来源:http://blog.ybyq.wang/<br><br>'+ window.getSelection().toString();var textData = ''+ '著作权归作者所有。\n'+ '商业转载请联系作者获得授权,非商业转载请注明出处!\n'+ '本博转载文章版权及解释权归原作者所有,博主只是勤劳的搬运工!\n'+ '作者:hellolin.cn\n'+ '链接:' + window.location.href + '\n'+ '来源:http://blog.ybyq.wang/\n\n'+ window.getSelection().toString();clipboardData.setData('text/html', htmlData);clipboardData.setData('text/plain', textData);}
}
界面特效
鼠标点击爱心特效
// 鼠标点击出现爱心特效
(function(window,document,undefined){var hearts = [];window.requestAnimationFrame = (function(){return window.requestAnimationFrame ||window.webkitRequestAnimationFrame ||window.mozRequestAnimationFrame ||window.oRequestAnimationFrame ||window.msRequestAnimationFrame ||function (callback){setTimeout(callback,1000/60);}})();init();function init(){css(".heart{width: 10px;height: 10px;position: fixed;background: #f00;transform: rotate(45deg);-webkit-transform: rotate(45deg);-moz-transform: rotate(45deg);}.heart:after,.heart:before{content: '';width: inherit;height: inherit;background: inherit;border-radius: 50%;-webkit-border-radius: 50%;-moz-border-radius: 50%;position: absolute;}.heart:after{top: -5px;}.heart:before{left: -5px;}");attachEvent();gameloop();}function gameloop(){for(var i=0;i<hearts.length;i++){if(hearts[i].alpha <=0){document.body.removeChild(hearts[i].el);hearts.splice(i,1);continue;}hearts[i].y--;hearts[i].scale += 0.004;hearts[i].alpha -= 0.013;hearts[i].el.style.cssText = "left:"+hearts[i].x+"px;top:"+hearts[i].y+"px;opacity:"+hearts[i].alpha+";transform:scale("+hearts[i].scale+","+hearts[i].scale+") rotate(45deg);background:"+hearts[i].color;}requestAnimationFrame(gameloop);}function attachEvent(){var old = typeof window.onclick==="function" && window.onclick;window.onclick = function(event){old && old();createHeart(event);}}function createHeart(event){var d = document.createElement("div");d.className = "heart";hearts.push({el : d,x : event.clientX - 5,y : event.clientY - 5,scale : 1,alpha : 1,color : randomColor()});document.body.appendChild(d);}function css(css){var style = document.createElement("style");style.type="text/css";try{style.appendChild(document.createTextNode(css));}catch(ex){style.styleSheet.cssText = css;}document.getElementsByTagName('head')[0].appendChild(style);}function randomColor(){return "rgb("+(~~(Math.random()*255))+","+(~~(Math.random()*255))+","+(~~(Math.random()*255))+")";}
})(window,document);
网站加载完成提示
/* 网站加载完成提示 */
function kaygb_referrer(){var kaygb_referrer = document.referrer;if (kaygb_referrer != ""){return "感谢您的访问! 您来自:<br>" + document.referrer;}else{return "";}
}
$.message({message: "为了网站的正常运行,请不要使用广告屏蔽插件,谢谢!<br >" + kaygb_referrer(),title: "网站加载完成",type: "success",autoHide: !1,time: "3000"
})
FPS 显示
/* FPS显示 */
var console={};
console.log=function(){};$('body').before('<div id="fps" style="z-index:10000;position:fixed;top:3;left:3;font-weight:bold;"></div>');
var showFPS = (function(){ var requestAnimationFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame ||window.oRequestAnimationFrame ||window.msRequestAnimationFrame || function(callback) { window.setTimeout(callback, 1000/60); }; var e,pe,pid,fps,last,offset,step,appendFps; fps = 0; last = Date.now(); step = function(){ offset = Date.now() - last; fps += 1; if( offset >= 1000 ){ last += offset; appendFps(fps); fps = 0; } requestAnimationFrame( step ); }; appendFps = function(fps){ console.log(fps+'FPS');$('#fps').html(fps+'FPS');};step();
})();
左侧图标颜色和彩色标签云
/* 左侧图标颜色and彩色标签云 */
let tags = document.querySelectorAll("#tag_cloud-2 a");
let infos = document.querySelectorAll(".badge");
let colorArr = ["#428BCA", "#AEDCAE", "#ECA9A7", "#DA99FF", "#FFB380", "#D9B999"];
tags.forEach(tag => {tagsColor = colorArr[Math.floor(Math.random() * colorArr.length)];tag.style.backgroundColor = tagsColor;
});
infos.forEach(info => {infosColor = colorArr[Math.floor(Math.random() * colorArr.length)];info.style.backgroundColor = infosColor;
});let leftHeader = document.querySelectorAll("span.nav-icon>svg,span.nav-icon>i");
let leftHeaderColorArr = ["#FF69B4", "#58c7ea", "#E066FF", "#FF69B4", "#FFA54F", "#90EE90"];
leftHeader.forEach(tag => {tagsColor = leftHeaderColorArr[Math.floor(Math.random() * colorArr.length)];tag.style.color = tagsColor;
});
动态网站标题
/* 动态网站标题 */
var OriginTitle = document.title;
var titleTime;
document.addEventListener('visibilitychange', function () {if (document.hidden) {$('[rel="icon"]').attr('href', "https://cdn.jsdelivr.net/gh/Catalpablog/handsome/img/warning.webp");document.title = '网页崩溃了!!!';clearTimeout(titleTime);}else {$('[rel="icon"]').attr('href', "https://cdn.jsdelivr.net/gh/Catalpablog/handsome/img/favicon.webp");document.title = '咦,又好啦(✿◡‿◡)' ;titleTime = setTimeout(function () {document.title = OriginTitle;}, 2000);}
});
打字动画效果
/* 打字动效 */
(function webpackUniversalModuleDefinition(a,b){if(typeof exports==="object"&&typeof module==="object"){module.exports=b()}else{if(typeof define==="function"&&define.amd){define([],b)}else{if(typeof exports==="object"){exports["POWERMODE"]=b()}else{a["POWERMODE"]=b()}}}})(this,function(){return(function(a){var b={};function c(e){if(b[e]){return b[e].exports}var d=b[e]={exports:{},id:e,loaded:false};a[e].call(d.exports,d,d.exports,c);d.loaded=true;return d.exports}c.m=a;c.c=b;c.p="";return c(0)})([function(c,g,b){var d=document.createElement("canvas");d.width=window.innerWidth;d.height=window.innerHeight;d.style.cssText="position:fixed;top:0;left:0;pointer-events:none;z-index:999999";window.addEventListener("resize",function(){d.width=window.innerWidth;d.height=window.innerHeight});document.body.appendChild(d);var a=d.getContext("2d");var n=[];var j=0;var k=120;var f=k;var p=false;o.shake=true;function l(r,q){return Math.random()*(q-r)+r}function m(r){if(o.colorful){var q=l(0,360);return"hsla("+l(q-10,q+10)+", 100%, "+l(50,80)+"%, "+1+")"}else{return window.getComputedStyle(r).color}}function e(){var t=document.activeElement;var v;if(t.tagName==="TEXTAREA"||(t.tagName==="INPUT"&&t.getAttribute("type")==="text")){var u=b(1)(t,t.selectionStart);v=t.getBoundingClientRect();return{x:u.left+v.left,y:u.top+v.top,color:m(t)}}var s=window.getSelection();if(s.rangeCount){var q=s.getRangeAt(0);var r=q.startContainer;if(r.nodeType===document.TEXT_NODE){r=r.parentNode}v=q.getBoundingClientRect();return{x:v.left,y:v.top,color:m(r)}}return{x:0,y:0,color:"transparent"}}function h(q,s,r){return{x:q,y:s,alpha:1,color:r,velocity:{x:-1+Math.random()*2,y:-3.5+Math.random()*2}}}function o(){var t=e();var s=5+Math.round(Math.random()*10);while(s--){n[j]=h(t.x,t.y,t.color);j=(j+1)%500}f=k;if(!p){requestAnimationFrame(i)}if(o.shake){var r=1+2*Math.random();var q=r*(Math.random()>0.5?-1:1);var u=r*(Math.random()>0.5?-1:1);document.body.style.marginLeft=q+"px";document.body.style.marginTop=u+"px";setTimeout(function(){document.body.style.marginLeft="";document.body.style.marginTop=""},75)}}o.colorful=false;function i(){if(f>0){requestAnimationFrame(i);f--;p=true}else{p=false}a.clearRect(0,0,d.width,d.height);for(var q=0;q<n.length;++q){var r=n[q];if(r.alpha<=0.1){continue}r.velocity.y+=0.075;r.x+=r.velocity.x;r.y+=r.velocity.y;r.alpha*=0.96;a.globalAlpha=r.alpha;a.fillStyle=r.color;a.fillRect(Math.round(r.x-1.5),Math.round(r.y-1.5),3,3)}}requestAnimationFrame(i);c.exports=o},function(b,a){(function(){var d=["direction","boxSizing","width","height","overflowX","overflowY","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","fontStyle","fontVariant","fontWeight","fontStretch","fontSize","fontSizeAdjust","lineHeight","fontFamily","textAlign","textTransform","textIndent","textDecoration","letterSpacing","wordSpacing","tabSize","MozTabSize"];var e=window.mozInnerScreenX!=null;function c(k,l,o){var h=o&&o.debug||false;if(h){var i=document.querySelector("#input-textarea-caret-position-mirror-div");if(i){i.parentNode.removeChild(i)}}var f=document.createElement("div");f.id="input-textarea-caret-position-mirror-div";document.body.appendChild(f);var g=f.style;var j=window.getComputedStyle?getComputedStyle(k):k.currentStyle;g.whiteSpace="pre-wrap";if(k.nodeName!=="INPUT"){g.wordWrap="break-word"}g.position="absolute";if(!h){g.visibility="hidden"}d.forEach(function(p){g[p]=j[p]});if(e){if(k.scrollHeight>parseInt(j.height)){g.overflowY="scroll"}}else{g.overflow="hidden"}f.textContent=k.value.substring(0,l);if(k.nodeName==="INPUT"){f.textContent=f.textContent.replace(/\s/g,"\u00a0")}var n=document.createElement("span");n.textContent=k.value.substring(l)||".";f.appendChild(n);var m={top:n.offsetTop+parseInt(j["borderTopWidth"]),left:n.offsetLeft+parseInt(j["borderLeftWidth"])};if(h){n.style.backgroundColor="#aaa"}else{document.body.removeChild(f)}return m}if(typeof b!="undefined"&&typeof b.exports!="undefined"){b.exports=c}else{window.getCaretCoordinates=c}}())}])});
POWERMODE.colorful=true;
POWERMODE.shake=false;
document.body.addEventListener("input",POWERMODE);
安全防护
防止调试
/* 防调试 */
$(document).ready(function () {document.oncontextmenu = function () {return false;}document.onkeydown = function () {//f12if (window.event && window.event.keyCode == 123) {event.keyCode = 0;event.returnValue = false;layer.msg("球球了,别再扒孩子了=.=")return false;}//ctrl+uif (event.ctrlKey && window.event.keyCode == 85) {return false;}//ctrl+shift+iif ((event.ctrlKey) && (event.shiftKey) && (event.keyCode == 73)) {return false;}// Ctrl+Selse if ((event.ctrlKey) && (event.keyCode == 83)) {return false;}};
});//debug调试时跳转页面
var element = new Image();
Object.defineProperty(element,'id',{get:function(){window.location.href="https://blog.ybyq.wang"}});
console.log(element);
滚动条优化
顶部滚动进度条
/* 动态滚动进度条 */
$(window).scroll(function() {var winTop = $(window).scrollTop(), //滚动条的位置docHeight = $(document).height(), //文档高度winHeight = $(window).height(); //窗口高度var scrolled = (winTop / (docHeight - winHeight))*100;$('.scroll-line').css('width', (scrolled + '%'));
});
注意:需要关闭后台的固定头部和固定导航,效果最佳。
总结
以上优化方案涵盖了 Typecho 博客的多个方面,从基础设置到功能增强。建议根据实际需求选择性地进行配置,在优化的同时也要注意保持网站的稳定性。
如果你在配置过程中遇到问题,欢迎在评论区讨论。同时也欢迎分享你的优化经验,让我们共同提升博客体验!
作者:xuan
个人博客:https://blog.ybyq.wang
欢迎访问我的博客,获取更多技术文章和教程。
相关文章:
handsome主题美化及优化:10.1.0最新版 - 2
文章目录 前言基础设置优化开启全站 HTTPS添加 GZIP 压缩美化永久链接自定义后台路径启用 Emoji 支持 功能增强每日新闻自动更新文章嵌入外部网页时光机栏目配置自定义音乐播放器音量 自定义CSS配置文章标题居中显示标题背景美化文章版式优化LOGO 扫光特效头像动画效果图片悬停…...
JWT令牌
1. JWT概述 JWT即JSON Web Token,是一个开放标准,用于在各方之间安全地传输信息。并且JWT经过数字签名,安全性高。通俗来说,也就是以JSON形式作为Web应用中的令牌,用于信息传输,在数据传输过程中可以完成数…...
Qwen3技术报告解读
https://github.com/QwenLM/Qwen3/blob/main/Qwen3_Technical_Report.pdf 节前放模型,大晚上的发技术报告。通义,真有你的~ 文章目录 预训练后训练Long-CoT Cold StartReasoning RLThinking Mode FusionGeneral RLStrong-to-Weak Distillation 模型结构…...
RAG-MCP:突破大模型工具调用瓶颈,告别Prompt膨胀
大语言模型(LLM)的浪潮正席卷全球,其强大的自然语言理解、生成和推理能力,为各行各业带来了前所未有的机遇。然而,正如我们在之前的探讨中多次提及,LLM并非万能。它们受限于训练数据的时效性和范围…...
Flask框架入门与实践
Flask框架入门与实践 Flask是一个轻量级的Python Web框架,以其简洁、灵活和易于上手的特点深受开发者喜爱。本文将带您深入了解Flask的核心概念、基本用法以及实际应用。 什么是Flask? Flask是由Armin Ronacher于2010年开发的微型Web框架。与Django等…...
PD 分离推理的加速大招,百度智能云网络基础设施和通信组件的优化实践
为了适应 PD 分离式推理部署架构,百度智能云从物理网络层面的「4us 端到端低时延」HPN 集群建设,到网络流量层面的设备配置和管理,再到通信组件和算子层面的优化,显著提升了上层推理服务的整体性能。 百度智能云在大规模 PD 分离…...
罗杰斯高频板技术解析:低损耗基材如何定义 5G 通信未来
在 5G 通信与尖端电子技术加速融合的时代,高频 PCB 作为信号传输的核心载体,对材料性能与工艺精度提出了极致要求。猎板 PCB 深耕行业多年,始终以罗杰斯(Rogers)板材为核心介质,构建起从材料适配到精密制造…...
QML 动画控制、顺序动画与并行动画
目录 引言相关阅读基础属性说明工程结构示例代码解析示例1:手动控制动画(ControlledAnimation.qml)示例2:顺序动画(SequentialAnimationDemo.qml)示例3:并行动画(ParallelAnimationD…...
【动态导通电阻】GaN HEMT动态导通电阻的精确测量
2023 年 7 月,瑞士洛桑联邦理工学院的 Hongkeng Zhu 和 Elison Matioli 在《IEEE Transactions on Power Electronics》期刊发表了题为《Accurate Measurement of Dynamic ON-Resistance in GaN Transistors at Steady-State》的文章,基于提出的稳态测量方法,研究了氮化镓(…...
2:OpenCV—加载显示图像
加载和显示图像 从文件和显示加载图像 在本节中,我将向您展示如何使用 OpenCV 库函数从文件加载图像并在窗口中显示图像。 首先,打开C IDE并创建一个新项目。然后,必须为 OpenCV 配置新项目。 #include <iostream> #include <ope…...
Qt控件:交互控件
交互控件 1. QAction核心功能API 1.2 实例应用情况应用场景 1. QAction ##1. 1简介与API QAction 是一个核心类,用于表示应用程序中的一个操作(如菜单项、工具栏按钮或快捷键触发的功能)。它将操作的逻辑与 UI 表现分离,使代码更…...
在vue3中使用Cesium的保姆教程
1. 软件下载与安装 1. node安装 Vue.js 的开发依赖于 Node.js 环境,因此我们首先需要安装 Node.js。Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它允许你在服务器端运行 JavaScript 代码,同时也为前端开发提供了强大的工具支…...
zst-2001 下午题-历年真题 试题一到三
试题一 问题一 1 问题一 2 注意每句话中的“给”… 问题一 3 问题二 1 问题二 2 问题二 3 问题三 1 步骤一.看父图的数据流在子图有没有缺失 步骤二.看加工有没有输入输出 步骤三.阅读理解 问题三 2 实体和存储不能划线 问题三 3 试题二 问题一 1 问题一 2 问题一 3 问题二…...
STM32的ADC模块中,**采样时机(Sampling Time)**和**转换时机(Conversion Time),获取数据的时机详解
在STM32的ADC模块中,**采样时机(Sampling Time)和转换时机(Conversion Time)**是ADC工作流程中的两个关键阶段,直接影响采样精度和系统实时性。以下是详细解析: 1. 采样时机(Samplin…...
iOS音视频解封装分析
首先是进行解封装的简单的配置 /// 解封装配置 class KFDemuxerConfig {// 媒体资源var asset: AVAsset?// 解封装类型,指定是音频、视频或两者都需要var demuxerType: KFMediaType .avinit() {} }然后是实现解封装控制器 import Foundation import CoreMedia i…...
探究电阻分压的带负载能力
我们经常使用两个电阻去分压来获得特定的电压,那么我是两个大阻值电阻分压获得的电压驱动能力强,还是小阻值电阻分压得到的电压驱动能力强呢? 一、电压相同时,电流的大小 下面是两个阻值分压得到的仿真图 电路分析: VCC都是5V,探针1和探针2测到的电压都是1.67V; 根据…...
14、Python时间表示:Unix时间戳、毫秒微秒精度与time模块实战
适合人群:零基础自学者 | 编程小白快速入门 阅读时长:约5分钟 文章目录 一、问题:计算机中的时间的表示、Unix时间点?1、例子1:计算机的“生日”:Unix时间点2、答案:(1)U…...
PCL 绘制二次曲面
文章目录 一、简介二、实现代码三、实现效果一、简介 这里基于二次曲面的公式: z = a 0 + a 1 x + a 2 y + a...
消息队列与Kafka基础:从概念到集群部署
目录 一、消息队列 1.什么是消息队列 2.消息队列的特征 3.为什么需要消息队列 二、Kafka基础与入门 1.Kafka基本概念 2.Kafka相关术语 3.Kafka拓扑架构 4.Topic与partition 5.Producer生产机制 6.Consumer消费机制 三、Zookeeper概念介绍 1.zookeeper概述 2.zooke…...
计算机指令分类和具体的表示的方式
1.关于计算机的指令系统 下面的这个就是我们的一个简单的计算机里面涉及到的指令: m就是我们的存储器里面的地址,可以理解为memory这个意思,r可以理解为rom这样的单词的首字母,帮助我们去进行这个相关的指令的记忆,不…...
pcie phy-电气层-gen1/2(TX)
S IP物理层讲解 在synopsys IP中对于phy层的内容分离的比较多: cxpl中: u_cx_phy_logical:包含ts序列的解析(smlh); pipe层协议的转换(rmlh,xmlh);pipe转dllp包(rplh&…...
Baklib加速企业AI数据智理转型
Baklib智理AI数据资产 在AI技术深度渗透业务场景的背景下,Baklib通过构建企业级知识中台架构,重塑了数据资产的治理范式。该平台采用智能分类引擎与语义分析模型,将分散在邮件、文档、数据库中的非结构化数据转化为标准化的知识单元…...
深度学习驱动下的目标检测技术:原理、算法与应用创新
一、引言 1.1 研究背景与意义 目标检测作为计算机视觉领域的核心任务之一,旨在识别图像或视频中感兴趣目标的类别,并确定其在图像中的位置,通常以边界框(Bounding Box)的形式表示 。其在现实生活中有着极为广泛且…...
window 显示驱动开发-使用有保证的协定 DMA 缓冲区模型
Windows Vista 的显示驱动程序模型保证呈现设备的 DMA 缓冲区和修补程序位置列表的大小。 修补程序位置列表包含 DMA 缓冲区中命令引用的资源的物理内存地址。 在有保证的协定模式下,用户模式显示驱动程序知道 DMA 缓冲区和修补程序位置列表的确切大小,…...
《指针与整数相加减的深入解析》
🚀个人主页:BabyZZの秘密日记 📖收入专栏:C语言 🌍文章目入 一、指针与整数相加的原理二、指针与整数相减的原理三、使用场景(一)数组操作(二)内存遍历 四、注意事项&…...
C++_STL_map与set
1. 关联式容器 在初阶阶段,我们已经接触过STL中的部分容器,比如:vector、list、deque、 forward_list(C11)等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面 存储的是元素本身。那什么是…...
1949-2022年各省农作物播种面积数据(22个指标)
1949-2022年各省农作物播种面积数据(22个指标) 1、时间:1949-2022年 2、来源:各省年鉴、国家统计局、农业部、农业年鉴 3、范围:31省 4、指标:年度标识、省份编码、省份名称、农作物总播种面积、粮食作…...
汽车二自由度系统模型以及电动助力转向系统模型
汽车二自由度系统模型与电动助力转向系统(EPS)的详细建模方案,包含理论推导、MATLAB/Simulink实现代码及参数说明: 一、二自由度汽车模型 1. 模型描述 包含以下两个自由度: 横向运动(侧向加速度…...
【学习笔记】计算机操作系统(四)—— 存储器管理
第四章 存储器管理 文章目录 第四章 存储器管理4.1 存储器的层次结构4.1.1 多层结构的存储器系统4.1.2 主存储器与寄存器4.1.3 高速缓存和磁盘缓存 4.2 程序的装入和链接4.2.1 程序的装入4.2.2 程序的链接 4.3 连续分配存储管理方式4.3.1 单一连续分配4.3.2 固定分区分配4.3.3 …...
51单片机的lcd12864驱动程序
#include <reg51.h> #include <intrins.h>#define uchar...
(03)数字化转型之库存管理:从进库到出库的数字化运营
在当今竞争激烈的商业环境中,高效的库存管理已成为企业降低成本、提高运营效率的关键。本文将系统性地介绍库存管理的全流程,包括进库、出库、移库、盘点等核心环节,帮助企业构建科学合理的库存管理体系。 一、进库管理:从计划到执…...
windows编程中加载DLL的两种典型方式的比较
文章目录 DLL定义头文件定义CPP实现DLL的调用代码直接使用通过LoadLibrary调用导入表的依赖LoadLibrary使用DLL库中的类DLL中定义工厂函数调用时的代码补充:为什么LoadLibrary不能直接导出类在windows的编程中,使用DLL是一个非常常见的操作。一般来说,有两种集成DLL的方式:…...
存储器上如何存储1和0
在计算机存储器中,数据最终以**二进制形式(0和1)**存储,这是由硬件特性和电子电路的物理特性决定的。以下是具体存储方式的详细解析: 一、存储的物理基础:半导体电路与电平信号 计算机存储器(…...
【笔记】记一次PyCharm的问题反馈
#工作记录 最近更新至 PyCharm 社区版的最新版本后,我遇到了多个影响使用体验的问题。令人感到不便的是,一些在旧版本中非常便捷的功能,在新版本中却变得操作复杂、不够直观。过去,我一直通过 PyCharm 内置的故障报告与反馈机制反…...
logrotate按文件大小进行日志切割
✅ 编写logrotate文件,进行自定义切割方式 adminip-127-0-0-1:/data/test$ cat /etc/logrotate.d/test /data/test/test.log {size 1024M #文件达到1G就切割rotate 100 #保留100个文件compressdelaycompressmissingoknotifemptycopytruncate #这个情况服务不用…...
基于大模型的脑出血智能诊疗与康复技术方案
目录 一、术前阶段1.1 数据采集与预处理系统伪代码实现流程图1.2 特征提取与选择模块伪代码实现流程图1.3 大模型风险评估系统伪代码实现流程图二、术中阶段2.1 智能手术规划系统伪代码实现流程图2.2 麻醉智能监控系统伪代码实现流程图三、术后阶段3.1 并发症预测系统伪代码片段…...
P21-RNN-心脏病预测
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 一、RNN 循环神经网络(Recurrent Neural Network,简称 RNN)是一类以序列数据为输入,在序列的演进方向进行递归…...
懒汉式单例模式的线程安全实现
懒汉式单例模式的线程安全实现 懒汉式单例模式的核心特点是延迟实例化(在第一次使用时创建对象),但其基础实现存在线程安全问题。以下是不同线程安全实现方式的详细说明和对比: 1. 非线程安全的基础懒汉式 public class UnsafeLazySingleton {private static UnsafeLazyS…...
Java 常用的Arrays函数
文章目录 ArrayssorttoStringbinarySearchequalsfill 数组拷贝copyOfcopyOfRangearraycopy 二维数组定义遍历deepToString空指针异常 Arrays sort int[] array new int[]{1,20,3}; Arrays.sort(array);// 1 3 20toString 帮助数组转为字符串 int[] array new int[]{1,2,3…...
FEKO许可证与版本兼容性问题
随着电磁仿真技术的不断进步,FEKO软件不断更新迭代,为用户提供更强大的功能和更优秀的性能。然而,在升级过程中,FEKO许可证与版本兼容性问题往往成为用户关注的焦点。本文将为您详细解读FEKO许可证与版本兼容性问题,帮…...
HarmonyOs开发之——— ArkWeb 实战指南
HarmonyOs开发之——— ArkWeb 实战指南 谢谢关注!! 前言:上一篇文章主要介绍HarmonyOs开发之———合理使用动画与转场:CSDN 博客链接 一、ArkWeb 组件基础与生命周期管理 1.1 Web 组件核心能力概述 ArkWeb 的Web组件支持加载本地或在线网页,提供完整的生命周期回调体…...
冰箱磁力贴认证标准16CFR1262
在亚马逊平台,冰箱磁力贴这类可能被儿童接触到的产品,有着严格的规范哦。必须得遵守 16 CFR 1262 标准,还得有符合该标准的测试报告和 GCC 证书,不然产品就可能被禁止销售或者面临召回,那可就损失大啦! …...
Java中的锁机制全解析:从synchronized到分布式锁
在多线程编程中,锁是保证线程安全的核心工具。本文将详解Java中常见的锁机制及其实际应用场景,帮助开发者选择最合适的锁方案。 一、内置锁:synchronized 原理 通过JVM内置的监视器锁(Monitor)实现,可修…...
OptiStruct实例:3D实体转子分析
上一节介绍了1D转子的临界转速分析。在1D转子模型中,转子是以集中质量单元的形式建模的。此种建模方法不可避免地会带来一些简化和局部特征的缺失。接下来介绍OptiStruct3D实体转子的建模及临界转速分析实例。 3D实体转子建立详细的转子网格模型,然后将…...
简单记录坐标变换
以三维空间坐标系为例 rTt代表机械手末端相对robot root坐标系的变换关系 rTt dot p_in_tool 可以把tool坐标系下表示的某点转到root坐标系表示 其中rTt表示tool相对于root坐标系的平移和旋转 以二维图像坐标系为例说明 1坐标系定为图片坐标系左上角,横平竖直的…...
自定义快捷键软件:AutoHotkey 高效的快捷键执行脚本软件
AutoHotkey 是一种适用于 Windows 的免费开源脚本语言,它允许用户轻松创建从小型到复杂的脚本,用于各种任务,例如:表单填充、自动点击、宏等。 定义鼠标和键盘的热键,重新映射按键或按钮,并进行类似自动更…...
【Android构建系统】了解Soong构建系统
背景介绍 在Android7.0之前,Android使用GNU Make描述和执行build规则。Android7.0引入了Soong构建系统,弥补Make构建系统在Android层面变慢、容易出错、无法扩展且难以测试等缺点。 Soong利用Kati GNU Make克隆工具和Ninja构建系统组件来加速Android的…...
显性知识的主要特征
有4个主要特征: 客观存在性静态存在性可共享性认知元能性...
STM32F407VET6实战:CRC校验
CRC校验在数据传输快,且量大的时候使用。下面是STM32F407VET6HAL库使用CRC校验的思路。 步骤实现: CubeMX配置 c // 在CubeMX中启用CRC模块 // AHB总线时钟自动启用 HAL库代码 c // 初始化(main函数中) CRC_HandleTypeDef …...
LeetCode 746 使用最小花费爬楼梯
当然可以!LeetCode 746 是一道经典的动态规划入门题,我来用 C 为你详细解释。 题目描述 给定一个整数数组 cost,其中每个元素 cost[i] 表示从第 i 个台阶向上爬需要支付的费用。一旦支付费用,你可以选择向上爬 1 步 或 2 步。 你…...