Как сделать запоминание в куках результат открытия картинок и текста?
Всем привет! Изложу суть.
На странице имеется 2 блока, первый при заходе на сайт выдает картинки с определенным интервалом времени, (от первой до третей, не по кругу, а именно от 1 до 3 (один раз)), второй блок в это время выдает блоки с текстом также с определенным интервалом времени. Но проблема в том, что когда обновляешь страницу, выдача блоков повторяется. Помогите с помощью куков сделать запоминание браузером пользователя, результат открытие всех блоков на странице. В общем, чтобы после обновления страницы, стояла картинка под номером, и были открытыми все текстовые блоки. Код для блока с текстом: <div class="hide_block1">Текст 1</div> <div class="hide_block2">Текст 2</div> <div class="hide_block3">Текст 3</div> <div class="hide_block4">Текст 4</div> <div class="hide_block5">Текст 5</div>
.hide_block1 {
overflow: hidden;
animation: showDiv 4s forwards;
}
.hide_block2 {
overflow: hidden;
animation: showDiv 14s forwards;
}
.hide_block3 {
overflow: hidden;
animation: showDiv 25s forwards;
}
.hide_block4 {
overflow: hidden;
animation: showDiv 33s forwards;
}
.hide_block5 {
overflow: hidden;
animation: showDiv 42s forwards;
}
@keyframes showDiv {
0%, 99% {
height: 0px;
}
100% {
height: 100%;
}
}
Код картинок:
<div id="slider">
<img src="" id="one">
<img src="" id="two">
</div>
#slider{
width: 100px;
height: 100px;
margin: 0px auto;
}
#slider > img{
position: absolute;
transition: 1s;
}
const viewImages = props => {
let i = 0, elems = [two, one], timeout; one.src = props.img[0], two.src = props.img[1];
const changeImg = () => {
elems.reverse();
elems[0].style.opacity = 1, elems[1].style.opacity = 0;
setTimeout(()=> elems[1].src = props.img[i], props.speed * 1000 + 900);
timeout = setTimeout(changeImg, props.speed * 1000);
i == props.img.length - 1 ? (i = 0, clearTimeout(timeout)) : i++;
}; changeImg();
}
viewImages({
img : [
'https://pp.userapi.com/c849416/v849416811/13d2f8/zPAXn4wkdbs.jpg',
'https://pp.userapi.com/c849416/v849416811/13d2f1/8i73jwgUPek.jpg',
'https://pp.userapi.com/c849416/v849416811/13d2ea/mM6hEHXbOkY.jpg'
],
speed : 2
});
|
Вы можете использовать sessionStorage, и запоминать, когда впервые зашёл пользователь...
<style>
.hide_block1 {
overflow: hidden;
animation: showDiv 4s forwards;
}
.hide_block2 {
overflow: hidden;
animation: showDiv 14s forwards;
}
.hide_block3 {
overflow: hidden;
animation: showDiv 25s forwards;
}
.hide_block4 {
overflow: hidden;
animation: showDiv 33s forwards;
}
.hide_block5 {
overflow: hidden;
animation: showDiv 42s forwards;
}
@keyframes showDiv {
0%, 99% {
height: 0px;
}
100% {
height: 100%;
}
}
</style>
<style id="customStyleSheet"></style>
<style>
#slider {
width: 100px;
height: 100px;
margin: 0px auto;
}
#slider > img {
position: absolute;
transition: 1s;
background-color: black;
}
</style>
<section id="slider">
<img id="one">
<img id="two">
</section>
<section>
<div class="hide_block1">Текст 1</div>
<div class="hide_block2">Текст 2</div>
<div class="hide_block3">Текст 3</div>
<div class="hide_block4">Текст 4</div>
<div class="hide_block5">Текст 5</div>
</section>
<script>
var startDate;
if("startDate" in sessionStorage) {
startDate = Number(sessionStorage.startDate);
} else {
startDate = Date.now();
sessionStorage.startDate = startDate.toString();
}
customStyleSheet.textContent = `
[class*=hide_block] {
animation-delay: -${Date.now() - startDate}ms;
}
`;
function viewImages({ img, speed }) {
var i = Math.floor((Date.now() - startDate) / 1000);
(function changeImg() {
one.src = img[clamp(i % 2 === 0 ? i : i - 1)];
two.src = img[clamp(i % 2 === 0 ? i - 1 : i )];
two.style.opacity = i % 2;
i++;
if(img.length > i) setTimeout(changeImg, 1000 * speed);
})();
function clamp(x) {
return x < 0 ? 0 : x >= img.length ? img.length - 1 : x;
}
}
viewImages({
img: [
'https://pp.userapi.com/c849416/v849416811/13d2f8/zPAXn4wkdbs.jpg',
'https://pp.userapi.com/c849416/v849416811/13d2f1/8i73jwgUPek.jpg',
'https://pp.userapi.com/c849416/v849416811/13d2ea/mM6hEHXbOkY.jpg'
],
speed: 2
});
</script>
|
Malleys, Спасибо то что надо, только sessionStorage поменял на localStorage.
|
| Часовой пояс GMT +3, время: 11:09. |