Волнообразное появление областей div
Нужна помощь знающих людей.:write:
Надо сделатьть пять областей div 40х40 пикселей с id “div1”, “div2”,…,“div5”, раскрашенные в разные цвета, невидимые при загрузке страницы, и кнопку. При нажатии на кнопку должно в цикле срабатывать волнообразное проявление областей div слево-направо, а затем наоборот, исчезновение. Цикл работает до тех пор, пока не закрыта страница. Сам я такое сделать не смогу :cray: |
blackdiie,
а что сможите? |
мигалка волной на js
:lol:
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
body .tkl{
display: none;
transition: all .8s linear;
width: 0px;
height: 40px;
float: left;
}
body.open .tkl{
display: inline-block;
}
body.open .tkl.show{
width: 40px;
}
</style>
</head>
<body>
<input id="bbb" name="" type="button" value="go" onclick="go()"><br>
<img src="http://www.infoportal.pp.ua/_ph/13/2/706430891.jpg" alt="" class="tkl">
<img src="http://www.infoportal.pp.ua/_ph/13/2/706430891.jpg" alt="" class="tkl">
<img src="http://www.infoportal.pp.ua/_ph/13/2/706430891.jpg" alt="" class="tkl">
<img src="http://www.infoportal.pp.ua/_ph/13/2/706430891.jpg" alt="" class="tkl">
<img src="http://www.infoportal.pp.ua/_ph/13/2/706430891.jpg" alt="" class="tkl">
<script>
var timer, show, n = 0, fn = ["add","remove"];
function blinker(cls, duration, sel) {
var elems = [].slice.call(document.querySelectorAll(sel));
show = function() {
document.body.classList.add("open");
window.clearTimeout(timer);
};
return function() {
show();
(function mig(a) {
elems[n].classList[fn[0]](cls);
n = ++n % elems.length;
if(!n) {elems.reverse();fn.reverse()}
timer = window.setTimeout(mig, duration)
})()
}
}
var go = blinker("show", 800, ".tkl");
</script>
</body>
</html>
|
Здравствуй, а как вместо картинок div подключить?
|
Спасибо за код.
|
Цитата:
<div class="tkl" style="background-color: #00FF00"></div> и так 5 раз вместо картинок |
я знаю как покороче записать
так чисто как альтернатива, да и мне тренироваться надо ;)
<head>
<meta charset="utf-8">
<style>
div{
width: 40px;
height: 40px;
display: inline-block;
opacity: 0;
}
</style>
</head>
<body>
<button id="pusk">Пуск</button>
<div></div><div></div><div></div><div></div><div></div>
<script>
document.getElementById("pusk").onclick = function() {
var el = document.querySelectorAll('div');
var col = ["red","green", "blue","violet", "orange"]
for(var i=0; i<5; i++){
el[i].style.backgroundColor = col[i];
el[i].style.animation = 'p'+i+'e 2s infinite';
var keyframes = '@keyframes p'+i+'e {0% {opacity: 0;}'+(10+i*10)+'% {opacity: 1;}'+(90-i*10)+'% {opacity: 1;} 100% {opacity: 0;}}';
var s = document.createElement('style');
s.innerHTML = keyframes;
document.getElementsByTagName('head')[0].appendChild(s);
}
document.body.removeChild(document.getElementById("pusk"));
}
</script>
</body>
|
Цитата:
|
Цитата:
или вы в целом про код? |
j0hnik,
да про this |
Вариант.
<script src='https://s3-us-west-2.amazonaws.com/s.cdpn.io/61811/web-animations-next-2.2.1.min.js'></script>
<style>
div {
width: 40px;
height: 40px;
display: inline-block;
opacity: 0;
}
</style>
<button>Start</button>
<div style='background-color: red'></div>
<div style='background-color: green'></div>
<div style='background-color: blue'></div>
<div style='background-color: orange'></div>
<div style='background-color: yellow'></div>
<script>
const effects = {
opacity: [0, 1]
}
const duration = 200;
const getTiming = direction => ({duration, fill: 'forwards', direction})
const normalKeyframeEffects = [];
const reverseKeyframeEffects = [];
const divs = document.querySelectorAll('div');
for (const div of divs) {
normalKeyframeEffects.push(new KeyframeEffect(div, effects, getTiming('normal')));
reverseKeyframeEffects.unshift(new KeyframeEffect(div, effects, getTiming('reverse')));
}
const sEffects = [new SequenceEffect(normalKeyframeEffects), new SequenceEffect(reverseKeyframeEffects)];
let nextEffect = 0;
const play = () => {
document.timeline.play(sEffects[nextEffect++%sEffects.length]);
setTimeout(play, divs.length * duration);
}
document.querySelector('button').onclick = e => {
e.target.remove();
play();
}
</script>
|
| Часовой пояс GMT +3, время: 05:26. |