Modals in Kickstart are unique in that their backdrop and containers are one HTML element. This makes working with modals in JavaScript incredibly straightforward.
Modal
×Hi, I'm a modal.
Modals in Kickstart are unique in that their backdrop and containers are one HTML element. This makes working with modals in JavaScript incredibly straightforward.
Hi, I'm a modal.
Turn any element into a modal using k$.modal()
// Instantiate and assign your modal in one line.
var $signup = k$.modal(".signup");
<div class="modal signup">
...
</div>
// Show modal
$signup.style.display = 'block'
// Hide modal
$signup.style.display = 'none'
<div class="signup">
...
</div>
.signup {
@include modal();
}
// Show modal
$($signup).show();
// Hide modal
$($signup).hide();
Stopping propagation on any click you don't wish to close the modal is required.
Notice the e
(event) in the function params as well as
e.stopPropagation()
. This is to prevent "event bubbling," which would cause
JavaScript to think you are both clicking on the modal and clicking outside
of it (which would close the modal.)
$('button').click(function(e) {
$($modal).show();
e.stopPropagation();
});
$button = document.querySelector('#myButton');
$button.addEventListener('click', function(e) {
$modal.style.display = 'block';
e.stopPropagation();
})
For default modal styling (not required to function), just include modal()
use the .modal
class.
<div class="myModal">
<h1>Hello</h1>
</div>
.myModal {
@include modal();
}
<div class="modal">
<h1>Hello</h1>
</div>
By default, the modal doesn't come with much styling. This is to allow for more creativity in styling the contents.
However, by structuring the direct children as HTML5 header
, main
, and footer
,
the modal will take on some clean styling for showing as a window.
Please make a selection:
<aside class="modal">
<header>
<h1>How would you like to pay?</h1>
<a data-modal-close="true" href="#">×</a>
</header>
<main>
<p>Please make a selection</p>
<ul>
<li>
<a href="#">Visa</a>
</li>
<li>
<a href="#">Mastercard</a>
</li>
<li>
<a href="#">American Express</a>
</li>
</ul>
</main>
<footer>
<ul>
<li>
<a class="button" role="button" href="#">Cancel</a>
</li>
<li>
<a class="button button-primary" role="button" href="#">Next »</a>
</li>
</ul>
</footer>
</aside>
.modal {
@include modal();
}