#jquery #asp.net-mvc-3
#javascript #HTML #css #заголовок
Вопрос:
Это первый раз, когда я посетил stack overflow, и я увидел красивое сообщение в заголовке, в котором отображается текст и кнопка закрытия.
Строка заголовка является фиксированной и отлично подходит для привлечения внимания посетителя. Мне было интересно, знает ли кто-нибудь из вас, ребята, код для получения такой же строки заголовка.
Ответ №1:
Быстрая реализация чистого JavaScript:
function MessageBar() {
// CSS styling:
var css = function(el,s) {
for (var i in s) {
el.style[i] = s[i];
}
return el;
},
// Create the element:
bar = css(document.createElement('div'), {
top: 0,
left: 0,
position: 'fixed',
background: 'orange',
width: '100%',
padding: '10px',
textAlign: 'center'
});
// Inject it:
document.body.appendChild(bar);
// Provide a way to set the message:
this.setMessage = function(message) {
// Clear contents:
while(bar.firstChild) {
bar.removeChild(bar.firstChild);
}
// Append new message:
bar.appendChild(document.createTextNode(message));
};
// Provide a way to toggle visibility:
this.toggleVisibility = function() {
bar.style.display = bar.style.display === 'none' ? 'block' : 'none';
};
}
Как его использовать:
var myMessageBar = new MessageBar();
myMessageBar.setMessage('hello');
// Toggling visibility is simple:
myMessageBar.toggleVisibility();
Комментарии:
1. Вместо того, чтобы переключать после строки добавления, просто сделайте это: bar.style.display = message === » ? ‘none’ : ‘block’; Затем, когда вы захотите избавиться от панели, просто: myMessageBar.setMessage(«);
2. Переключение видимости кажется мне гораздо более интуитивным API; Я бы ожидал, что пустое сообщение будет отображаться как пустое сообщение, а не без панели вообще.
3. Как бы вы вызвали myMessageBar.toggleVisibility() в качестве onclick для панели?
4. @leif81 Обработчик onclick. Поэтому добавьте
bar.onclick = this.toggleVisibility;
в последнюю строку панели сообщений. @999 — Приятно. jsfiddle.net/pajtai/VUCpK (имеет onclick для панели)
Ответ №2:
Обновить:
Посмотрите ДЕМОНСТРАЦИЮ
Используемый код:
$(function(){
$('#smsg_link').click(function(){
showMessage('#9BED87', 'black', 'This is sample success message');
return false;
});
$('#imsg_link').click(function(){
showMessage('#FFE16B', 'black', 'This is sample info message');
return false;
});
$('#emsg_link').click(function(){
showMessage('#ED869B', 'black', 'This is sample error message');
return false;
});
});
/*
showMessage function by Sarfraz:
-------------------------
Shows fancy message on top of the window
params:
- bgcolor: The background color for the message box
- color: The text color of the message box
- msg: The message text
*/
var interval = null;
function showMessage(bgcolor, color, msg)
{
$('#smsg').remove();
clearInterval(interval);
if (!$('#smsg').is(':visible'))
{
if (!$('#smsg').length)
{
$('<div id="smsg">' msg '</div>').appendTo($('body')).css({
position:'fixed',
top:0,
left:0,
width:'98%',
height:'30px',
lineHeight:'30px',
background:bgcolor,
color:color,
zIndex:1000,
padding:'10px',
fontWeight:'bold',
fontSize:'18px',
textAlign:'center',
opacity:0.8,
margin:'auto',
display:'none'
}).slideDown('show');
interval = setTimeout(function(){
$('#smsg').animate({'width':'hide'}, function(){
$('#smsg').remove();
});
}, 3000);
}
}
}
Если вы хотите создать свой собственный, ознакомьтесь с slideToggle
функцией jQuery.
Комментарии:
1. я ищу что-то, что перемещает весь веб-сайт вниз, а не как выпадающее меню
2. @harrison: Тогда не уверен, что ты имеешь в виду, можешь привести пример?
3. да, подожди. я поищу такое в Интернете.
4. я полагаю, это называется flash messages? я не могу найти пример, за исключением случаев, когда я обнаруживаю новый значок в stackoverflow
5. он имеет в виду, что при отображении сообщения содержимое сайта не должно оставаться неизменным. Они должны быть сброшены сообщением. Сообщение не должно закрывать содержимое.
Ответ №3:
Соответствующий css будет включать:
position: fixed;
top: 0;
width: 100%;
Дополнительная информация о position:fixed
:
Элемент с position: fixed расположен в указанных координатах относительно окна браузера. Позиция элемента указывается с помощью свойств «left», «top», «right» и «bottom». Элемент остается в этой позиции независимо от прокрутки. Работает в IE7 (строгий режим)
Если для вас важна поддержка IE6, вы можете изучить обходные пути.
Ответ №4:
Вот альтернативный метод с использованием jQuery, который также будет скользить вверх / вниз при показе / скрытии.
Добавьте следующий HTML-код сразу после <body>
тега на вашей странице:
<div id="msgBox">
<span id="msgText">My Message</span>
<a id="msgCloseButton" href='#'>close</a>
</div>
Добавьте этот CSS в свою таблицу стилей
#msgBox {
padding:10px;
background-color:Orange;
text-align:center;
display:none;
font:bold 1.4em Verdana;
}
#msgCloseButton{
float:right;
}
И, наконец, вот javascript для настройки кнопки закрытия и функций для отображения и скрытия панели сообщений:
/* Document Ready */
$(function () {
SetupNotifications();
});
SetupNotifications = function () {
//setup close button in msgBox
$("#msgCloseButton").click(function (e) {
e.preventDefault();
CloseMsg();
});
}
DisplayMsg = function (sMsg) {
//set the message text
$("#msgText").text(sMsg);
//show the message
$('#msgBox').slideDown();
}
CloseMsg = function () {
//hide the message
$('#msgBox').slideUp();
//clear msg text
$("#msgtText").val("");
}
Чтобы выполнить простой тест, вы могли бы попробовать это:
<a href='#' onclick="javascript: DisplayMsg('Testing');">Show Message!</a>
Комментарии:
1. я думаю, что это лучшее решение, просто потому, что оно перемещает всю страницу вниз!
Ответ №5:
Что-то вроде этого?
$("#bar").slideUp();
Однако, здесь, я думаю, сначала они исчезают из панели, затем они выводят основной контейнер, так что это было бы что-то вроде этого:
$("#bar").fadeOut(function(){
$("#container").animate({"top":"0px"});
});