经常去国外一些css/jQuery教学网站学习,当然也和各种高亮代码打交道。一般来说,正文中插入的代码都是包裹在<pre>或<code>中的。有些源代码高亮区域很宽,所以都会加上滚动条,即css中对pre、code加上overflow:auto或者overflow-x:scroll。某一天发现有家博客上用的代码区域会自动伸缩,鼠标悬停代码区域会自动展开,虽然没啥大用处,看上去很有意思,方便访客查看源码部分:
这个用到了jQuery,效果和代码都放在下面:
$('pre').hover(function() {$(this).stop().animate({width: 680},800).css({'overflow-x': 'scroll'})},function() {$(this).stop().animate({width: 540},800,).css({'overflow-x': 'scroll'})});
鼠标放在代码区域自动把<pre>宽度增大,移开鼠标恢复。当然设定的时间比较快,上面的代码展开的时间是800ms,如果想像我这里展示的那样缓慢展开,接近目标大小越来越慢的效果,可以用上easing的效果,用了一个“quart”的函数:
jQuery.easing.quart = function (x, t, b, c, d) { return -c * ((t=t/d-1)*t*t*t - 1) + b; };
相应的,第一部分的代码改成:
$('pre').hover(function() {
$(this).stop().animate({
width: 680
},
3000,'quart').css({
'overflow-x': 'scroll'
})
},
function() {
$(this).stop().animate({
width: 540
},
2000,'quart').css({
'overflow-x': 'scroll'
})
});
这里我设定的时间是3s宽度到680px,看上去还不错。
FIN
路过关注
对于有侧边栏的我,不敢用
这些让人感到惊奇的小效果确实很实用,不过我怕我的侧边栏会骂我挤兑它。。。
@N ,让这个PRE保持最前就行了。。
晕,你整站都用的jQuery吧。
@瓜瓜 ,是吧,纯js的搞不来
伸缩没什么用吧 后面也是空白啊
@heson ,展开,不用拖到鼠标,。。好吧其实也没啥用
你的博客,我IE吃不消看。
@imfigo ,应该是这样,我没在IE下测试。。
展开时会出现滚动条,展开完毕再消失
呵,這個效果也很好玩,不過應該只適合單欄主題,如果是有側邊欄的主題,可能會撐開側欄,不過這也就是你這款主題的特色啊
@Carrie ,有侧栏也可以的,你看国外技术站很多都有这个效果,只要加上z-index保证在最前面就不会撑破,想想各种遮罩效果
回复慢了,qiqiboy的ajax最新评论很好用
@winy ,嗯,我對於 jQuery、CSS、PHP 的了解還不夠透徹,得好好繼續努力鑽研~
每回看你們這些牛人寫出功能性的代碼來,並且妥善運用,我就感到佩服呀~
呵,我還沒去玩 qiqiboy 的 ajax 側欄回覆功能,不過已經有過去仰望一下了。
目前还没有trackbacks.