博客美化中遇到的问题汇总
关于代码滚动条
插件
mCustomScrollbar,一个风格简洁优美的滚动条插件
使用条件
需要创建滚动条的元素必须具有明确的CSS属性使元素形成包裹的块级元素:
- 具有高度值(height)
- 最大高度值(max-height)
- 具有overflow属性值为auto或者hidden
- 元素的内容具有足够的高度(或宽度,针对横向滚动条)
问题
如果使用markdown编辑器插入代码,那么pre标签是不包含在div下的,此时这个插件并不会生效,原因不明,即使对pre设置了display:block;overflow:auto也不会生效,对pre进行渲染会出现mCS_no_scrollbar,所以不会出现滚动条
解决办法
使用tinymce编辑器插入代码,此种方法插入代码pre标签会包含在div下,从而使滚动条可以正常工作
更新:若使用markdown编辑器,可使用jQuery让pre被div包裹,此时可以正常工作
关于背景
问题
我希望能够让背景实现一定透明,从而不影响整个皮肤的效果,但如果直接对body设置opacity,那么所有元素都会有一定的透明度,这不是想要的效果
解决办法
对body:before设置背景,透明度,设置宽度高度均为100%,设置z-index为-1,即在所有元素的后面
代码
body:before{ background: url(https://img2018.cnblogs.com/blog/1598496/201902/1598496-20190210215015022-4687379.jpg) center/cover no-repeat; content: ''; background-repeat: no-repeat; background-position: center; opacity: 0.5; position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: -1; }
关于舍弃的部分
图片立方体
本来博客的美化中加入了图片立方体的美化,但由于换成这个皮肤后加上去比较违和,就没有添加,但这个部分其实挺炫酷的
代码
<style> /*最外层容器样式*/ .wrap { width: 100px; height: 100px; margin: 150px auto; position: relative; } /*包裹所有容器样式*/ .cube { width: 50px; height: 50px; margin: 0 auto; transform-style: preserve-3d; transform: rotateX(-30deg) rotateY(-80deg); animation: rotate linear 20s infinite; } @-webkit-keyframes rotate { from { transform: rotateX(0deg) rotateY(0deg); } to { transform: rotateX(360deg) rotateY(360deg); } } .cube div { position: absolute; width: 200px; height: 200px; opacity: 0.8; transition: all .4s; } /*定义所有图片样式*/ .pic { width: 200px; height: 200px; } .cube .out_front { transform: rotateY(0deg) translateZ(100px); } .cube .out_back { transform: translateZ(-100px) rotateY(180deg); } .cube .out_left { transform: rotateY(-90deg) translateZ(100px); } .cube .out_right { transform: rotateY(90deg) translateZ(100px); } .cube .out_top { transform: rotateX(90deg) translateZ(100px); } .cube .out_bottom { transform: rotateX(-90deg) translateZ(100px); } /*定义小正方体样式*/ .cube span { display: block; width: 100px; height: 100px; position: absolute; top: 50px; left: 50px; } .cube .in_pic { width: 100px; height: 100px; } .cube .in_front { transform: rotateY(0deg) translateZ(50px); } .cube .in_back { transform: translateZ(-50px) rotateY(180deg); } .cube .in_left { transform: rotateY(-90deg) translateZ(50px); } .cube .in_right { transform: rotateY(90deg) translateZ(50px); } .cube .in_top { transform: rotateX(90deg) translateZ(50px); } .cube .in_bottom { transform: rotateX(-90deg) translateZ(50px); } /*鼠标移入后样式*/ .cube:hover .out_front { transform: rotateY(0deg) translateZ(200px); } .cube:hover .out_back { transform: translateZ(-200px) rotateY(180deg); } .cube:hover .out_left { transform: rotateY(-90deg) translateZ(200px); } .cube:hover .out_right { transform: rotateY(90deg) translateZ(200px); } .cube:hover .out_top { transform: rotateX(90deg) translateZ(200px); } .cube:hover .out_bottom { transform: rotateX(-90deg) translateZ(200px); } </style> <div class="wrap"> <!--包裹所有元素的容器--> <div class="cube"> <!--前面图片 --> <div class="out_front"> <img src="https://img2018.cnblogs.com/blog/1598496/201902/1598496-20190209000304567-606481727.jpg" class="pic"> </div> <!--后面图片 --> <div class="out_back"> <img src="https://img2018.cnblogs.com/blog/1598496/201902/1598496-20190201164226004-434092221.jpg" class="pic"> </div> <!--左面图片 --> <div class="out_left"> <img src="https://img2018.cnblogs.com/blog/1598496/201902/1598496-20190201164230266-1345555907.jpg" class="pic"> </div> <!--右面图片 --> <div class="out_right"> <img src="https://img2018.cnblogs.com/blog/1598496/201902/1598496-20190201164243233-2083889650.jpg" class="pic"> </div> <!--上面图片 --> <div class="out_top"> <img src="https://img2018.cnblogs.com/blog/1598496/201902/1598496-20190201164641298-1758519226.jpg" class="pic"> </div> <!--下面图片 --> <div class="out_bottom"> <img src="https://img2018.cnblogs.com/blog/1598496/201902/1598496-20190201165542378-45065307.jpg" class="pic"> </div> <!--小正方体 --> <span class="in_front"> <img src="https://img2018.cnblogs.com/blog/1598496/201902/1598496-20190201165803793-1785729274.jpg" class="in_pic"> </span> <span class="in_back"> <img src="https://img2018.cnblogs.com/blog/1598496/201902/1598496-20190201165532456-1361254174.jpg" class="in_pic"> </span> <span class="in_left"> <img src="https://img2018.cnblogs.com/blog/1598496/201902/1598496-20190201164636013-932342617.jpg" class="in_pic"> </span> <span class="in_right"> <img src="https://img2018.cnblogs.com/blog/1598496/201902/1598496-20190201164142508-867057695.jpg" class="in_pic"> </span> <span class="in_top"> <img src="https://img2018.cnblogs.com/blog/1598496/201902/1598496-20190201164137075-1116750383.jpg" class="in_pic"> </span> <span class="in_bottom"> <img src="https://img2018.cnblogs.com/blog/1598496/201902/1598496-20190201164122124-1147578009.png" class="in_pic"> </span> </div>
旋转球体
同样十分炫酷
代码
html
<div class="container"> <div class="cube cube--1"> <div class="side side--back"> <div class="side__inner"></div> </div> <div class="side side--left"> <div class="side__inner"></div> </div> <div class="side side--right"> <div class="side__inner"></div> </div> <div class="side side--top"> <div class="side__inner"></div> </div> <div class="side side--bottom"> <div class="side__inner"></div> </div> <div class="side side--front"> <div class="side__inner"></div> </div> </div> <div class="cube cube--2"> <div class="side side--back"> <div class="side__inner"></div> </div> <div class="side side--left"> <div class="side__inner"></div> </div> <div class="side side--right"> <div class="side__inner"></div> </div> <div class="side side--top"> <div class="side__inner"></div> </div> <div class="side side--bottom"> <div class="side__inner"></div> </div> <div class="side side--front"> <div class="side__inner"></div> </div> </div> <div class="cube cube--3"> <div class="side side--back"> <div class="side__inner"></div> </div> <div class="side side--left"> <div class="side__inner"></div> </div> <div class="side side--right"> <div class="side__inner"></div> </div> <div class="side side--top"> <div class="side__inner"></div> </div> <div class="side side--bottom"> <div class="side__inner"></div> </div> <div class="side side--front"> <div class="side__inner"></div> </div> </div> </div>
css
.container { width: 10em; height: 10em; -webkit-transform-style: preserve-3d; transform-style: preserve-3d; -webkit-animation: rotate 12s infinite linear; animation: rotate 12s infinite linear; } .cube { position: absolute; width: 10em; height: 10em; -webkit-transform-style: preserve-3d; transform-style: preserve-3d; } .cube--2 { -webkit-transform: rotateX(45deg) rotateY(45deg); transform: rotateX(45deg) rotateY(45deg); } .cube--3 { -webkit-transform: rotateX(45deg) rotateZ(45deg); transform: rotateX(45deg) rotateZ(45deg); } .side { position: absolute; width: 10em; height: 10em; border: 2px dotted rgba(255, 213, 0, 0.35); border-radius: 50%; -webkit-transform-style: preserve-3d; transform-style: preserve-3d; -webkit-transform: rotateY(180deg); transform: rotateY(180deg); } .side::before, .side::after { content: ""; display: block; position: absolute; left: 0; right: 0; bottom: 0; top: 0; margin: auto; box-sizing: border-box; border-radius: inherit; border: 1px solid; box-shadow: inset 0 0 2em, 0 0 2em; } .side::before { width: 2.5em; height: 2.5em; color: gold; } .side::after { width: 1.5em; height: 1.5em; -webkit-transform: translateZ(-2em); transform: translateZ(-2em); box-shadow: inset 0 0 1em, 0 0 1em; color: teal; } .side--back { -webkit-transform: translateZ(-5em) rotateY(180deg); transform: translateZ(-5em) rotateY(180deg); } .side--left { -webkit-transform: translateX(-5em) rotateY(-90deg); transform: translateX(-5em) rotateY(-90deg); } .side--right { -webkit-transform: translateX(5em) rotateY(90deg); transform: translateX(5em) rotateY(90deg); } .side--top { -webkit-transform: translateY(-5em) rotateX(90deg); transform: translateY(-5em) rotateX(90deg); } .side--bottom { -webkit-transform: translateY(5em) rotateX(-90deg); transform: translateY(5em) rotateX(-90deg); } .side--front { -webkit-transform: translateZ(5em); transform: translateZ(5em); } .side__inner { position: absolute; left: 0; right: 0; bottom: 0; top: 0; width: 5em; height: 5em; margin: auto; border-radius: inherit; border: 1px solid; box-shadow: inset 0 0 2em; color: orangered; -webkit-transform: translateZ(2em); transform: translateZ(2em); -webkit-transform-style: preserve-3d; transform-style: preserve-3d; } .side__inner::before, .side__inner::after { content: ""; display: block; position: absolute; left: 0; right: 0; bottom: 0; top: 0; margin: auto; box-sizing: border-box; border-radius: inherit; border: 1px solid; box-shadow: inset 0 0 2em, 0 0 2em; } .side__inner::before { width: 2.5em; height: 2.5em; -webkit-transform: translateZ(2em); transform: translateZ(2em); color:#999; } .side__inner::after { width: 1.5em; height: 1.5em; -webkit-transform: translateZ(4em); transform: translateZ(4em); color:#6CF; } @-webkit-keyframes rotate { 100% { -webkit-transform: rotateX(360deg) rotateY(720deg) rotateZ(360deg); transform: rotateX(360deg) rotateY(720deg) rotateZ(360deg); } } @keyframes rotate { 100% { -webkit-transform: rotateX(360deg) rotateY(720deg) rotateZ(360deg); transform: rotateX(360deg) rotateY(720deg) rotateZ(360deg); } } @-webkit-keyframes fadeIn { 0% { opacity: 0; } 50% { opacity: 0.4; } 100% { opacity: 0.8; } }
markdown下代码行号渲染
也是和当前主题不和,故舍弃,其实还蛮好用的
代码
<script src="//cdn.bootcss.com/highlightjs-line-numbers.js/1.1.0/highlightjs-line-numbers.min.js"></script> <script>hljs.initLineNumbersOnLoad();</script>
磁性吸附特效
由于背景已经有了彩带特效,再加上这个太花了,也舍弃了
代码
<canvas id="c_n9" width="1920" height="990" style="position: fixed; top: 0px; left: 0px; z-index: -1; opacity: 0.7;"></canvas> <script src="https://files.cnblogs.com/files/jingmoxukong/canvas-nest.min.js"></script>
修改opacity可以改变深浅
返回顶部
一个非常好看的返回顶部的特效,动画效果比较棒,而且很流畅,由于与主题不和而舍弃
css样式
#back-to-top { cursor: pointer; position: fixed; right: 50px; top: -900px; z-index: 2; width: 70px; height: 900px; background-image: url(https://file.ohyhello.com/uploads/2018/08/scroll.png); transition: all .5s ease-in-out; top: -20px; }
html+js代码
<div id="back-to-top" class="red active" data-scroll="body" style="top: -274px;"></div> <script type="text/javascript"> $.scrollto = function (scrolldom, scrolltime) { $(scrolldom).click(function () { var scrolltodom = $(this).attr("data-scroll"); $(this).addClass("active").siblings().removeClass("active"); $('html, body').animate({ scrollTop: $(scrolltodom).offset().top }, scrolltime); return false; }); }; // 判断位置控制 返回顶部的显隐 if ($(window).width() > 800) { var backTo = $("#back-to-top"); var backHeight = $(window).height() - 980 + 'px'; $(window).scroll(function () { if ($(window).scrollTop() > 700 && backTo.css('top') === '-900px') { backTo.css('top', backHeight); } else if ($(window).scrollTop() <= 700 && backTo.css('top') !== '-900px') { backTo.css('top', '-900px'); } }); } // 启用 $.scrollto("#back-to-top", 800); </script>
放在页首定制html代码中
关于随机图片的api
有一个图片质量很棒的二次元api,由于在本博客现样式中间不透明度为90%左右,所以会遮挡大部分人脸,故换成了人物在两侧的固定背景,舍弃了该api
地址
https://random.52ecy.cn/randbg.php?type=302&style=3
结语
美化博客真的耗了很多时间,也算是告一段落了,这个主题真的好看,让我直接舍弃了之前花了很多时间自己美化的部分,感谢主题的作者bndong。
要赶快开始学习了orz
一时折腾一时爽,一直折腾一直爽
(就是光爽了,icpc要被众大佬吊打了)