CSS与Js实现博客园侧边目录与页内滑动
存着备用。。
长篇文章如果没有侧边目录的话,会很不方便浏览。
代码是网上找来改的。
<div id="diy_right_menu"></div>
针对这个div写CSS(在后台管理处设置),把目录固定在浏览器的右上角:
#diy_right_menu { opacity: 0.05; position: fixed; right: 2%; top: 2%; width: 20em; margin-top: 1em; background-color: black; padding: 1em; border-radius: 0; transition: 0.6s ease-in-out; color: white; } #diy_right_menu:hover { color: white; right: 2%; top: 2%; border-radius: 5%; opacity: 1.3; box-shadow: 0 10px 20px rgba(0, 0, 0, 0.5); transition: 0.4s ease-in-out; } #diy_right_menu a { color: #f2f2f2cc; transition: 0.4s ease-in-out; } #diy_right_menu a:hover { font-size: larger; color: blue; background-color: bisque; transition: 0.4s ease-in-out; }
因为一直飘在那里会遮挡文字,所以设定为鼠标移动过去才显示出来。
虽然我也试过其它方法,例如把这个div设置为可拖动(如下↓ 原作者链接)、类似qq一样隐藏在边缘(css即可实现),但是感觉都太繁琐了、甚至还有点卡。。
<script>
var posX;
var posY;
fwuss = document.getElementById("diy_right_menu");
fwuss.onmousedown = function(e) {
posX = event.x - fwuss.offsetLeft; //获得横坐标x
posY = event.y - fwuss.offsetTop; //获得纵坐标y
document.onmousemove = mousemove; //调用函数,只要一直按着按钮就能一直调用
}
document.onmouseup = function() {
document.onmousemove = null; //鼠标举起,停止
}
function mousemove(ev) {
if(ev == null) ev = window.event; //IE
fwuss.style.left = (ev.clientX - posX) + "px";
fwuss.style.top = (ev.clientY - posY) + "px";
}
</script>
<script type="text/javascript">
//点击链接页面滑动到指定区域
$(document).ready(function() {
$('a').click(function() {
var className = $.attr(this, 'href').substr(1); //获取href参数#后面的ID
$('html, body').animate({
scrollTop: $('a[name="' + className + '"]').offset().top //获取a书签的scrollTop值
}, 500); //以500毫秒滑行
return false;
});
});
</script>

两行css解决
overflow-y: auto;
max-height: 450px;
@-webkit-keyframes myfirst { /* Safari and Chrome */ 0% { transform: translateX(8px); } 33% { opacity: 1; border-radius: 5%; background-color: bisque; } 66% { }
-webkit-animation: myfirst 1.8s;
浙公网安备 33010602011771号