我想在页面加载时制作一个预加载器,而不是根据加载的%调整div的宽度我希望根据%加载来更改div的背景颜色的饱和度。 / p>
说实话我不介意我是否必须设置#fff然后将该颜色淡化为红色我只是不知道如何喜欢饱和度变化或%%颜色随着%加载而消失。
这就是我一直在尝试的:
JS
$("#preloader").each(function() {
$(this)
.data("origColor", $(this).backgroundColor())
.backgroundColor('#f4421a')
.animate({
backgroundColor: $(this).data("origColor")
}, 1200);
});
CSS
@-webkit-animation changeColor {
0% { background-color: $white; }
100% { background-color: $orange; }
}
.js div#preloader {
@include position(fixed, $z:9999);
width: 100%;
height: 100%;
overflow: visible;
background: $loading no-repeat center center, $header-bg-mobile repeat top left, lighten($black,70%);
-webkit-animation: changeColor 2s linear infinite;
}
答案 0 :(得分:1)
保持背景颜色,只需通过jQuery
更改不透明度值$("#preloader").each(function() {
$(this).css('opacity','0');
//function to calculate the % loading ...
$(this).animate({opacity: '1'}, 4000);
});
<强> UPDATE ... 强> 由于您无法使用opacity属性,因此可以使用以下两种方法之一:
* P.S:效率不高但他们正在工作
第一种方法:你可以创建多个css类,每个你定义一个背景颜色,每个类名都有一些数值,我们可以在加载时通过循环改变,我们使用toggle类属性就像在这段代码中一样:
HTML
<div id="preloader" class="pClass0c"></div>
jQuery
var currClass= 0;
var TotalClasses= 15;
window.setInterval(Preloading, 200);
function Preloading(){
if (currClass < TotalClasses){
$('#preloader').toggleClass('pClass'+currClass+'c');
currClass++;
};
}
CSS - 颜色类示例
.pClass3c{ background-color:#dddeff; }
.pClass4c{ background-color:#c8c9ff; }
.pClass5c{ background-color:#aaacff; }
.pClass6c{ background-color:#989aff; }
.pClass7c{ background-color:#7c7fff; }
这种方法更容易,更灵活,因为它很容易改变颜色或添加更多的淡入淡出,并且记住颜色类的数量越多,动画越平滑,加载值越精确。
EXAMPLE1: Using .PNG as background image
第二种方法您可以使用CSS图像精灵,并根据%加载动画背景图像的最高值,例如:
var BGpos= -15500;
$('#preloader').css( {backgroundPosition: "0 -15500px"} );
window.setInterval(Preloading, 200);
function Preloading(){
if (BGpos < 0){
$('#preloader').css({backgroundPosition: "0 "+BGpos+"px"});
BGpos= BGpos+ 1500;
};
}
但是在这种方法中,您需要一个名为jquery.bgpos.js
的jquery pluging,您可以检查是否查看了页面源。