удаление всплывающих окон javascript и css

#javascript #html #css #popup #fadeout

#javascript #HTML #css #всплывающее окно #исчезновение

Вопрос:

Я создаю всплывающее сообщение о том, что когда оно установлено на style.display = "block"; (нажатием кнопки), оно станет невидимым. У меня есть кнопка во всплывающем окне, которая скрывает всплывающее окно, установив style.display = "none"; , как я могу заставить его исчезнуть?

вот css

 #note {
    position: absolute;
    z-index: 101;
    top: 0;
    left: 0;
    right: 0;
    background: #fde073;
    text-align: center;
    line-height: 2.5;
    overflow: hidden; 
    -webkit-box-shadow: 0 0 5px black;
    -moz-box-shadow:    0 0 5px black;
    box-shadow:         0 0 5px black;
}
@-webkit-keyframes slideDown {
    0%, 100% { -webkit-transform: translateY(-50px); }
    10%, 90% { -webkit-transform: translateY(0px); }
}
@-moz-keyframes slideDown {
    0%, 100% { -moz-transform: translateY(-50px); }
    10%, 90% { -moz-transform: translateY(0px); }
}
.cssanimations.csstransforms #note {
    -webkit-transform: translateY(-50px);
    -webkit-animation: slideDown 2.5s 1.0s 1 ease forwards;
    -moz-transform:    translateY(-50px);
    -moz-animation:    slideDown 2.5s 1.0s 1 ease forwards;
}
.cssanimations.csstransforms #close {
    display: none;
}
 

вот javascript

 <script>
    close = document.getElementById("close");
    close.addEventListener('click', function() {
        note = document.getElementById("note");
        note.style.display = 'none';
    }, false);
</script>
 

и вот html

 <div id="note" style="display: none;">
    Form has been sent. If you would like to fill out another suggestion, feel free but remember that there is an Anti-spam system running. <a id="close">[close]</a>
</div>
 

Комментарии:

1. свойство отображения не анимируется. Поэтому вам нужно будет установить display:none , когда заканчивается переход. Используйте javascript для перехвата события transitionend.

2. Вы пробовали использовать jquery? Это намного проще.

Ответ №1:

Используйте jQuery, потому что это намного проще, скачать можно здесь, нажмите здесь. Включить jquery.js и напишите свой код в <script> тегах.

Чтобы показать всплывающее окно, используйте,

 $("#btn_id").click(function(e){
    $('#note').fadeIn();
});
 

Чтобы скрыть всплывающее окно, используйте,

 $("#close").click(function(e){
    $('#note').fadeOut();
});
 

Ответ №2:

Свойство отображения CSS не имеет «скрытого» значения (вероятно, вы допустили ошибку). Вы должны установить для него значение «нет». Затем вы должны указать переход для свойства отображения для #note в css, например

 #note {
    display: block;
    -webkit-transition: display 2s; /* For Safari 3.1 to 6.0 and don't forget other browsers */
    transition: display 2s;
}
 

затем в JS все, что нужно сделать, это просто установить для свойства отображения значение «нет»:

 document.getElementById("close").onclick(function () {
    document.getElementById('note').style.display = 'none';
});
 

Если вы используете переходы CSS, вам следует проверить список совместимости с браузером. В качестве возможного обходного пути вы можете попробовать свойство видимости CSS (от ‘visible’ до ‘hidden’).

Но это неправильный путь, потому что отображение и скрытие не дадут вам плавного исчезновения. Попробуйте свойство opacity, а затем скройте всплывающее окно, установив значение display равным none, когда переход завершен.

Вы можете использовать jQuery или чистый JS, но это намного медленнее, чем переходы CSS. Я бы строго рекомендовал использовать CSS. С другой стороны, переходы CSS имеют худшую совместимость с браузером, поэтому вы должны использовать его, если он соответствует вашим требованиям к совместимости с браузером.