在WordPress中添加返回顶部的功能

对于页面内容比较长的网站,返回顶部的功能是比较需要的。网上的实现方法也不少,包括用百度新闻中的JS脚本的,还有用JQuery的。我个人比较喜欢金山网站的招聘信息中所用的返回顶部的代码和图片,但是那个代码有Bug,存在不兼容Chrome浏览器的问题(我会争取今天把问题反馈给他们),昨天晚上改了两三个小时,终于大体上改好了,现在分享如下。
1. 在style.css中添加如下代码

#gotop{
    width:38px;
    height:36px;
    position:fixed;
    bottom:25px;
    right:10px;
    top:auto;
    display:block;
    cursor:pointer;
    background:url(myimages/top.gif)no-repeat
}
*html #gotop{
    position:absolute;
    bottom:auto;top:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-(parseInt(this.currentStyle.marginTop,10)||0)-(parseInt(this.currentStyle.marginBottom,10)||0)));
}

其中,bottom和right属性可以控制按钮图片在右下角的位置,background属性可以修改返回顶部的图片。
2. 在footer.php中添加如下代码

<!-- 返回顶部 -->
<div style="display: none;"id="gotop"></div>
<script type='text/javascript'>
    backTop=function(btnId){
        varbtn=document.getElementById(btnId);
        vard=document.documentElement;
        varb=document.body;
        window.onscroll=set;
        btn.onclick=function(){
            btn.style.display="none";
            window.onscroll=null;
            this.timer=setInterval(function(){
                d.scrollTop-=Math.ceil((d.scrollTop+b.scrollTop)*0.1);
                b.scrollTop-=Math.ceil((d.scrollTop+b.scrollTop)*0.1);
                if((d.scrollTop+b.scrollTop)==0)clearInterval(btn.timer,window.onscroll=set);
            },10);
        };
        functionset(){btn.style.display=(d.scrollTop+b.scrollTop>100)?'block':"none"}
    };
    backTop('gotop');
</script>
<!-- 返回顶部END -->

其中,主要解决了Chrome浏览器不识别document.documentElement.scrollTop的问题,从网上找了相关的处理方法,说是使用
document.documentElement.scrollTop+document.body.scrollTop
来解决问题。然后我修改了代码,具体是第7、13、14、15、18行,完成了对Chrome浏览器的兼容。
3. 添加返回顶部按钮图片
下面图片是在金山网站上下载下来的,然后我又个人做了颜色加深的处理,不喜欢的朋友可以用自己的图片替换。如第一步中的background属性,把top.gif放到主题目录中存放图片的目录下。
top
转载自 http://9iphp.com/opensystem/wordpress/181.html

Makefile编写

预备知识:

gcc 的3个参数:

1. -o 指定目标文件

         gcc sources/main.c -o bin/main

2. -c 编译的时候只生产目标文件不链接

        gcc -c sources/main.c -o obj/main.o

3. -I 主要指定头文件的搜索路径

        gcc -I headers -c main.c -o main.o

4. -l 指定静态库

       gcc -lpthread …
3个预定义变量介绍:

1.  $@     表示要生成的目标

2.  $^     表示全部的依赖文件

3.  $<     表示第一个依赖文件

bin/st_work : obj/main.o  obj/st_work.o  obj/fun.o

         gcc  $^  -o $@  (命令一定要用以Tab开头)

obj/st_work.o : sources/st_work.c

         gcc  -I  headers   -c $< -o  $@

obj/main.o : sources/main.c

         gcc  -I  headers   -c $< -o  $@

obj/fun.o  : sources/fun.c

         gcc  -I  headers   -c $< -o  $@

clean:

         rm -f bin/st_work obj/*.o

cudalib for myself

printf(“last error %d@%dn”, cudaGetLastError(), __LINE__);

#include <time.h>
#include <sys/time.h>
static inline double time_diff (
    timespec const& end, timespec const& begin)
{
#ifdef TIMING
    double result;
    result = end.tv_sec - begin.tv_sec;
    result += (end.tv_nsec - begin.tv_nsec) / (double)1000000000;
    return result;
#else
    return 0;
#endif
}
static inline void get_time (timespec& ts)
{
#ifdef TIMING
    volatile long noskip;
    #if _POSIX_TIMERS > 0
        clock_gettime(CLOCK_REALTIME, &ts);
    #else
        struct timeval tv;
        gettimeofday(&tv, NULL);
        ts.tv_sec = tv.tv_sec;
        ts.tv_nsec = tv.tv_usec*1000;
    #endif
    noskip = ts.tv_nsec;
#endif
}
static inline timespec get_time()
{
    timespec t;
#ifdef TIMING
    get_time(t);
#endif
    return t;
}
static inline double time_elapsed(timespec const& begin)
{
#ifdef TIMING
    timespec now;
    get_time(now);
    return time_diff(now, begin);
#else
    return 0;
#endif
}
static inline void print_time (char const* prompt, timespec const& begin, timespec const& end)
{
#ifdef TIMING
    printf("%s : %.3fn", prompt, time_diff(end, begin));
#endif
}
static inline void print_time (char const* prompt, double diff)
{
#ifdef TIMING
    printf("%s : %.3fn", prompt, diff);
#endif
}
static inline void print_time_elapsed (char const* prompt, timespec const& begin)
{
#ifdef TIMING
    printf("%s : %.3fn", prompt, time_elapsed(begin));
#endif
}
#endif // STDDEFINES_H_