Modals are used primarily for authentication forms and content creation utilities.
data-modal
attribute to a trigger element and create a hidden modal container on the page.
.modal__container.mfp-hide
and must also contain the ID to be referenced by the trigger.
.modal__container.mfp-hide#modal_id
.modal__header
%h3.modal__title A title
.modal__body
%p Some content here
.modal__footer
%p Some footer stuff
Any sort of content may be placed within a modal, but for consistency, you should organize your content into the following sections:
.modal__header
,
.modal__title
,
.modal__body
, and
.modal__footer
You can set the target modal's ID as the
data-modal
value on the trigger.
= btn 'span', 'Data Trigger', :'data-modal' => "#modal_demo"
If the trigger is a link, you can set the target modal's ID as the
href
value of the trigger.
%a.btn--primary{href: "#modal_demo", :'data-modal' => true} HREF Trigger
data-modal
attribute cannot have any value in this case. Since our
btn
helper isn't set up for valueless attributes, we must fall back to the Haml link format.
The default modal width is 580px, but we also have slim, wide, and extra wide variations.
.modal__container.mfp-hide.modal--slim
.modal__container.mfp-hide.modal--wide
.modal__container.mfp-hide.modal--xwide
By default, modals have no max-height, and therefore can cause the whole page to scroll if content is long. Thus, we also have a scrollable version of the modal.
.modal__container.mfp-hide.modal--scrollable
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Totam architecto eaque amet iusto facere. Ut, itaque, sed ipsum facere alias praesentium eum distinctio temporibus quibusdam beatae porro sequi saepe. Plac.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Totam architecto eaque amet iusto facere. Ut, itaque, sed ipsum facere alias praesentium eum distinctio temporibus quibusdam beatae porro sequi saepe. Plac.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Totam architecto eaque amet iusto facere. Ut, itaque, sed ipsum facere alias praesentium eum distinctio temporibus quibusdam beatae porro sequi saepe. Plac.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Totam architecto eaque amet iusto facere. Ut, itaque, sed ipsum facere alias praesentium eum distinctio temporibus quibusdam beatae porro sequi saepe. Plac.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Totam architecto eaque amet iusto facere. Ut, itaque, sed ipsum facere alias praesentium eum distinctio temporibus quibusdam beatae porro sequi saepe. Plac.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Totam architecto eaque amet iusto facere. Ut, itaque, sed ipsum facere alias praesentium eum distinctio temporibus quibusdam beatae porro sequi saepe. Plac.
Scroll this content area...
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Totam architecto eaque amet iusto facere. Ut, itaque, sed ipsum facere alias praesentium eum distinctio temporibus quibusdam beatae porro sequi saepe. Plac.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Totam architecto eaque amet iusto facere. Ut, itaque, sed ipsum facere alias praesentium eum distinctio temporibus quibusdam beatae porro sequi saepe. Plac.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Totam architecto eaque amet iusto facere. Ut, itaque, sed ipsum facere alias praesentium eum distinctio temporibus quibusdam beatae porro sequi saepe. Plac.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Totam architecto eaque amet iusto facere. Ut, itaque, sed ipsum facere alias praesentium eum distinctio temporibus quibusdam beatae porro sequi saepe. Plac.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Totam architecto eaque amet iusto facere. Ut, itaque, sed ipsum facere alias praesentium eum distinctio temporibus quibusdam beatae porro sequi saepe. Plac.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Totam architecto eaque amet iusto facere. Ut, itaque, sed ipsum facere alias praesentium eum distinctio temporibus quibusdam beatae porro sequi saepe. Plac.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Totam architecto eaque amet iusto facere. Ut, itaque, sed ipsum facere alias praesentium eum distinctio temporibus quibusdam beatae porro sequi saepe. Plac.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Totam architecto eaque amet iusto facere. Ut, itaque, sed ipsum facere alias praesentium eum distinctio temporibus quibusdam beatae porro sequi saepe. Plac.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Totam architecto eaque amet iusto facere. Ut, itaque, sed ipsum facere alias praesentium eum distinctio temporibus quibusdam beatae porro sequi saepe. Plac.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Totam architecto eaque amet iusto facere. Ut, itaque, sed ipsum facere alias praesentium eum distinctio temporibus quibusdam beatae porro sequi saepe. Plac.
Tabs are used both as a form of purely visual navigation, as well as interactive toggleable tabs.
data-tab
attribute to each trigger element and create a
.tab__group
container around both the tab navigation and the tab content containers.
Each tab container element must be classed with
.tab__content
and must also contain the ID to be referenced by the trigger.
Additionally, you will need to apply an
.active
class to the trigger and tab that should initially display on page load.
For consistency, you should use a
.tab__header
container with a horizontal, block list for the tab navigation, with a
.tab__divider
separator below.
.tab__group
.tab__header
%nav
%ul.list--horz.list--blockAll
%li= link_to "Trigger 1", "#tab1", :'data-tab' => '', class: 'active'
%li= link_to "Trigger 2", "#tab2", :'data-tab' => ''
%hr.tab__divider
.tab__content.active#tab1
%p Content 1
.tab__content#tab2
%p Content 2
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
Dicta, explicabo, eaque, ea dolor deserunt vero consectetur.
You can set the target tab's ID as the
data-tab
value on the trigger.
%span{:'data-tab' => '#data_tab'} Data Trigger
If the trigger is a link, you can set the target tab's ID as the
href
value of the trigger.
= link_to "HREF Trigger", "#href_tab", :'data-tab' => ''
data-tab
attribute cannot have any value in this case.
Content toggles are used to show / hide supplementary, space-consuming content.
data-toggle
attribute to the trigger element containing the "name" of the element(s) to toggle.
data-toggle-content
attribute containing the "name" you specified in the trigger attribute to the elements that should toggle.
%div
Some content.
= link_to "Toggle Trigger", "#", :'data-toggle' => 'content_name'
%span.hide{:'data-toggle-content' => 'content_name'} More content.
Some content. Toggle Trigger More content.
data-toggle-hide
attribute to the trigger element.
%div
Some content.
= link_to "Toggle Trigger", "#", :'data-toggle' => 'toggle_once', :'data-toggle-hide' => true
%span.hide{:'data-toggle-content' => 'toggle_once'} More content.
Some content. Toggle Trigger More content.