你的浏览器不支持canvas

Enjoy life!

模态弹框

Date: Author: JM

本文章采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。

一、模态弹框

1.1 效果图

modal

1.2 html结构

<!-- 触发模态弹框的按钮 -->
<!-- 必须有data-target属性,而且其值必须是 # + 模态弹框的id值 -->
<button type="button" id="btn" data-target="#modal">模态框</button>
<!-- 触发模态弹框的按钮 结束-->

<!-- 模态弹框 -->
<div class="modal hide" id="modal" data-dismiss="true" >
    <div class="modal-inner">
        <!-- 模态弹框头部 -->
        <header class="modal-header">
            <h2 class="header-title">修改课程</h2>
            <!-- 点击设置了data-dismiss属性的元素,能使模态弹框隐藏 -->
            <span class="del" data-dismiss="true">x</span>
        </header>
        <!-- 模态弹框头部 结束-->
        <!-- 模态弹框内容区 -->
        <div class="modal-content">
            <div class="content-inner">
                <p>你好呀!!</p>
            </div>
        </div>
        <!-- 模态弹框内容区 结束-->
        <!-- 模态弹框尾部 -->
        <footer class="modal-footer">
            <button type="button" class="btn">确定</button>
            <button type="button" class="btn">取消</button>
        </footer>
        <!-- 模态弹框尾部 结束-->
    </div>
</div>

1.3 接口说明

<script>
/**
 * @desc 模态弹框对位接口
 * @param opts 配置对象
 * @example {
 * modal: document.getElementById('modal')
 * target: document.getElementById('btn')
 * draggable: true
 * }
 * 选项说明
 * modal: 必选,指模态弹框
 * target: 必选,触发模态弹框显示的元素,此元素必须有data-target属性,并且其属性值为 # + 对应的模态弹框的id值,例:data-target="#modal"
 * draggable: 可选,是否能拖拽模态弹框,默认为false
 * 补充:
 * 如果点击某个按钮,想让模态弹框消失,可以为此元素添加 data-dismiss="true"
 */

// 调用
modal({
  modal: document.getElementById('modal'),
  target: document.getElementById('btn'),
  draggable: true
})
</script>

1.4 demo

1.5 总结

  • 之前一直都是用onmousedown等去实现拖拽,这次尝试了 HTML5 的原生拖拽事件来实现拖拽,发现比用 onmousedown 等事件去实现要简单得多。
  • 这个模态弹框是因为课程作业中需要用到,才去实现的,但在过程中,发现自己不会用 HTML5 去实现拖拽,所以才有了以下想法:
    • 在做一个插件的时候,遇到不懂的问题,就将其抽出来,做成一个 demo
    • 如果在解决问题的过程中,仍然遇到其他问题,可以分版本去写 demo,并且在解决 demo 的过程中,将问题和解决的方法记录下来,方便自己写博客

对于本文内容有问题或建议的小伙伴,欢迎在文章底部留言交流讨论。