私はついにこのCSSを使用することになりました。警告バーはヘッダーの上を直接スライドします。
//you only really need this just to get it to slide over the header nicely and make sure you use top:0 if you always want it to be at the top. The plugin I made shows in/out the error message at position you are scrolled to in the document
.alert{
position: absolute;
z-index: 9998;
width: 100%;
height: 30px;
display: none;
color: #ffffff;
text-shadow: none;
font-family: Helvetica,Arial,sans-serif;
}
//This CSS is only used if you have an X button to close the alert. See the plugin below.
.alert-button-container{
display:inline-block;
margin-top:-10px;
margin-right: 15px;
float: right;
}
これが私のHTMLコードです(ui-barクラスはjQueryモバイルクラスであり、追加する必要があるため、幅やサイズの変更を行う必要はありません)。
<div class="ui-bar alert">
<div class="alert-message"></div>
</div>
これは、このアラートバーを実行するためにjQueryから作成したカスタムプラグインです。
機能とユースケース
機能:フェードイン/フェードアウト、カスタムHTMLエラーメッセージの挿入、メッセージのリストのレンダリング、ヘッダー上でのスライド、エラーメッセージ用の閉じるXボタン、これまでにテストしたすべてのブラウザー(IE、iOS、 Firefox)、ドキュメント内でスクロールした位置にエラーメッセージが表示されます。エラーを確認するために上にスクロールする必要はもうありません:)
フォーム検証エラー。エラーメッセージの配列を渡すことができ、それがリストに解析されます。
var messages = new Array();
messages[0] = 'My Message';
//prevent from showing accidentally
if(messages.length > 0)
{
$(".alert").alertBar('error', "<h2>Form Validation Errors</h2>", {
'errorMessages': messages
});
}
成功またはアクションメッセージ:
$(".alert").alertBar('success', 'Removed From Your Itinerary');
////////////プラグインコード
(
function($) {
$.fn.alertBar = function(alertType, alertMessage, userOptions) { //Add the function
var options = $.extend({}, $.fn.alertBar.defaultOptions, userOptions);
var $this = $(this);
$this.addClass(options.cssClass)
.empty()
.html(alertMessage)
.css('top', $(document).scrollTop());
if(alertType == 'success')
{
$this
.fadeIn()
.addClass('alert-success')
.delay(options.animationDelay)
.fadeOut();
}
if(alertType == 'error')
{
var button = $('<div>')
.addClass('alert-button-container')
.append(
$('<a>').attr({
'href': '#',
'data-role': 'button',
'data-icon': 'delete',
'data-iconpos': 'notext',
'class': 'dismiss-error'
})
.append('Dismiss')
);
//build error container
$this
.addClass('alert-error')
.append(button);
//add optional items to error container
if(options.errorMessages)
{
var $messageList = $('<ul>').addClass('error-message-list');
for ( var i=0, len=options.errorMessages.length; i<len; ++i ){
$messageList.append(
$('<li>')
.append(options.errorMessages[i])
);
}
$this.append($messageList);
}
//show alert bar
$this
.trigger('create')
.fadeIn();
$(".dismiss-error").live('click', function(){
$this.fadeOut();
});
}
if(alertType == 'informational')
{
$this
.addClass('alert-informational')
.fadeIn()
.delay(options.animationDelay)
.fadeOut();
}
return $this;
};
$.fn.alertBar.defaultOptions = {
cssClass : 'alert',
alertBarType: '',
animationDelay: 1500
};
})(jQuery);
これを使用する場合は、追加のCSSクラス。バーの色を変えるだけです。
.alert-success{
background-color: #8cc63f;
}
.alert-error{
background-color: #ed1c24;
height: auto;
}
.alert-informational{
background-color: #0071bc;
}
写真の例: