Может ли Twitter Bootstrap оповещения исчезать, а также?
когда я впервые увидел предупреждения в Bootstrap, я думал, что они будут вести себя так же, как и модальное окно, падая или исчезая, а затем исчезая при закрытии. Но кажется, что они всегда видны. Я думаю, что я мог бы заставить их сидеть в слое над моим приложением и управлять их показом, но мне было интересно, встроена ли функциональность?
спасибо!
редактировать, что у меня есть до сих пор:
<div id="saveAlert" class="alert-message success fade in" data-alert="alert" style="top:0">
<a class="close" href="#">×</a>
<p><strong>Well done!</strong> You successfully read this alert message.</p>
</div>
10 ответов:
Я категорически не согласен с большинством ответов упоминалось ранее.
короткий ответ:
опустите класс " in " и добавьте его с помощью jQuery, чтобы он исчез.
см. этот jsfiddle для примера, который исчезает в предупреждении через 3 секунды http://jsfiddle.net/QAz2U/3/
ответ:
хотя это правда bootstrap изначально не поддерживает затухание в предупреждениях, большинство ответов здесь используется функция jQuery fade, которая использует JavaScript для анимации (fade) элемента. Большим преимуществом этого является кросс-браузерная совместимость. Недостатком является производительность (см. Также:jQuery для вызова CSS3 fade анимации?).
Bootstrap использует переходы CSS3,которые имеют лучшую производительность. Что важно для мобильных устройств:
Bootstraps CSS для затухания предупреждения:
.fade { opacity: 0; -webkit-transition: opacity 0.15s linear; -moz-transition: opacity 0.15s linear; -o-transition: opacity 0.15s linear; transition: opacity 0.15s linear; } .fade.in { opacity: 1; }
почему я думаю, что это представление так важно? Люди, использующие старые браузеры и аппаратное обеспечение, потенциально получат прерывистые переходы с помощью jQuery.увядать.)( То же самое касается старого оборудования с современными браузерами. Использование переходов CSS3 люди, использующие современные браузеры, получат плавную анимацию даже со старым оборудованием, а люди, использующие старые браузеры, которые не поддерживают переходы CSS, просто мгновенно увидят всплывающий элемент, который, я думаю, является лучшим пользовательским опытом, чем прерывистые анимации.
Я пришел сюда в поисках того же ответ, как указано выше: чтобы исчезнуть в предупреждении о начальной загрузке. После некоторого копания в коде и CSS Bootstrap ответ довольно прост. Не добавляйте класс "in" в свое предупреждение. И добавьте это с помощью jQuery, когда вы хотите исчезнуть в своем предупреждении.
HTML (обратите внимание, что нет на класс!)
<div id="myAlert" class="alert success fade" data-alert="alert"> <!-- rest of alert code goes here --> </div>
Javascript:
function showAlert(){ $("#myAlert").addClass("in") }
вызов функции выше функция добавляет класс " in " и исчезает в предупреждении с помощью CSS3-переходы :-)
Также см. Этот jsfiddle для примера, используя тайм-аут (спасибо Джон Леманн!): http://jsfiddle.net/QAz2U/3/
что я использую это:
в вашем шаблоне область оповещения
<div id="alert-area"></div>
затем функция jQuery для отображения предупреждения
function newAlert (type, message) { $("#alert-area").append($("<div class='alert-message " + type + " fade in' data-alert><p> " + message + " </p></div>")); $(".alert-message").delay(2000).fadeOut("slow", function () { $(this).remove(); }); } newAlert('success', 'Oh yeah!');
вы можете исчезать в поле с помощью jQuery. Используйте бутстрапы, встроенные в класс 'hide', чтобы эффективно установить display:none на элементе div:
<div id="saveAlert" class="alert alert-success hide" data-alert="alert" style="top:0"> <a class="close" href="#">×</a> <p><strong>Well done!</strong> You successfully read this alert message.</p> </div>
а затем использовать функцию fadeIn в jquery, например:
$("#saveAlert").fadeIn();
есть также указать продолжительность для функции fadeIn, например: $("#saveAlert").fadeIn(400);
полную информацию об использовании функции fadeIn можно найти на официальном сайте документации jQuery: http://api.jquery.com/fadeIn/
просто боковая заметка, Если вы не используете jquery, вы можете либо добавить класс 'hide' в свой собственный файл CSS, либо просто добавить его в свой div:
<div style="display:none;" id="saveAlert">
ваш div будет в основном установлен в скрытый по умолчанию, а затем jQuery выполнит действие fadeIn, заставляя div отображаться.
для 2.3 и выше, только добавить:
$(".alert").fadeOut(3000 );
bootstrap:
<div class="alert success fade in" data-alert="alert" > <a class="close" data-dismiss="alert" href="#">×</a> // code </div>
работает во всех браузерах.
добавить
hide
классalert-message
. Затем поместите следующий код после импорта скрипта jQuery:$(document).ready( function(){ $(".alert-message").animate({ 'height':'toggle','opacity':'toggle'}); window.setTimeout( function(){ $(".alert-message").slideUp(); }, 2500); });
если вы хотите обрабатывать несколько сообщений, этот код будет скрывать их в порядке возрастания:
$(document).ready( function(){ var hide_delay = 2500; // starting timeout before first message is hidden var hide_next = 800; // time in mS to wait before hiding next message $(".alert-message").slideDown().each( function(index,el) { window.setTimeout( function(){ $(el).slideUp(); // hide the message }, hide_delay + hide_next*index); }); });
ни один из текущих ответов не работал для меня. Я использую Bootstrap 3.
мне понравилось то, что делал Роб Вермеер, и я начал с его ответа.
для эффекта затухания, а затем затухания, я просто использовал следующую функцию и использовал jQuery:
Html на моей странице, чтобы добавить предупреждение(ы) в:
<div class="alert-messages text-center"> </div>
функция Javascript, чтобы показать и отклонить предупреждение.
function showAndDismissAlert(type, message) { var htmlAlert = '<div class="alert alert-' + type + '">' + message + '</div>'; // Prepend so that alert is on top, could also append if we want new alerts to show below instead of on top. $(".alert-messages").prepend(htmlAlert); // Since we are prepending, take the first alert and tell it to fade in and then fade out. // Note: if we were appending, then should use last() instead of first() $(".alert-messages .alert").first().hide().fadeIn(200).delay(2000).fadeOut(1000, function () { $(this).remove(); }); }
затем, чтобы показать и отклонить предупреждение, просто вызовите функцию вот так:
showAndDismissAlert('success', 'Saved Successfully!'); showAndDismissAlert('danger', 'Error Encountered'); showAndDismissAlert('info', 'Message Received');
в качестве примечания, я стилизовал div.alert-сообщения фиксированные сверху:
<style> div.alert-messages { position: fixed; top: 50px; left: 25%; right: 25%; z-index: 7000; } </style>
я не согласен с тем, как Bootstrap использует
fade in
(как видно из их документации -http://v4-alpha.getbootstrap.com/components/alerts/), и мое предложение-избегать имен классовfade
иin
, и чтобы избежать этой картины в целом (что в настоящее время видно в топ-рейтинге ответа на этот вопрос).(1) семантика неверна - переходы являются временными, но имена классов живут. Так почему же мы должны называть наши классы
fade
иfade in
? Он должен быть!--8--> иfaded-in
, так что, когда разработчики читают разметку, ясно, что эти элементы былиfaded
илиfaded-in
. Команда Bootstrap уже покончила сhide
наhidden
, почемуfade
что-нибудь другое?(2) используя 2 классы
fade
иin
для одного перехода загрязняет пространство класса. И, это не ясно, чтоfade
иin
связаны друг с другом. Элементin
класс выглядит как совершенно независимый класс, какalert
иalert-success
.лучшее решение-использовать
faded
когда элемент исчез, и заменить этот класс наfaded-in
когда элемент исчез.Тревога Исчезла
Итак, чтобы ответить на вопрос. Я думаю, что разметка предупреждений, стиль и логика должны быть написаны следующим образом. Примечание: не стесняйтесь заменить логику jQuery, если вы используете ваниль javascript.
HTML
<div id="saveAlert" class="alert alert-success"> <a class="close" href="#">×</a> <p><strong>Well done!</strong> You successfully read this alert message.</p> </div>
CSS
.faded { opacity: 0; transition: opacity 1s; }
JQuery
$('#saveAlert .close').on('click', function () { $("#saveAlert") .addClass('faded'); });
конечно, да. Используйте этот простой файл в своем проекте:https://gist.github.com/3851727
Сначала добавьте HTML вот так:
<div id="messagebox" class="alert hide"></div>
и затем использовать:
$("#messagebox").message({text: "Hello world!", type: "error"});
вы можете передать все типы предупреждений bootstrap, такие как
error
,success
иwarning
доtype
свойства как параметры.
Я получил этот способ, чтобы закрыть исчезает мое предупреждение через 3 секунды. Надеюсь, что это будет полезно.
setTimeout(function(){ $('.alert').fadeTo("slow", 0.1, function(){ $('.alert').alert('close') }); }, 3000)
Это очень важный вопрос и я изо всех сил пытался сделать это (показать/скрыть) сообщение, заменив текущее и добавив новое сообщение.
Ниже приведен рабочий пример:
function showAndDismissAlert(type, message) { var htmlAlert = '<div class="alert alert-' + type + '">' + message + '</div>'; $(".alert-messages").prepend(htmlAlert); $(".alert-messages .alert").hide().fadeIn(600).delay(2000).fadeOut(1000, function() { $(this).remove(); }); }
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="alert-messages"></div> <div class="buttons"> <button type="button" name="button" onclick="showAndDismissAlert('success', 'Saved Successfully!')">Button1</button> <button type="button" name="button" onclick="showAndDismissAlert('danger', 'Error Encountered')">Button2</button> <button type="button" name="button" onclick="showAndDismissAlert('info', 'Message Received')">Button3</button> </div>
надеюсь, что это поможет другим!