Normalerweise, wenn Sie einen Benutzer auf etwas aufmerksam machen möchten, verwenden Sie eine Warnung.
Nun möchte ich sagen, dass ich das gerne auf eine Android-Toastähnliche Weise machen würde, nämlich ein Popup, das auf dem Bildschirm angezeigt wird, dann aber einige Sekunden später von selbst verschwindet damit der Benutzer sich nicht darum kümmern muss Schließen Sie es wie das Bild unten.
Wie kann so etwas im Web erreicht werden?
Hinweis: Wenn Sie ein Touch-Interface verwenden, möchte ich es deshalb so haben
Der einfachste Weg ist, einen Inhaber zu machen, an dem Sie Ihre Nachricht platzieren. Dieser Inhaber wird ausgeblendet.
<div class='error' style='display:none'>Event Created</div>
Sie fügen etwas CSS-Magie hinzu
.error {
width:200px;
height:20px;
height:auto;
position:absolute;
left:50%;
margin-left:-100px;
bottom:10px;
background-color: #383838;
color: #F0F0F0;
font-family: Calibri;
font-size: 20px;
padding:10px;
text-align:center;
border-radius: 2px;
-webkit-box-shadow: 0px 0px 24px -1px rgba(56, 56, 56, 1);
-moz-box-shadow: 0px 0px 24px -1px rgba(56, 56, 56, 1);
box-shadow: 0px 0px 24px -1px rgba(56, 56, 56, 1);
}
Dann können Sie es mit einem einfachen Skript für einige Sekunden anzeigen. Verwenden Sie ggf. .stop()
$('.error').fadeIn(400).delay(3000).fadeOut(400); //fade out after 3 seconds
$('button').click(function () {
$('.error').text($(this).data('text')).fadeIn(400).delay(3000).fadeOut(400);
});
body, html {
height:100%;
width:100%;
min-height:100%;
padding:0;
margin:0;
}
.error {
width:200px;
height:20px;
height:auto;
position:absolute;
left:50%;
margin-left:-100px;
bottom:10px;
background-color: #383838;
color: #F0F0F0;
font-family: Calibri;
font-size: 20px;
padding:10px;
text-align:center;
border-radius: 2px;
-webkit-box-shadow: 0px 0px 24px -1px rgba(56, 56, 56, 1);
-moz-box-shadow: 0px 0px 24px -1px rgba(56, 56, 56, 1);
box-shadow: 0px 0px 24px -1px rgba(56, 56, 56, 1);
}
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class='error' style='display:none'></div>
<button data-text='I did something!'>Do something!</button>
Dies ist ein sehr einfaches Beispiel, das dann in eine Funktion mit Parametern umgewandelt werden kann, die Text, Farbe, Dauer und alles, was Sie benötigen, angeben.
Unten ein fortgeschrittener (unnötig komplizierter) Weg (irgendwie wie ein Plugin). Hier ist auch eine Geigenversion.
(function($) {
$.fn.aToast = function(options) {
var $this = $(this),
settings = $.extend({
fadeOut: 400,
fadeIn: 400,
delay: 3000,
text: 'Whoops! Something happened and I showed up.',
toastListenEvent: 'click',
aClass: false
}, options),
$at = false,
aTevents = false;
settings.toastListenEvent = settings.toastListenEvent + ' a-Toast';
settings.aClass = 'aToast-view-message'
+ (settings.aClass ? ' ' + settings.aClass : '')
if ($('[data-aToast=true]:not(.aToast-init)').length)
$this = $this.add($('[data-aToast=true]:not(.aToast-init)')
.addClass('aToast-init'));
function _remove() {
$(this).stop().remove();
}
function _displayDiv() {
$('.aToast-view-message').hide();
var da = $(this).data('atoast-text');
var $div = $('<div/>', {
text: da ? da : settings.text,
class: settings.aClass
}).stop().fadeIn(settings.fadeIn)
.delay(settings.delay)
.fadeOut(settings.fadeOut, _remove)
.appendTo('body');
}
$this.not('[data-aToast=false]').on(settings.toastListenEvent, _displayDiv);
};
}(jQuery));
$('button').aToast({
aClass: 'users-dont-care-about-this-class-name'
});
$('div').aToast({
aClass: 'hehe',
toastListenEvent: 'mouseenter',
text: 'Okay, this is not working'
});
/* or
$().aToast({
aClass: 'users-dont-care-about-this-class-name'
});
To listen to data-aToast only
*/
body,
html {
height: 100%;
width: 100%;
min-height: 100%;
padding: 0;
margin: 0;
}
.aToast-view-message {
width: 200px;
height: 20px;
height: auto;
position: absolute;
left: 50%;
margin-left: -100px;
bottom: 10px;
background-color: #383838;
color: #F0F0F0;
font-family: Calibri;
font-size: 20px;
padding: 10px;
text-align: center;
border-radius: 2px;
-webkit-box-shadow: 0px 0px 24px -1px rgba(56, 56, 56, 1);
-moz-box-shadow: 0px 0px 24px -1px rgba(56, 56, 56, 1);
box-shadow: 0px 0px 24px -1px rgba(56, 56, 56, 1);
}
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button>Here goes nothing</button>
<input type='button' data-aToast='true' data-aToast-text='Hey there.' value='Woop!' />
<div style='display:inline-block'>I am a div! Hover me</div>
Sie haben einige gute Bibliotheken im Internet, um die native Android-Toast-Nachricht nachzuahmen:
Grundsätzlich ist eine div
mit der Nachricht mit etwas CSS und einer Animation zum Anzeigen und Ausblenden.
Wenn Sie eine solche Benachrichtigung wünschen. Dann ist Code und Anleitung hier (Entschuldigung koding.com :)))
HTML-Seite (Ende des Hauptteils hinzufügen)
<div id="notification" class="kdnotification main">
<div class="kdnotification-title"></div>
</div>
CSS-Seite
.kdnotification{display:none}
.kdnotification a{text-shadow:0 1px 0 #444}
.kdnotification{position:fixed;padding:10px;z-index:20001;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}
.kdnotification .kdnotification-title{color:#fff;font-size:24px;line-height:36px;margin:2px;font-weight:700}
.kdnotification .kdnotification-content{font-size:16px;line-height:18px;color:#fff}
.kdnotification .kdnotification-timer{position:absolute;top:21px;right:25px;color:#fff;line-height:15px;text-align:center;font-size:15px;width:20px;height:24px}
.kdnotification a{position:absolute;cursor:pointer;display:block;top:24px;right:5px;line-height:24px;text-align:center;font-size:24px;text-decoration:none;color:#fff;width:20px;height:24px}
.kdnotification-title{font-size:18px;line-height:28px;float:none}
.kdnotification-title{font-size:12px;line-height:16px;font-weight:400;float:none}
.kdnotification.mini{-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;padding:1px;-webkit-box-shadow:0 0 1px 1px rgba(255,255,255,.1),inset 0 0 2px #000;-moz-box-shadow:0 0 1px 1px rgba(255,255,255,.1),inset 0 0 2px #000;box-shadow:0 0 1px 1px rgba(255,255,255,.1),inset 0 0 2px #000}
.kdnotification-title{font-size:12px;line-height:16px;font-weight:400;float:none;padding:2px 10px}
.kdnotification.mini .kdnotification-title p{padding:0 10px}
.kdnotification.mini.error{background:rgba(185,74,72,.9);font-weight:600}
.kdnotification.mini.success{background:rgba(70,136,71,.8);font-weight:600}
JS-Seite (natürlich mit Jquery-Bibliothek)
function notify(message,status){
$('.kdnotification-title').html(message);
funcking();
if(status == 1){
$('#notification').css({'background-color':'rgba(0,0,0,.4)'}).fadeIn('slow').delay(5000).fadeOut('slow');
} else {
$('#notification').css({'background-color':'rgba(216,0,12,.6)'}).fadeIn('slow').delay(3000).fadeOut('slow');
}
}
function funcking(){
var kd=$('.kdnotification');
var viewportHeight = $(window).height(),
viewportWidth = $(window).width(),
kdheight = kd.height(),kdwidth = kd.width(),
hdiff = viewportHeight - kdheight,
vdiff = viewportWidth - kdwidth,
left= vdiff/2,
top = hdiff/2;
kd.css({'top':top+'px','left':left+'px'});
}
Anwendungsfall
if(success){
notify("Success message",1);
} else {
notify("Error message",0);
}
Hier ist eine einfache CSS- und Javascript-Lösung. (Verwendet Jquery, muss aber nicht).
$("#clickme").click(function() {
$("body").append("<span class ='toast'>Hello World!</span>");
setTimeout(function(){
$(".toast").remove();
},3000);
});
.toast {
position: fixed;
display:block;
bottom: 2em;
height: 2em;
width: 10em;
left: calc(50% - 5em);
animation: toast-fade-in 1s 2 alternate;
background-color: black;
border-radius: 2em;
color: white;
text-align: center;
padding: 1em;
line-height: 2em;
opacity: 0;
}
@keyframes toast-fade-in {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id = "clickme" type = "button" value = "click me!"/>