自定义博客代码折叠功能

昨天在写文章的时候发现一个代码特别长,对于阅读文章而言造成了困扰,所以今天自定义了一个代码折叠动能(主要是没有找到现成的插件=_=)。

功能编写思路

首先我参考了一下博客园的代码折叠,然后看了一下我的代码都是在pre元素之下,那么我可以在代码块之上加一个折叠隐藏模块,但是给所有代码都加上明显是不合适的(有的代码就几行),那么最好的办法是超过一定长度的代码默认是隐藏的,然后给它加上折叠功能。

具体的实施

我们需要两个个折叠的图片。一个加号图片,一个减号图片,放在网站根目录下的images文件夹中。
js代码如下:

/*代码折叠功能var codeLength=$("pre code").size();
    for(var i=0;i<codeLength;i++){
        if($("pre code:eq("+i+")").height()>9){
        alert($("pre code:eq("+i+")").height());
         $("pre code:eq("+i+")").parent("pre").before('<div><div class="code_img_closed"></div><span class="cnblogs_code_collapse" style="display: inline;">View Code</span><div>'); 

        }
    }*/
    var codeLength=$("pre code").size();
    for(var i=0;i<codeLength;i++){
        if($("pre code:eq("+i+")").height()>900){
         $("pre:eq("+i+")").hide();
         $("pre code:eq("+i+")").parent().before('<div class="code_img_closed" style="display: none;">View/Hide Code</div>'); 

        }

    }
    $(".code_img_closed").click(function() {
            if($(this).next().css("display")=="none"){
                 $(this).next().show();

                 $(this).css("background-image","url(/images/jianBlock.gif)");
            }else {

                  $(this).next().hide();
                  $(this).css("background-image","url(/images/jiaBlock.gif)");
            }

        });

css代码如下:


/*代码折叠*/ .code_img_closed{ display: inline-block !important; margin-right: 10px !important; background: url(/images/jiaBlock.gif) no-repeat left; width: 180px; height: 30px; line-height: 30px; padding-left: 20px; background-color: #f9e6e6; margin-bottom: 20px; }

效果示例http://blog.shadowwu.club/2018/04/20/php_send_mail/

闲言碎语

虽然代码折叠功能比较简单,但是我们还是需要去锻炼的,自己造插件,造轮子,总好过伸手要,加油!

点赞

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注