我有10个div,它们是在随机时间显示的。
我该如何每次将最后一个显示的div设为顶部(排名第一),而不是按照div在HTML中的顺序?
以下是我的代码:
var myVar;
function showDiv(){
var random = Math.floor(Math.random() * $('.notification').length);
$('.notification').eq(random).fadeIn(200).delay(3000).fadeOut(200);
createRandomInterval();
}
function createRandomInterval(){
setTimeout(showDiv, 500+ Math.random() * 4000);
}
$(document).ready(function(){
createRandomInterval();
});
.notification {
width: 200px;
height: 50px;
background-color: yellow;
border: 1px solid rgba(0,0,0,0.2);
margin-bottom: 5px;
text-align: center;
padding-top: 20px;
display: none;/* hide initially so that fadIn() fadeOut() will work
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="notification">1</div>
<div class="notification">2</div>
<div class="notification">3</div>
<div class="notification">4</div>
<div class="notification">5</div>
<div class="notification">6</div>
<div class="notification">7</div>
<div class="notification">8</div>
<div class="notification">9</div>
<div class="notification">10</div>
这是我的fiddle链接:https://jsfiddle.net/gkq21ppt/3/
编辑:解决方案的想法
一个解决方案可以是,将div包裹起来并设置它们为column-reverse。然后添加一个JS代码,为每个新淡入的div设置一个顺序号作为flex顺序号。 但是,由于我的JS技能很低,我不知道如何做到这一点。
所以循环可能看起来像:
- 创建一个从1开始的数字作为变量
- 创建类名为"order-[number]"的类宽度
- 在".order-[number]"类中将css属性"order"设置为[number]
- 在它淡入之前将此类添加到循环中
- 在它淡出之后删除此类
或者?