Здесь рассмотрим скрипт для индикатора загрузки странички с прогрессбаром.
Скачать исходники для статьи можно ниже
Вот так будет выглядеть индикатор загрузки странички:
То есть до того, как страничка будет загружаться (подгружаться) вы будете видеть только белый фон и прогресс бар, как только страничка 100% загрузится вы увидите ее содержание, а прогресс бар пропадет.
Демо-пример можете посмотреть тут:
http://sk-web1.net/lessons/demo/24.html
Нижеуказанный скрипт проверял на темах: Portocal ( есть на сайте NewWpThemes.com), Europe (есть на сайте wordpress.org) – отлично работает!
На теме Twenty Eleven (идет по умолчанию с движком WordPress) шапка перекрывает прогресс бар и его становится не видно, поэтому нужно увеличить параметр z-index (поставить выше чем у шапки) в файле стилей style.css.
А теперь перейдем к непосредственной установки данного скрипта на сайт с движком WordPress.
1. Вставляем скрипт в файл header.php.
Заходим в панель управления сайтом, в левом меню выбираем пункт “Внешний вид” и его подпункт “Редактор”, далее справа в списке шаблонов ищем файл header.php и открываем его код.
Ищем в его коде тег <head> и вставляем до него следующий код:
<script language="JavaScript" type="text/javascript"> function lib_bwcheck(){ this.ver=navigator.appVersion this.agent=navigator.userAgent this.dom=document.getElementById?1:0 this.opera5=this.agent.indexOf("Opera 5")>-1 this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom && !this.opera5)?1:0; this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom && !this.opera5)?1:0; this.ie4=(document.all && !this.dom && !this.opera5)?1:0; this.ie=this.ie4||this.ie5||this.ie6 this.mac=this.agent.indexOf("Mac")>-1 this.ns6=(this.dom && parseInt(this.ver) >= 5) ?1:0; this.ns4=(document.layers && !this.dom)?1:0; this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.opera5) return this } var bw=new lib_bwcheck() numImages = 10 loaderWidth = 300 var px = bw.ns4||window.opera?"":"px"; currentImg = 0 function lib_doc_size(){ this.x=0;this.x2=bw.ie && document.body.offsetWidth-20||innerWidth||0; this.y=0;this.y2=bw.ie && document.body.offsetHeight-5||innerHeight||0; if(!this.x2||!this.y2) return message('Document has no width or height') this.x50=this.x2/2;this.y50=this.y2/2; return this; } function lib_obj(obj,nest){ nest=(!nest) ? "":'document.'+nest+'.' this.evnt=bw.dom? document.getElementById(obj):bw.ie4?document.all[obj]:bw.ns4?eval(nest+"document.layers." +obj):0; this.css=bw.dom||bw.ie4?this.evnt.style:this.evnt; this.ref=this.css this.w=this.evnt.offsetWidth||this.css.clip.width|| this.ref.width||this.css.pixelWidth||0; return this } lib_obj.prototype.moveIt = function(x,y){ this.x=x; this.y=y; this.css.left=x+px; this.css.top=y+px; } //Clipping object to ****** lib_obj.prototype.clipTo = function(t,r,b,l,setwidth){ this.ct=t; this.cr=r; this.cb=b; this.cl=l if(bw.ns4){ this.css.clip.top=t;this.css.clip.right=r this.css.clip.bottom=b;this.css.clip.left=l }else{ if(t<0)t=0;if(r<0)r=0;if(b<0)b=0;if(b<0)b=0 this.css.clip="rect("+t+"px "+r+"px "+b+"px "+l+"px)"; if (setwidth){ this.css.pixelWidth = r; this.css.pixelHeight = b; this.css.width = r+px; this.css.height = b+px; } } } var oLoad2 function startLoading(){ page = new lib_doc_size() oLoadCont = new lib_obj('divLoadCont') oLoad = new lib_obj('divLoad1','divLoadCont') oLoad2 = new lib_obj('divLoad2','divLoadCont.document.divLoad1') oLoadText = new lib_obj('divLoadText','divLoadCont.document.divLoad1') oLoad.moveIt(page.x50-loaderWidth/2,page.y50-20) oLoadText.moveIt(loaderWidth/2 - oLoadText.w/2,10) oLoad.clipTo(0,loaderWidth,40,0,1) oLoad2.per = loaderWidth/numImages } function loadIt(ok){ currentImg ++ if (oLoad2) oLoad2.clipTo(0,oLoad2.per*currentImg,40,0,1) if (!ok){ oLoadCont.css.visibility = "hidden" oLoadCont = null; oLoad1 = null; oLoad2 = null; } } function loadIt_display(ok){ currentImg ++ if (oLoad2) oLoad2.clipTo(0,oLoad2.per*currentImg,40,0,1) if (currentImg<=numImages) setTimeout("loadIt_display(1)",200) else{ oLoadCont.css.visibility = "hidden" } } </script>
2. Далее здесь же (в файл header.php) вставим код блока, который будет показывать прогрессбар.
А именно, ищем тег <body> – он должен идти сразу после тега <head>, в моей тестовой теме он выглядел следующим образом:
<body <?php body_class(); ?>>
Вот сразу после него вставляем следующий код:
<div id="divLoadCont"> <div id="divLoad1"> <div id="divLoad2"></div><br> <div id="divLoadText">Загрузка ...</div> </div> </div> <script> startLoading() //onload=loadIt; loadIt_display(1) </script>
Соответственно здесь вы можете поменять слово “Загрузка …” на любой другой текст.
3. Добавляем стили для вышеуказанного блока.
То есть нам нужно открыть файл стилей style.css, для этого в панели управления в левом меню выбираем пункт “Внешний вид” и его подпункт “Редактор” и справа в списке шаблонов выбираем файл style.css.
Спускаемся в его коде до самого низу и вставляем следующий код:
#divLoadCont {position:absolute; z-index:500; left:0px; top:0px; width:100%; height:98%; clip:rect(0px 100% 100% 0px); background-color:#ffffff; layer-background-color:#ffffff;} #divLoad1 {position:absolute; layer-background-color:silver; background-color:silver;} #divLoad2 {position:absolute; left:0px; top:0px; layer-background-color:#D1EF4B; background-color:#D1EF4B;} #divLoadText {position:absolute; background-color:transparent; font-family:arial,helvetica,sans-serif; color:navy; font-size:14px;}
Здесь давайте немного разберемся в коде стилей.
Здесь #divLoad1 – отвечает за цвет или его оформление, который указан на скриншоте под цифрой 1.
В вышеуказанном коде у нас стоит цвет “silver”, то есть серебрянный, вы можете поменять его на любой другой, который вам нравиться, например на желтый – #FFFFCC, тогда строчка будет выглядеть так:
#divLoad1 {position:absolute; layer-background-color:#FFFFCC; background-color:#FFFFCC;}
Здесь #divLoad2 – отвечает за цвет или его оформление, который указан на скриншоте под цифрой 2.
Его можно поменять аналогично “#divLoad1”
Здесь divLoadCont – отвечает за цвет или его оформление, который является фоном, скрывающий контент странички до того как она загрузится.
Его можно поменять аналогично “#divLoad1”
Здесь #divLoadText – отвечает за оформление текста, который указан на скриншоте под цифрой 3.
Также можете поменять цвет (navy) и шрифт текста (arial,helvetica,sans-serif), размер (14px).
Вот в принципе и все!