Отключить видимость элемента, изменить innerHTML и вернуть обратно

0

У меня есть элемент на моей HTML-странице, который я хочу предоставить динамический контент, и я хочу, чтобы вставленный HTML переходил с 0% на 100% непрозрачность.

HTML

<div id="content"></div>

CSS

#content {
  opacity: 1;
  transition: opacity .5s ease-out;
  -moz-transition: opacity .5s ease-out;
  -webkit-transition: opacity .5s ease-out;
}

#content.hide {
  opacity: 0;
}

JavaScript

function setContent(html) {
  var content = document.getElementById("content");

  //Set hide class
  content.className += " hide";

  //Set HTML
  content.innerHTML = html;

  //Unset hide class
  content.className = content.className.replace(/(?:^|\s)hide(?!\S)/g, '');
}

Обратите внимание, что setContent() устанавливает, а затем отключает класс hide. Однако кажется, что браузер (по крайней мере, Chrome) не делает недействительным элемент контента до тех пор, пока он не вернется из функции, поэтому элемент не получит шансов на транзистор. Как я могу убедиться, что анимация играет?

EDIT: чтобы быть ясным, setContent() вызывается после загрузки DOM. Представьте приложение, которое очищает и повторно заполняет экран при возникновении какого-либо действия.

  • 0
    Это внутри DOM ready ?
  • 0
    Какая? setContent является глобальной функцией.
Показать ещё 3 комментария
Теги:

2 ответа

0
Лучший ответ

Как насчет использования анимаций?

#content {
    padding-left: 32px;
    padding-right: 32px;
    animation: fadein 0.5s;
    -moz-animation: fadein 0.5s; 
    -webkit-animation: fadein 0.5s; 
}

@keyframes fadein {
    from {
        opacity:0;
    }
    to {
        opacity:1;
    }
}
@-moz-keyframes fadein { 
    from {
        opacity:0;
    }
    to {
        opacity:1;
    }
}
@-webkit-keyframes fadein { 
    from {
        opacity:0;
    }
    to {
        opacity:1;
    }
}
0

Можете ли вы быть более ясными, каков контекст этого?

Также, где вы вызываете функцию? Это место, где вы вызываете функцию внутри функции DOM ready?

В jQuery это будет примерно так:

$(document).ready(function(){
    //call the function inside here.
});
  • 0
    Эта функция не заставит мою анимацию работать, а также я не понимаю, почему я должен использовать JQuery для этого.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню