动画Div背景 - CSS或jQuery

时间:2013-06-20 04:27:22

标签: jquery html css image jquery-animate

我有一个高度优化的成像页面和一些非常图形的效果。

我有一段时间以来一直试图做的事情,但找不到明确的答案。

我希望通过jQuery以与内部动画(500)相同的速度为css背景属性设置动画

请记住,我的其他动画是基于图像的,我有充分的理由正在实施

我可以以500的动画速率编辑整个div的背景属性(如在实时网站上看到的那样)吗?

http://www.sinsysonline.com/design/index.html

的jQuery

<script type='text/javascript'>

$(document).ready(function(){
$(".feat3col").hover(
function() {

$(this).find('img.a').stop().animate({"opacity": "0"}, "fast");
$(this).css('background', '#000');
},
function() {

$(this).find('img.a').stop().animate({"opacity": "1"}, "slow");
$(this).css('background', '#FFF');
});
});
</script>

http://www.sinsysonline.com/design/index.html
标记:

<div class="featured">
            <div class="feat3col">
            <h2>Packages</h2>
                <div class="imgGlow">
                    <img class="a" width:"200px" height:"300px" src="images/filler_200x300.jpg" alt="test" />
                    <img class="b" width:"200px" height:"300px" src="images/filler_200x3002.jpg" alt="test" />
                </div>
            <p>This should extend roughly 5-7 lines. It is simply filler for development purposes. Ignore this statement, and the link below.</p>
            <a href="#" class="botCap">Link Link</a>
        </div>
            <div class="feat3col">
            <h2>Reviews</h2>

                <div class="imgGlow">
                    <img class="a" width:"200px" height:"300px" src="images/filler_200x300.jpg" alt="test" />
                    <img class="b" width:"200px" height:"300px" src="images/filler_200x3002.jpg" alt="test" />
                </div>

            <p>This should extend roughly 5-7 lines. It is simply filler for development purposes. Ignore this statement, and the link below. Make more content!</p>
            <a href="#" class="botCap">Link Link</a>

            </div>
            <div class="feat3col">
            <h2>About</h2>

                <div class="imgGlow">
                    <img class="a" width:"200px" height:"300px" src="images/filler_200x300.jpg" alt="test" />
                    <img class="b" width:"200px" height:"300px" src="images/filler_200x3002.jpg" alt="test" />
                </div>

            <p>This should extend roughly 5-7 lines. It is simply filler for development purposes. Ignore this statement, and the link below. Yet again, these are simply use case scenarios to display different heights and how it still works.</p>
            <a href="#" class="botCap">Link Link</a>
        </div>
    </div>

http://www.sinsysonline.com/design/index.html

请记住,如果这是一个noob问题,我已经制作了一些病态的网站,但不得不使用插件。在我自己的开发中完成本节100%独奏。我需要与图像配对完成此操作的原因是因为如果我在图像上启用透明度它会变成50kb左右(对比2-7kb),优化和淡化,等等等等。我希望能够利用这个图像进行一些淡入淡出的实际图形设计,并使整个div在衰落时与背景相匹配。

3 个答案:

答案 0 :(得分:1)

跳过jQuery并使用css:

.feat3col{
    background-color: #fff;
    -webkit-transition: background-color 0.5s;
    -moz-transition: background-color 0.5s;
    -o-transition: background-color 0.5s;
    transition: background-color 0.5s;
}
.feat3col img.a {
    opacity: 1;
    -webkit-transition: opacity 0.5s;
    -moz-transition: opacity 0.5s;
    -o-transition: opacity 0.5s;
    transition: opacity 0.5s;
}

.feat3col:hover{
    background-color: #000;
}
.feat3col:hover img.a {
    opacity:0;
}

或者,如果你真的想使用jQuery,那么只需在图像不透明度上调用animate,然后传入使用step / progress函数的选项。在步/进度函数中,做任何你想以与不透明度相同的速率动画其他东西,但你需要自己处理颜色的处理。显然,白色到黑色,回到白色很简单。

jQuery解决方案:

$(document).ready(function () {
    $(".feat3col").hover(

    function () {

        $(this).find('img.a').finish().animate({
            opacity: 0
        }, {
            duration: 500,
            progress: function (animation, p, remainingMs) {
                var c = parseInt(255 - (p * 255));
                $(this).closest('.feat3col')
                   .css('background-color', 'rgb('+c+','+c+','+c+')');
                // do other animation stuffs
            }
        })
    },

    function () {

        $(this).find('img.a').finish().animate({
            opacity: 1
        }, {
            duration: 500,
            progress: function (animation, p, remainingMs) {
                var c = parseInt(p * 255);
                $(this).closest('.feat3col')
                   .css('background-color', 'rgb('+c+','+c+','+c+')');
                // do other animation stuffs
            }
        })
    });
});

jsfiddle:http://jsfiddle.net/rW3FC/

答案 1 :(得分:0)

我认为你不能通过jQuery为背景设置动画。你能做的就是把另一个img或div放在其他内容后面,然后根据需要将其淡入淡出,以便伪装成动画背景。

答案 2 :(得分:0)

http://www.sinsysonline.com/design/index.html

解决方案: jQuery的     

$(document).ready(function(){
$(".feat3col").hover(
function() {

$(this).find('img.a').stop().animate({"opacity": "0"}, 500);
},
function() {

$(this).find('img.a').stop().animate({"opacity": "1"}, 500);
});
});
</script>

解决方案: CSS

.feat3col:hover {
-webkit-transition: all .5s ease-in-out;
-moz-transition: all .5s ease-in-out;
-o-transition: all .5s ease-in-out;
transition: all .5s ease-in-out;
background:#EEE;
border-radius:50px;

}