gpt4 book ai didi

javascript - 如何在多个 DIV 标签上循环不透明度更改和显示状态

转载 作者:行者123 更新时间:2023-12-03 16:45:56 24 4
gpt4 key购买 nike

我的页面底部有一个栏(功能区)

它有 4 <div>以完全不透明开头的标签。它们都是可点击的链接。

还有4个位置相同,但有display:none

我需要从 opacity:1; 开始的第一个 4至 opacity:0;以从左到右的步进方式,可能相隔 1 秒这样的小时间差。

在第一个 4 消失后,我想以类似的方式用新的 4 替换他们的位置。不透明度:0 到 1 从左到右相隔约 1 秒。

他们会在屏幕上停留 5 秒,然后循环会自行重复。我可以调整时间,我只需要了解代码的主要细节。

所以在每个 <div> 上的不透明度之后下降到 0 显示将变为无。当然,当循环返回时变回阻塞。

我认为我需要打开/关闭显示的原因是因为它们占用相同的空间并且是可点击的链接。如果有更好的方法,我会洗耳恭听。

fadeloop('#ribbon_box_01_id', 500, 5000, true);
fadeloop('#ribbon_box_02_id', 500, 5500, true);
fadeloop('#ribbon_box_03_id', 500, 6000, true);
fadeloop('#ribbon_box_04_id', 500, 6500, true);

function fadeloop(el, timeout, timein, loop) {
var $el = $(el),
intId, fn = function() {
$el.fadeTo(timeout, 0).fadeTo(timein, 1);
};
fn();
if (loop) {
intId = setInterval(fn, timeout + timein + 3000);
return intId;
}
return false;
}
.ribbon_flex_wrapper {
-webkit-box-flex: 0 0 10vh;
-moz-box-flex: 0 0 10vh;
width: 100%;
-webkit-flex: 0 0 10vh;
-ms-flex: 0 0 10vh;
flex: 0 0 10vh;
overflow: hidden;
float: left;
display: block;
}

.ribbon_services_body {
position: relative;
width: 100%;
height: 10vh;
background-color: transparent;
}

.ribbon_services_box {
position: relative;
display: inline-block;
width: 25%;
height: 100%;
cursor: pointer;
opacity: 1;
}

.ribbon_films_box {
position: relative;
display: none;
width: 25%;
height: 100%;
cursor: pointer;
opacity: 1;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="ribbon_flex_wrapper" id="ribbon_flex_wrapper_id">
<div class="ribbon_services_body">
<!-----------SERVICES---------------->
<div class="ribbon_services_box" id="ribbon_box_01_id" onClick="edit();">
<div class="ribbon_services_box" id="ribbon_box_02_id" onClick="vfx();">
<div class="ribbon_services_box" id="ribbon_box_03_id" onClick="audio();">
<div class="ribbon_services_box" id="ribbon_box_04_id" onClick="color();">
<!-----------OUR FILMS--------------->
<div class="ribbon_films_box" id="ribbon_box_05_id" onClick="xxx();">
<div class="ribbon_films_box" id="ribbon_box_06_id" onClick="xxx();">
<div class="ribbon_films_box" id="ribbon_box_07_id" onClick="xxx();">
<div class="ribbon_films_box" id="ribbon_box_01_id" onClick="xxx();">
</div>
</div>

这有一个很好的淡入淡出,但我不知道如何添加显示变化和其他 4 个标签。同样,这只是我发现的众多起点之一,如果您认为完全不同的东西更好,我对此持开放态度。

丝带看起来像这样:

enter image description here谢谢

最佳答案

为了尝试实现您想要的效果,如果我能理解的话,我会使用简单的 css3 动画来实现“不透明”效果。

首先,我会将最后 4 个 div 放在前 4 个带有 z-index 的下方,然后再次使用简单的动画来更改 z-index,以便始终正确点击所有 div(不透明度,隐藏的 div 仍会保留在上方)。我会使用 z-index,因为 display 属性不能用于动画。

然后您只需要一个简单的jquery脚本来将动画类添加到div

像这样:

$('button').click(function(){
$(".box4").addClass("fadein");
timeout = setTimeout(function() {
$(".box3").addClass("fadein");
timeout = setTimeout(function() {
$(".box2").addClass("fadein");
timeout = setTimeout(function() {
$(".box1").addClass("fadein");
$(".banner2").addClass("zindex");
timeout = setTimeout(function() {
$(".box5").addClass("fadeout");
timeout = setTimeout(function() {
$(".box6").addClass("fadeout");
timeout = setTimeout(function() {
$(".box7").addClass("fadeout");
timeout = setTimeout(function() {
$(".box8").addClass("fadeout");
}, 1000);
}, 1000);
}, 1000);
}, 1000);
}, 1000);
}, 1000);
}, 1000);
});
body, div {margin:0; padding:0}
img {display:block;}
.container {
position:relative;
height:50px;
margin-bottom:10px;
}
.box {
display:inline-block;
cursor:pointer;
margin-left:-5px;
}
.banner1, .banner2 {
position:absolute;
top:0;
left:0;
white-space:nowrap;
}
.banner1 {
z-index:5
}
.banner2 {
z-index:1;
}
.box1, .box2, .box3, .box4 {}
.box5, .box6, .box7, .box8 {opacity:0;}
.fadein {
animation-name: fadein;
animation-duration: 1s;
animation-fill-mode: forwards;
}
.fadeout {
animation-name: fadeout;
animation-duration: 1s;
animation-fill-mode: forwards;
}
.zindex {
animation-name: zindex ;
animation-duration: 0.1s;
animation-fill-mode: forwards;
}
@keyframes fadein {
0% { opacity:1; }
100% { opacity:0; }
}
@keyframes fadeout {
0% { opacity:0; }
100% { opacity:1; }
}
@keyframes zindex {
0% {z-index:1; }
100% {z-index:10; }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="container">
<div class="banner1">
<div class="box box1"><img src="https://t00.deviantart.net/OHnECGm-qAA6y-TCecwbQV9nQlY=/fit-in/150x150/filters:no_upscale():origin()/pre00/203f/th/pre/f/2018/036/c/6/mission_impossible_6_by_queenofnightwish-dc298a8.jpg" alt=""></div>
<div class="box box2"><img src="https://t05.deviantart.net/K9H6kV3KW6NCFUOu9J8bNr6DKGY=/fit-in/150x150/filters:no_upscale():origin()/pre00/b405/th/pre/f/2009/174/0/6/bruce_lee_signature_by_stfx_art.png" alt=""></div>
<div class="box box3"><img src="https://t00.deviantart.net/yQx2SZhR-zq-1zLFnerYPlMVL3U=/fit-in/150x150/filters:no_upscale():origin()/pre00/0519/th/pre/f/2009/123/f/6/gambit_by_modestroad.jpg" alt=""></div>
<div class="box box4"><img src="https://t00.deviantart.net/Ptw-vGWCgr6_q7b54nRrY3EZ7ic=/fit-in/150x150/filters:no_upscale():origin()/pre00/a85b/th/pre/i/2016/217/0/d/shah_rukh_khan_by_rizucreation-dacsd72.jpg" alt=""></div>
</div>
<div class="banner2">
<div class="box box5"><img src="https://image.redbull.com/rbcom/010/2012-05-19/1331574558762_1/0010/1/150/50/1/jenny-rissveds-podium.JPG" alt=""></div>
<div class="box box6"><img src="https://image.redbull.com/rbcom/052/2018-07-05/550b8e50-8419-4b31-90b4-8450ec7f83e8/0012/0/262/0/1329/3200/150/1/f1-2018-max-verstappen.jpg" alt=""></div>
<div class="box box7"><img src="https://image.redbull.com/rbcom/010/2014-05-26/1331654253313_9/0010/1/150/50/1/imagen-de-vi%C3%B1ales-y-salom-en-la-pretemporada.jpg" alt=""></div>
<div class="box box8"><img src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTOPaBgzYMm41trhcBkJ0B1-QaQ46EzX6ZQ864lloFBBAYWiqo_tg" alt=""></div>
</div>
</div>
<button>start</button>

顺便说一句,我使用了一个按钮来触发效果。为丑陋的嵌套超时道歉,没有多少时间来整理它。

关于javascript - 如何在多个 DIV 标签上循环不透明度更改和显示状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46736602/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com