tobento / css-modal
一个经典的模态框,你可以包含任何你想要的内容
1.0.0
2024-02-27 13:45 UTC
README
modals.css 提供了一个经典的模态框,你可以包含任何你想要的内容。此外,modals.js 提供了打开和关闭模态框的逻辑。
目录
入门
浏览器支持
仅支持现代浏览器。
导入文件
<link href="modals.css" rel="stylesheet" type="text/css"> <script src="modals.js" type="module"></script>
文档
你可以访问docs.tobento.ch/css-modal页面,查看带有演示的文档。
Css
基本用法
基本模态结构是
<div class="modal"> <div class="modal-background"></div> <div class="modal-content"> <div class="modal-head">Head</div> <div class="modal-body">Body</div> <div class="modal-foot">Foot</div> </div> </div>
最简模态结构是
<div class="modal"> <div class="modal-content"> <div class="modal-body">Body</div> </div> </div>
要激活模态框,只需在 .modal
容器上添加 .active
类。提供的 modal.js 文件实现了打开、关闭和动画模态框的逻辑。
<div class="modal active"> <div class="modal-content"> <div class="modal-body">Body</div> </div> </div>
尺寸
默认情况下,模态框宽度为全宽。你可以应用以下尺寸之一
modal-s
宽度为16rem
modal-m
宽度为32rem
modal-l
宽度为64rem
modal-full
宽度和高度均为全屏modal-tablet-full
在平板和手机上宽度和高度均为全屏modal-mobile-full
在手机上宽度和高度均为全屏
<div class="modal"> <div class="modal-content modal-m"> <div class="modal-body">Body</div> </div> </div>
你可以组合以下尺寸
<div class="modal"> <div class="modal-content modal-m modal-tablet-full"> <div class="modal-body">Body</div> </div> </div>
如果你使用的是basis.css - 尺寸,你也可以使用它。
位置
默认情况下,模态框水平和垂直居中。你可以组合水平和垂直类。
模态水平对齐
左对齐
右对齐
模态垂直对齐
顶部对齐
底部对齐
示例:底部右对齐
<div class="modal bottom right"> <div class="modal-content"> <div class="modal-body">Body</div> </div> </div>
示例:顶部居中对齐
<div class="modal top"> <div class="modal-content"> <div class="modal-body">Body</div> </div> </div>
动画
可用动画
modal-fade
modal-scale
modal-swing
示例
<div class="modal modal-fade"> <div class="modal-content"> <div class="modal-body">Body</div> </div> </div>
JavaScript
注册
注册模态框的 HTML 标记是
<!-- trigger button --> <span class="button" data-modal-trigger="foo">Open modal</span> <!-- related modal --> <div class="modal" data-modal='{"id": "foo"}'> <div class="modal-content"> <div class="modal-body">Body</div> </div> </div>
你可以将 modal-close
类添加到任何标签以关闭模态框
<div class="modal" data-modal='{"id": "foo"}'> <div class="modal-background"></div> <div class="modal-content"> <div class="modal-head"><span class="button modal-close">close</span></div> <div class="modal-body">Body</div> <div class="modal-foot"><span class="button modal-close">close</span></div> </div> </div>
选项
<div class="modal" data-modal='{"id": "foo", "scroll": "hidden", "closeTriggers": ".modal-close"}'> <div class="modal-content"> <div class="modal-body">Body</div> </div> </div>
方法
你可以导入 modals 模块并使用其方法
<script type="module"> import modals from "modals.js"; document.addEventListener('DOMContentLoaded', (e) => { // get a modal by id: const modal = modals.get('ID'); // open modal: modal.open(); // close modal: modal.close(); // you may check if a modal exists: if (modals.has('ID')) { modals.get('ID').open(); } }); </script>
事件
modals.get('ID').listen('open', (modal) => { modal.modalEl.querySelector('.modal-body').innerHTML = 'New Body'; });