javascript - example - Mensaje de encabezado al igual que en Stack Overflow
html section (5)
Esta es la primera vez que visité el desbordamiento de pila y vi un hermoso mensaje de encabezado que muestra un texto y un botón de cierre.
La barra de encabezado es fija y es excelente para llamar la atención del visitante. Me preguntaba si alguno de ustedes sabe el código para obtener el mismo tipo de barra de encabezado.
Actualizar:
Echa un vistazo a la DEMO
Código utilizado:
$(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);
}
}
}
Si desea crear el suyo propio, consulte la función slideToggle
de jQuery.
¿Algo como esto?
$("#bar").slideUp();
Sin embargo, aquí creo que primero se desvanecen en la barra y luego suben el contenedor principal, por lo que sería algo así:
$("#bar").fadeOut(function(){
$("#container").animate({"top":"0px"});
});
Aquí hay un método alternativo usando jQuery que también se deslizaría hacia arriba / abajo en mostrar / ocultar.
Agregue el siguiente HTML justo después de la etiqueta <body>
en su página:
<div id="msgBox">
<span id="msgText">My Message</span>
<a id="msgCloseButton" href=''#''>close</a>
</div>
Añade este CSS a tu hoja de estilo
#msgBox {
padding:10px;
background-color:Orange;
text-align:center;
display:none;
font:bold 1.4em Verdana;
}
#msgCloseButton{
float:right;
}
Y finalmente, aquí está el javascript para configurar el botón de cierre y las funciones para mostrar y ocultar la barra de mensajes:
/* 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("");
}
Para realizar una prueba simple puedes probar esto:
<a href=''#'' onclick="javascript: DisplayMsg(''Testing'');">Show Message!</a>
El css relevante incluiría:
position: fixed;
top: 0;
width: 100%;
Más información sobre la position:fixed
:
Un elemento con posición: fijo se coloca en las coordenadas especificadas en relación con la ventana del navegador. La posición del elemento se especifica con las propiedades "izquierda", "arriba", "derecha" y "abajo". El elemento permanece en esa posición independientemente del desplazamiento. Funciona en IE7 (modo estricto)
Si el soporte de IE6 es importante para usted, es posible que desee investigar soluciones alternativas .
Implementación rápida y pura de 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'';
};
}
Cómo usarlo:
var myMessageBar = new MessageBar();
myMessageBar.setMessage(''hello'');
// Toggling visibility is simple:
myMessageBar.toggleVisibility();