标签归档:bg

本博加上了loading大菊花

[前言:由于种种原因,功能性的代码全放到一个单独页面去了]

大部分修改自无聊的等待状态一枚

今天因为?????,我给博客加上了一个菊花来表示页面还在加载,防止有些朋友因为我的博客加载时间过长(这是为什啊!)而以为我博客挂了.

做这个东西几乎用了我一天的时间..说明我的技术还是不足啊,加油!

接下来是正文.

本次修改用到了jquery(我是赖上它了么),原本是把所有代码都写在header里的,后来我发现这样并不好,这样每次加载这个载入画面也要废一些资源,于是我把它单独放在一个html文件里,这样也是有好处的(虽然对有些人来说这样做并不好),好处在于此页面会单独缓存,不用每次一起加载,就算强制刷新也不会牵涉到刷新iframe里的内容,这样可以更快速的加载。

首先是html里的内容,

<html>
  
  <head>
    <script src="../js/jquery.js"></script>
    <style>div#waitallload { position: fixed; height: 100%; width: 100%; background-color: rgba(204,204,204,0.5); } div.huaban { position: absolute; background-color: #000; opacity: 0.4; border-radius: 2px; -moz-border-radius: 2px; -webkit-border-radius: 2px; -ms-border-radius: 2px; -o-border-radius: 2px; } .caozuodingweidiancenter { -webkit-transform-origin: center; -moz-transform-origin: center; -o-transform-origin: center; -ms-transform-origin: center; transform-origin: center; } div#loadingall { position: relative; height: 28px; width: 28px; display: block; -webkit-transform: scale(3); -moz-transform: scale(3); -ms-transform: scale(3); -o-transform: scale(3); transform: scale(3); margin: 0 auto; opacity: 0.5; top: 50%; }</style></head>
  
  <body>
    <div id="waitallload">
      <div id="loadingall" class="caozuodingweidiancenter">
        <div class="huaban" id="huaban1" style="top:0px;left:12px;width:4px;height:8px;"></div>
        <div class="huaban" id="huaban2" style="right:3px;top:5px;width:8px;height:4px;-webkit-transform: rotate(-45deg); -moz-transform: rotate(-45deg); -o-transform: rotate(-45deg); transform: rotate(45deg);"></div>
        <div class="huaban" id="huaban3" style="right:0px;top:12px;width:8px;height:4px;"></div>
        <div class="huaban" id="huaban4" style="right:5px;bottom:3px;width:4px;height:8px;-webkit-transform: rotate(-45deg); -moz-transform: rotate(-45deg); -o-transform: rotate(-45deg); transform: rotate(45deg);"></div>
        <div class="huaban" id="huaban5" style="bottom:0px;left:12px;width:4px;height:8px;"></div>
        <div class="huaban" id="huaban6" style="left:3px;bottom:5px;width:8px;height:4px;-webkit-transform: rotate(-45deg); -moz-transform: rotate(-45deg); -o-transform: rotate(-45deg); transform: rotate(45deg);"></div>
        <div class="huaban" id="huaban7" style="left:0px;top:12px;width:8px;height:4px;"></div>
        <div class="huaban" id="huaban8" style="left:5px;top:3px;width:4px;height:8px;-webkit-transform: rotate(-45deg); -moz-transform: rotate(-45deg); -o-transform: rotate(-45deg); transform: rotate(45deg);"></div>
      </div>
    </div>
  </body>
  <script>huaban = 1;
    function huabanblack() {
      $("#huaban" + huaban).fadeTo(0, 1);
    }
    function huabanwhite() {
      var xiaoshi = 0;
      if (huaban < 8) {
        huaban = huaban + 1;
      } else {
        huaban = 1;
      }
      if (huaban == 1) {
        xiaoshi = 8;
      } else {
        xiaoshi = huaban - 1;
      }
      $("#huaban" + xiaoshi).fadeTo(600, 0.4);
    }
    /*等待菊花*/
    var juhua1haohei, juhua1haobai;
    function loadingstart() {
      juhua1haohei = setInterval('huabanblack()', 90);
      juhua1haobai = setInterval('huabanwhite()', 90);
    }
    loadingstart();</script>

</html>

然后在header里加入html的iframe

<iframe src="<?php echo get_template_directory_uri();?>/framepage/wait.html" style="z-index:-2;display:none;" id='waitiframe' class="bgiframe"></pre>

请无视php脚本,把它放在z-index的-2层上,以便显示在最下面,【z-index的-1层为太阳君和月亮酱】,先让他的显示为none,这样可以利用fadeIn淡入.接下来是就剩js的事了.

在head中的functions.js文件中进行了一下定义

$("#waitiframe").ready(function(e) {      //iframe加载好时进行操作,防止出现元素不存在的错误
	var waitiframe = $("#waitiframe");//获取这个iframe
	waitiframe.fadeIn(500,         //500毫秒(0.5秒)飘进
	function() {                            
		function loadingstop() {      //停止加载状态的函数
			waitiframe.fadeOut(500,//菊花iframe飘出去
			function() {
				waitiframe.remove();    //删掉这个iframe【这样就可以省去启动和停止菊花转动的代码了~~】
			});
		}
		$(window).load(function(e) { // 当完全加载好的时候
			loadingstop();    //停止载入动画
		})
	});
});

但是使用$(window).load有时还是会失效,所以我在页面最底下的修bug的js文件中加入了

var checkwaitiframetimeout;         //延时变量
function checkwaitiframe(){      //检测加载状态的函数[叫这个名字是因为原本它是用来检测iframe是否还在的函数,后来就没改]
	if(document.readyState =="complete"){            //加载状态
		clearTimeout(checkwaitiframetimeout);     //清除延时
		$("#waitiframe").remove();               //清除iframe
	}	
}

接着给下面的$(document).ready中加入

checkwaitiframetimeout=setInterval("checkwaitiframe()",3000);//3秒检测一次载入状态

至于不用自带的状态改变事件是因为担心事件不被捕获。。毕竟连上面的load事件都会丢失,所以还是用这种方法了。

主题【3】的背景坎坷

[2013年2月17日更新]:此CSS在我的iPhone的浏览器上(chrome和safari)表现不同于电脑上的浏览器,它会使背景图片撑满整个page层(整个网页的大小而不是显示区的大小)。所以针对移动设备也许也需要进行js级的背景调整

正文:
在昨天还是前天记不清了,我终于做好了新主题【3】,最后在弄背景图片的时候废了很长时间。
一开始我以为css里没有可以控制背景图片大小的样式【css2里确实没有,但我忘了伟大的css3..】
于是乎我就用一个img标签来充当背景【曾经也有想用img做背景而被blackglory喷过。。。】,然后再用javascript控制img标签自适应大小[这里我做了很长时间,在获取元素的时候出了些问题,后来还是解决了]。

后来发现了css3里又可以控制背景图大小的样式了,我表情如这个

先说说要用css3实现图片填充背景该怎么做

background-image: url(图片地址);  /*加载背景图*/
background-size: cover;/*设置尺寸,这里是第一个重点,可以让浏览器把背景图铺满整个显示区*/
background-attachment: fixed;/*这里不是必须,但一般要用上面那功能的话也都会需要这个功能:把图片固定住不随滚动条滚动*/
background-position: center;/*这里是两个样式[background-position-x和background-position-y]的集合版,设置为center可以让背景图完全居中*/

接下来还是说说img的做法吧,毕竟花了这么长的时间才弄好的QAQ[这个方法现在用来兼容不支持css3的浏览器{到底可不可以兼容还没有测试过}]

先是一个div包一个img标签

 
 

现在已被注释处理了,低于IE9的版本[我也不清楚IE从哪个版本开始支持css3的,于是就大概IE9好了]才会使用这个img标签的背景
这段代码放在了body内第一位
这个img的id被我定义成backgroundimg。。,外面包围的div设置了固定定位[fixed]样式,而且没有宽高,在显示区正中间。
接着把这个img放在div里,初始就这么定位在了50%,50%的地方。接下来的工作全交给js来完成了。

这一句放在head里,同样也被区别注释了。用来载入兼容模式背景图。

里面放了这些东西

 /*加载背景图*/

    bgimgjopj.ready(function(e) {     //背景图这个标签被解析时
        bgimg = document.getElementById('backgroundimg');//一个背景图的对象
        bgimg.style.display = 'none';//先让它隐藏
        bgimg.src = bgsrc;//bgsrc是config.js中的变量[配置]
        bgimgjopj.load(function() {//图片载入时
            bgimg.realwidth = bgwidth;
            bgimg.realheight = bgheight;//拿到宽高[宽高也是config.js中的变量]
            bgimg.w_h = bgimg.realwidth / bgimg.realheight;//计算宽高比
            bgimg.style.display = 'block';//这个其实不该放在这里的,应在最后才出现,但是由于那什么就懒得改了

            resetbgimg();//运行重设背景图函数
        });

        $(window).resize(function() {//窗口变动时
            windowwidth = window.innerWidth;
            windowheight = window.innerHeight;//得到窗口宽高
            resetbgimg();//运行重设背景图函数
        });

        function resetbgimg() {//重设背景图函数
            /*重设背景图*/
            var winw_h = windowwidth / windowheight;//计算窗口宽高比
            if (winw_h > bgimg.w_h) {//窗口宽高比大于图片宽高比时(这时情况是图片左右撑满,上下溢出窗口外)
                bgimgjopj.height('auto');
                bgimgjopj.width(windowwidth);

            } else {//窗口宽高比小于等于图片宽高比时(这时情况是图片上下撑满,左右溢出窗口外)
                bgimgjopj.width('auto');
                bgimgjopj.height(windowheight);
            }
            bgimgjopj.css({//让图片居中
                "margin-left": (bgimg.offsetWidth / -2),
                "margin-top": (bgimg.offsetHeight / -2)
            });
        }
    });

这样就可以让图片永远撑满窗口而且尽量显示全了。

实在不知该写什么了,这篇完结。