Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.05.2020, 18:27
Профессор
Отправить личное сообщение для dima85 Посмотреть профиль Найти все сообщения от dima85
 
Регистрация: 14.03.2010
Сообщений: 194

Плавное появления элемента
function test(text){
document.body.innerHTML+='<div id="alert" class="alert">'+text+'</div>';
 setInterval(function(){
   elem("alert").classList.add("alert-open");
 },100)
}

.alert {
  position: fixed;
  left: 0;
  right: 0;
  bottom: -30%;
  transition-property: bottom;
  transition-duration: 0.5s;
}
.alert-open {
    bottom: 0%;
}


Когда вызываем функцию у нас появляется блок который плавно выезжает.
Подскажите пожалуйста как избавится от setInterval?
Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 27.05.2020, 18:58
Профессор
Отправить личное сообщение для dima85 Посмотреть профиль Найти все сообщения от dima85
 
Регистрация: 14.03.2010
Сообщений: 194

Не то.
Ответить с цитированием
  #3 (permalink)  
Старый 27.05.2020, 19:01
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Не обратил внимание на классы.
Странно, у вас что вся страница будет из одного DIV? Создавайте, затем добавляйте его в документ, и добавленному указывайте и имя класса, и таймер не потребуется.
Анимации CSS можно задать и задержку, если требуется.

Последний раз редактировалось laimas, 27.05.2020 в 19:15.
Ответить с цитированием
  #4 (permalink)  
Старый 27.05.2020, 19:26
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от dima85
Подскажите пожалуйста как избавится от setInterval?
измерить ширину окна перед classList.add
Ответить с цитированием
  #5 (permalink)  
Старый 27.05.2020, 19:43
Профессор
Отправить личное сообщение для dima85 Посмотреть профиль Найти все сообщения от dima85
 
Регистрация: 14.03.2010
Сообщений: 194

Сообщение от рони Посмотреть сообщение
измерить ширину окна перед classList.add
Не совсем понял о чем вы. Окно браузера самостоятельно сделать другого размера? Это не заставить делать посетителей сайта.
Ответить с цитированием
  #6 (permalink)  
Старый 27.05.2020, 19:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от dima85
Не совсем понял о чем вы
document.documentElement.clientHeight;
<!doctype html>
<html lang="ru">
<head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style type="text/css">
.alert {
    position: fixed;
    left: 0;
    right: 0;
    bottom: -30%;
    transition-property: bottom;
    transition-duration: 0.5s;
}
.alert-open {
        bottom: 0%;
         font-size: 48px;
         text-align: center;
}
        </style>
</head>
<body>
 <script>
function test(text){
let elem = document.createElement('div');
elem.className = 'alert';
elem.innerHTML = text;
document.body.appendChild(elem);
document.body.scrollHeight;
elem.classList.add("alert-open");
}
test('text')
</script>

</body>
</html>

Последний раз редактировалось рони, 27.05.2020 в 21:04.
Ответить с цитированием
  #7 (permalink)  
Старый 27.05.2020, 19:49
Профессор
Отправить личное сообщение для dima85 Посмотреть профиль Найти все сообщения от dima85
 
Регистрация: 14.03.2010
Сообщений: 194

Сообщение от laimas Посмотреть сообщение
Не обратил внимание на классы.
Странно, у вас что вся страница будет из одного DIV? Создавайте, затем добавляйте его в документ, и добавленному указывайте и имя класса, и таймер не потребуется.
Анимации CSS можно задать и задержку, если требуется.
Скорее вы совсем не поняли работу кода. Обратите еще внимание на 2 строку, там +=
Блок добавляется и позиционируется поверх всего сайта.
Ответить с цитированием
  #8 (permalink)  
Старый 27.05.2020, 19:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от dima85
там +=
не делайте так, если не хотите проблем, сотрутся все обработчики после перезаписи.
Ответить с цитированием
  #9 (permalink)  
Старый 27.05.2020, 20:47
Профессор
Отправить личное сообщение для dima85 Посмотреть профиль Найти все сообщения от dima85
 
Регистрация: 14.03.2010
Сообщений: 194

Сообщение от laimas Посмотреть сообщение
Не обратил внимание на классы.
Странно, у вас что вся страница будет из одного DIV? Создавайте, затем добавляйте его в документ, и добавленному указывайте и имя класса, и таймер не потребуется.
Анимации CSS можно задать и задержку, если требуется.
Сообщение от рони Посмотреть сообщение
не делайте так, если не хотите проблем, сотрутся все обработчики после перезаписи.
Понял, спасибо. Ваше решение работает хорошо на компьютере. Но на телефоне Chrome, Firefox - нет плавного появления, появляется сразу.
Есть идеи почему? (Мой код плавно работал и на телефоне)

Последний раз редактировалось dima85, 27.05.2020 в 20:51.
Ответить с цитированием
  #10 (permalink)  
Старый 27.05.2020, 21:02
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от dima85
Есть идеи почему?
возможно там нет documentElement, измерьте что-то другое например
document.body.scrollHeight;

смотрите исправленный пример выше

Последний раз редактировалось рони, 27.05.2020 в 21:05.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт для плавного появления элемента при скролле Quark_ Javascript под браузер 2 05.09.2018 11:24
Плавное появление элемента. anabenne Ваши сайты и скрипты 6 25.07.2016 23:23
Удаление элемента через секунду после появления Anfisunka jQuery 6 14.11.2015 20:45
Плавное исчезновение/появление элемента Dudo4nick jQuery 3 28.11.2011 13:51
помогите "уловить" момент появления элемента Bebarr Swallow Events/DOM/Window 4 18.03.2011 08:16