私はjavascriptをまったく知りません。ブートストラップのドキュメントには、
javascriptを介してモーダルを呼び出します:$( '#myModal')。modal(options)
ページの読み込み時にこれを呼び出す方法はわかりません。ブートストラップページで提供されたコードを使用すると、要素のクリックでモーダルを正常に呼び出すことができますが、ページの読み込み時にすぐに読み込みます。
私はjavascriptをまったく知りません。ブートストラップのドキュメントには、
javascriptを介してモーダルを呼び出します:$( '#myModal')。modal(options)
ページの読み込み時にこれを呼び出す方法はわかりません。ブートストラップページで提供されたコードを使用すると、要素のクリックでモーダルを正常に呼び出すことができますが、ページの読み込み時にすぐに読み込みます。
回答:
ページの読み込み時に呼び出すモーダルをload
ドキュメントのヘッドセクションのjQuery イベント内にラップするだけで、次のようにポップアップします。
JS
<script type="text/javascript">
$(window).on('load',function(){
$('#myModal').modal('show');
});
</script>
HTML
<div class="modal hide fade" id="myModal">
<div class="modal-header">
<a class="close" data-dismiss="modal">×</a>
<h3>Modal header</h3>
</div>
<div class="modal-body">
<p>One fine body…</p>
</div>
<div class="modal-footer">
<a href="#" class="btn">Close</a>
<a href="#" class="btn btn-primary">Save changes</a>
</div>
</div>
次のようなリンクを使用して呼び出すことで、ページ内でモーダルを呼び出すことができます。
<a class="btn" data-toggle="modal" href="#myModal" >Launch Modal</a>
$(document).ready( ...
。ウィンドウロードイベントでのみ機能します$(window).load( ...
。
$(document).ready( ...
は、ユーザーが何かをクリックしたときに動的に追加されるモーダルのMVC PartialViewにこのスクリプトを保存する場合にのみ機能するため、おそらくそれが理由です。皮肉なことに、何をすべきでないかというあなたの警告により、私はそれを私のために機能させる方法を理解することができました。ほんとありがと?:)
javascript
モーダルを表示する必要はありません
最も簡単な方法は、 "hide"を "in"に置き換えることです。
class="modal fade hide"
そう
class="modal fade in"
onclick = "$('.modal').hide()"
ボタンを閉じる必要があります。
PS:私は最良の方法はjQueryスクリプトを追加することだと思います:
$('.modal').modal('show');
以下を追加するだけです
class="modal show"
実施例-
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<div class="container">
<!-- Trigger the modal with a button -->
<button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal">Open Modal</button>
<!-- Modal -->
<div class="modal show" id="myModal" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Modal Header</h4>
</div>
<div class="modal-body">
<p>Some text in the modal.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
</div>
onclick = "$('.modal').removeClass('show').addClass('fade');"
あなたはこの実行可能なコードを試すことができます
$(window).load(function()
{
$('#myModal').modal('show');
});
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<div class="container">
<!-- Trigger the modal with a button -->
<button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal">Open Modal</button>
<!-- Modal -->
<div class="modal fade" id="myModal" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Modal Header</h4>
</div>
<div class="modal-body">
<p>Some text in the modal.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
</div>
詳細については、こちらをご覧ください。
あなたの完全な答えがあると思います。
私の場合、モーダルを表示するためにjQueryを追加しても機能しませんでした。
$(document).ready(function() {
$('#myModal').modal('show');
});
これは、モーダルにaria-hidden = "true"属性があったためと思われます。
<div class="modal fade" aria-hidden="true" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
上記のjQueryと同様に、その属性を削除する必要がありました。
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
モーダルクラスをからmodal fade
に変更しようmodal fade in
としましたが、機能しませんでした。また、クラスをからmodal fade
に変更するとmodal show
、モーダルを閉じることができなくなりました。
javascriptを使用してモーダルを初期化しないと例を見つけることができなかったため、ページの読み込み時にjavascriptの遅延$('#myModal').modal('show')
なしにそれを実装する方法を提案します。
<div class="modal in" id="MyModal" tabindex="-1" role="dialog" style="display: block; padding-right: 17px;">
クラスとスタイルで体を編集します。
<body class="modal-open" style="padding-right:17px;">
モーダル背景divを追加
<div class="modal-backdrop in"></div>
スクリプトを追加
$(document).ready(function() {
$('body').css('padding-right', '0px');
$('body').removeClass('modal-open');
$('.modal-backdrop').remove();
$('#MyModal').modal('show'); });
何が起こるかは、あなたのモーダルのHTMLがJavaScriptなしでページの読み込み時に読み込まれることです(遅延なし)。この時点ではモーダルを閉じることができないため、すべてが読み込まれたときにモーダルを適切に読み込むためのdocument.readyスクリプトがあります。実際にカスタムコードを削除してから、モーダルを(再度).modal( 'show')で初期化します。
他の人が述べたように、display:blockでモーダルを作成します
<div class="modal in" tabindex="-1" role="dialog" style="display:block">
...
背景をページのどこかに配置します。必ずしもページの下部にある必要はありません。
<div class="modal-backdrop fade show"></div>
次に、ダイアログを再び閉じることができるように、これを追加します
<script>
$("button[data-dismiss=modal]").click(function () {
$(".modal.in").removeClass("in").addClass("fade").hide();
$(".modal-backdrop").remove();
});
</script>
お役に立てれば
Bootstrap 3とjQuery(2.2および2.3)でテスト済み
$(window).on('load',function(){
$('#myModal').modal('show');
});
<!-- Modal -->
<div class="modal fade" id="myModal" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title"><i class="fa fa-exclamation-circle"></i> //Your modal Title</h4>
</div>
<div class="modal-body">
//Your modal Content
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Fechar</button>
</div>
</div>
</div>
</div>
user2545728とReftの回答に加えて、javascriptなしで、modal-backdrop in
追加する3つのこと
modal-backdrop in
.modalクラスの前のクラスを持つdivstyle="display:block;"
.modalクラスにfade in
.modalクラスとともに例
<div class="modal-backdrop in"></div>
<div class="modal fade in" tabindex="-1" role="dialog" aria-labelledby="channelModal" style="display:block;">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="channelModal">Welcome!</h4>
</div>
<div class="modal-body" style="height:350px;">
How did you find us?
</div>
</div>
</div>
</div>
アップデート2020-ブートストラップ4
Bootstrap 4では、モーダルマークアップがわずかに変更されています。ここでは、ページの読み込み時にモーダルを開き、オプションでモーダルの表示を遅らせる方法を示します。
$(window).on('load',function(){
var delayMs = 1500; // delay in milliseconds
setTimeout(function(){
$('#myModal').modal('show');
}, delayMs);
});
<div class="modal fade" id="myModal">
<div class="modal-dialog modal-lg modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">My Modal</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
...
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary mx-auto" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
ブートストラップ3では、jsを介してモーダルを初期化するだけでよく、ページが読み込まれた瞬間にモーダルマークアップがページにあると、モーダルが表示されます。
これを防ぎたい場合はshow: false
、モーダルを初期化するオプションを使用してください。このようなもの:
$('.modal').modal({ show: false })
jquery.js
ページの読み込みを高速化するために、延期しておくことをお勧めします。ただし、jquery.js
延期された$(window).load
場合は機能しない可能性があります。その後、あなたは試すことができます
setTimeout(function(){$('#myModal').modal('show');},3000);
ページが完全に読み込まれた後にモーダルをポップアップします(jqueryを含む)
ブートストラップが無効になり、機能が失われるのを防ぐには、通常の起動ボタンを作成し、IDを指定して、jqueryを使用して「クリック」するだけです。起動ボタン:
<button type="button" id="btnAnouncement" class="btn btn-primary" data-toggle="modal" data-target="#modalAnouncement">
See what´s new!
</button>
jQueryトリガー:
$(document).ready(function () {
$('#btnAnouncement').click();
)}
それが役に立てば幸い。乾杯!
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bootstrap Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script>
$(document).ready(function(){
$('#myModal').modal('show');
setTimeout(function(){
$('#myModal').modal('hide');
}, 5000);
});
</script>
<style>
.loader {
border: 13px solid #f3f3f3;
border-radius: 50%;
border-top: 16px solid #3498db;
width: 100px;
height: 100px;
-webkit-animation: spin 2s linear infinite; /* Safari */
animation: spin 2s linear infinite;
}
/* Safari */
@-webkit-keyframes spin {
0% { -webkit-transform: rotate(0deg); }
100% { -webkit-transform: rotate(360deg); }
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
.modal-dialog{
width: 150px;
margin: 10% auto;
}
.modal-content{
background-color: transparent;
border: 0;
border-radius: 0;
outline: 0;
box-shadow: none;
}
</style>
</head>
<body>
<div class="container">
<!-- Modal -->
<div class="modal fade" data-backdrop="static" id="myModal" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-body">
<div class="loader"></div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>