当element接收class时,在另一个元素上更改css

时间:2017-03-27 20:31:44

标签: jquery css animation

我想要完成的内容的简短描述:

当另一个元素获得一个类时,在元素上显示并激活一个css动画。

稍长一点的描述:

当ID为“widget-1”的li元素获得“正常不透明度”类时,我希望DIV“animation-widget-1”中的动画开始。

当“正常不透明度”类继续下一个li元素“widget-2”时。我想隐藏以前的动画(在本例中为DIV“animation-widget-1”),而是显示与当前li元素链接的动画(在本例中为widget-2)。

最后:当“正常不透明度”类回到第一个li元素“widget-1”时,我希望动画重新启动。

HTML

包含列表和包含隐藏动画的div的部分。

<section id="widget-section">
    <div class="function-content">
        <ul class="function-list">
            <li class="normal-opacity" id="widget-1">
                <div>
                    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
                </div>
            </li>
            <li id="widget-2">
                <div>
                    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
                </div>
            </li>
            <li id="widget-3">
                <div>
                    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
                </div>
            </li>
            <li id="widget-4">
                <div>
                    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
                </div>
            </li>
        </ul>
    </div>
    <div class="animations">
        <div class="animated bounceoutdown" id="animation-widget-1">
<i class="material-icons md-48 animated bounceindown">smartphone</i>
<i class="material-icons md-48 animated bounceindown">email</i>
<i class="material-icons md-48 animated bounceindown">chat_bubble_outline</i>
        </div>
    </div>
</section>

JQUERY

“正常不透明度”类跳转到列表“function-list”中的下一个li元素

$(function () {
    var lis = $("#widget-section .function-list> li"),
        currentHighlight = 0;
    N = 6; //interval in seconds
    setInterval(function () {
        currentHighlight = (currentHighlight + 1) % lis.length;
        lis.removeClass('normal_opacity').eq(currentHighlight).addClass('normal_opacity');
    }, N * 1000);
});

CSS

/*MAKES LI ELEMENT HAVE OPACITY 0.5*/

.function-list li {
    opacity: 0.5;
}

.function-list .normal-opacity {
    opacity: 1;
}


/*HIDES THE ANIMATION*/

.animations {
    visibility: hidden;
}


/*DECIDE WHEN ANIMATIONS WILL START*/

#animation-widget-1 {
            animation-delay: 5s;
        }
#animation-widget-1 i:first-child {
            animation-delay: 1s;
        }
#animation-widget-1 i:nth-child(2) {
            animation-delay: 1.3s;
        }
#animation-widget-1 i:last-child {
            animation-delay: 1.6s;
        }

我希望这个问题不是很奇怪,而且我的描述相当不错。

列表动画的GIF:Link to Giphy

请评论解决方案/提示和解决方案以解决此问题:)

1 个答案:

答案 0 :(得分:0)

像这样,你只需要将一个类链接到li;

ImmutableMap.Builder<String, Integer> testmap = ImmutableMap.builder(); 
IntStream.range(0, 100).forEach(n -> {
            testmap.put("teststring-" + Integer.toString(n), 1);
        });
testmap.build();
String x = testmap.entrySet().stream().filter(...); // throws an error while compile

cannot find symbol
    [javac]         String testmap = testmap.entrySet().stream()
    [javac]                                ^
    [javac]   symbol:   method entrySet()
    [javac]   location: variable streams of type Builder<String,Integer>

这样,您放入包含的代码段内的任何内容都将应用于div。如果要启动动画,可能只需添加必要的.function-list li.normal-opacity div { /* code you want to activate goes here */ }属性即可。