经常去国外一些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

  1. smartxue (2010.08.16 at 23:27) 25楼

    路过关注

  2. 阿七 (2010.08.17 at 00:12) 26楼

    对于有侧边栏的我,不敢用 :evil:

  3. N (2010.08.17 at 11:08) 27楼

    这些让人感到惊奇的小效果确实很实用,不过我怕我的侧边栏会骂我挤兑它。。。

    • winy() (2010.08.17 at 15:28)

      @N ,让这个PRE保持最前就行了。。

  4. 瓜瓜 (2010.08.17 at 11:13) 28楼

    晕,你整站都用的jQuery吧。

  5. heson (2010.08.17 at 14:02) 29楼

    伸缩没什么用吧 后面也是空白啊

    • winy() (2010.08.17 at 15:29)

      @heson ,展开,不用拖到鼠标,。。好吧其实也没啥用

  6. imfigo (2010.08.17 at 14:16) 30楼

    你的博客,我IE吃不消看。

    • winy() (2010.08.17 at 15:29)

      @imfigo ,应该是这样,我没在IE下测试。。

  7. Ygs (2010.08.18 at 08:48) 31楼

    展开时会出现滚动条,展开完毕再消失

  8. Carrie (2010.08.19 at 03:10) 32楼

    呵,這個效果也很好玩,不過應該只適合單欄主題,如果是有側邊欄的主題,可能會撐開側欄,不過這也就是你這款主題的特色啊 :wink:

    • winy() (2010.08.20 at 22:17)

      @Carrie ,有侧栏也可以的,你看国外技术站很多都有这个效果,只要加上z-index保证在最前面就不会撑破,想想各种遮罩效果
      回复慢了,qiqiboy的ajax最新评论很好用

    • Carrie (2010.08.20 at 23:40)

      @winy ,嗯,我對於 jQuery、CSS、PHP 的了解還不夠透徹,得好好繼續努力鑽研~

      每回看你們這些牛人寫出功能性的代碼來,並且妥善運用,我就感到佩服呀~

      呵,我還沒去玩 qiqiboy 的 ajax 側欄回覆功能,不過已經有過去仰望一下了。

评论分页: 1 2 3 4 5

发布评论

邮箱(必填)

换个背景