Popup 弹窗

简介

与dialog不同的是,popup插件讲究轻便、简单、有效,对于短小内容提示使用popup是非常适合的。本插件基于自身的定位引擎,可自适应于多种页面形态:

  • 1、定位可视上下间距自动上下翻转
  • 2、定位可视左右间距自动左右翻转
  • 3、定位可随着浏览器变化而自动在左中右或上中下三挡调节
  • 4、定位可随着页面滚动和自动调节位置
  • 5、定位按钮可手动设置转移

使用方法

插件运行方式有两种:

  • ax*属性:对按钮使用axPopup属性,配合使用content参数即可按默认参数运行插件。
  • js实例:通过new axPopup('#ID',{content:''})方式创建实例运行。
                                <a href="###" class="ax-btn ax-primary" axPopup="content:'伟大的中国'">点击打开小窗</a>
                                <a href="###" class="ax-btn ax-primary" id="btnDft">JS打开小窗</a>
                            

显示方式

通过trigger参数设置窗口的显示方式:

  • hover:鼠标经过按钮显示,离开按钮关闭,默认。
  • click:鼠标点击按钮显示,再次点击关闭。
  • input:在input中输入的时候显示。
  • sticky:初始化就显示,再次关闭或打开需要手写js代码。
  • none:初始化定位在按钮上,并不显示。
                                <a href="###" class="ax-btn ax-primary" axPopup="content:'伟大的中国',trigger:'hover'">经过打开小窗</a>
                                <a href="###" class="ax-btn ax-primary" axPopup="content:'伟大的中国',trigger:'click'">点击打开小窗</a>
                                <a href="###" class="ax-btn ax-primary" axPopup="content:'伟大的中国',trigger:'sticky'">初始化就打开了</a>
                                <a href="###" class="ax-btn ax-primary" axPopup="content:'伟大的中国',trigger:'none'">使用节点选择工具查看</a>
                            

窗口方向

通过设定placement参数,使窗口放置在按钮周围各个角度,可选用的值有如下:

  • top(按钮正上方),top-start(按钮正上方左侧),top-end(按钮正上方右侧)
  • bottom(按钮正下方),bottom-start(按钮正下方左侧),bottom-end(按钮正下方右侧)
  • left(按钮左侧居中),left-start(按钮左侧左上方向),left-end(按钮左侧左下方向)
  • right(按钮右侧居中),right-start(按钮右侧右上方向),right-end(按钮右侧右下方向)
  • center(绝对居中弹出),在移动端popup窗口均已center方式弹出

弹出和关闭动画

用户根据需要使用inout参数设定打开和关闭动画样式。动画的时间默认是100ms,用户可使用duration参数设置合适的时间,单位ms。

  • in,打开动画,可选:fadeIn(默认),fadeInUp,slideDown,fadeInDown,fadeInLeft,fadeInRight,springIn,scaleIn
  • out,关闭动画,可选:fadeOut(默认),fadeOutUp,slideUp,fadeOutDown,fadeOutLeft,fadeOutRight,springOut,scaleOut
这几个常用动画已经能满足大多数场景,用户可自行引入第三方动画库以实现更多的动画效果。
                                <div style="display: none;" id="china">中国,是以华夏文明为源泉、中华文化为基础,并以汉族为主体民族的多民族国家,通用汉语、汉字,汉族与少数民族被统称为“中华民族”,又自称为炎黄子孙、龙的传人。</div>
                                <a href="###" class="ax-btn ax-primary" axPopup="content:'#china',in:'fadeIn',out:'fadeOut'">渐显渐隐(默认)</a>
                                <a href="###" class="ax-btn ax-primary" axPopup="content:'#china',in:'fadeInUp',out:'fadeOutDown',duration:300">向上渐显向下渐隐</a>
                                <a href="###" class="ax-btn ax-primary" axPopup="content:'#china',in:'fadeInDown',out:'fadeOutUp',duration:300">向下渐显向上渐隐</a>
                                <a href="###" class="ax-btn ax-primary" axPopup="content:'#china',in:'slideDown',out:'slideUp',duration:300">逐步显示逐步隐藏</a>
                                <div class="ax-break"></div>
                                <a href="###" class="ax-btn ax-primary" axPopup="content:'#china',in:'fadeInLeft',out:'fadeOutRight',duration:300">向左渐显向右渐隐</a>
                                <a href="###" class="ax-btn ax-primary" axPopup="content:'#china',in:'fadeInRight',out:'fadeOutLeft',duration:300">向右渐显向左渐隐</a>
                                <a href="###" class="ax-btn ax-primary" axPopup="content:'#china',in:'scaleIn',out:'scaleOut',duration:300">放大打开缩小关闭</a>
                                <a href="###" class="ax-btn ax-primary" axPopup="content:'#china',in:'springIn',out:'springOut',duration:300">弹出弹回</a>
                            

分步操作

插件默认对同一个按钮进行显示隐藏操作,借助instance.show()instance.hide()的方法,对于某些场景可通过多个按钮分步操作。比如第一个按钮用于小窗定位,第二个按钮点击显示,第三个按钮点击隐藏。

注意:因为默认点击窗口之外是可以关闭窗口的,那么为了保证分步操作,需要给实例使用pageClose:false属性,也就是禁止点击窗口外关闭窗口。

  •                                             <a href="###" class="ax-btn ax-primary" id="btnPos">定位窗口</a>
                                                <a href="###" class="ax-btn ax-primary" id="clickShow">显示窗口</a>
                                                <a href="###" class="ax-btn ax-primary" id="clickHide">隐藏窗口</a>
                                            
  •                                             let stepInstance = new axPopup('#btnPos',{content:'伟大的中国',pageClose:false, });
                                                let clickShow = document.querySelector('#clickShow');
                                                let clickHide = document.querySelector('#clickHide');
                                                clickShow.onclick = function(){
                                                stepInstance.show();
                                                }
                                                clickHide.onclick = function(){
                                                stepInstance.hide();
                                                }
                                            

窗口叠窗口

本插件可自动检测窗口中是否包含子窗口,子窗口弹出后将在父窗口的z-index值基础上自动+1,以确保永远浮在最前面。支持无限叠加。注意需要给实例multiple属性添加为true。

多层窗口
                                <a href="###" class="ax-btn ax-primary" axPopup="content:'#pop01',multiple:true">多层窗口</a>
                                <div style="display: none;" id="pop01">
                                <p>通用汉语、汉字,汉族与少数民族被统称为“中华民族”,又自称为炎黄子孙、龙的传人。</p>
                                <p align="center"><a href="###" axPopup="content:'#pop02',multiple:true">打开</a></p>
                                </div>
                                <div style="display: none;" id="pop02">
                                <p>中国,是以华夏文明为源泉、中华文化为基础,并以汉族为主体民族的多民族国家。</p>
                                <p align="center"><a href="###" axPopup="content:'伟大的中国',multiple:true">打开</a></p>
                                </div>
                            

触发事件

默认对按钮click点击打开和关闭窗口,可选择使用hover打开和关闭窗口,对应的参数是trigger。因为使用了内置的axHover方法,当使用hover方式打开窗口时,迅速移动鼠标到窗口中,可保持窗口显示状态。

                                <a href="###" class="ax-btn ax-primary" axPopup="content:'伟大的中国'">点击打开</a>
                                <a href="###" class="ax-btn ax-primary" axPopup="content:'伟大的中国',trigger:'hover'">移入打开</a>
                            

窗口外关闭

pageClose参数是指是否允许在窗口外点击页面关闭窗口,默认是允许,即true;可设置为禁止false。

                                <a href="###" class="ax-btn ax-primary" axPopup="content:'伟大的中国'">允许</a>
                                <a href="###" class="ax-btn ax-primary" axPopup="content:'伟大的中国',pageClose:false">不允许</a>
                            

触发只显示

气泡对按钮触发结果默认是toggle方法,即可切换触发显示和隐藏,如果有特别需要可通过triggerShowOnly参数设为true只让按钮触发显示而不触发隐藏。

如果pageClose设为true,那么点击按钮和窗口其他区域还是可关闭的气泡的;另外点击气泡中的按钮也可关闭气泡。

                                <a href="###" class="ax-btn ax-primary" axPopup="content:'伟大的中国',triggerShowOnly:true">点击打开,再点击不关闭</a>
                                <a href="###" class="ax-btn ax-primary" axPopup="content:'伟大的中国',triggerShowOnly:true,trigger:'hover'">移入打开,移开不关闭</a>
                            

B按钮打开A的窗口

通过设置rel参数可让其他按钮点击打开某按钮绑定的popup窗口,rel可以是id或对节点对象。

参数rel也可以是个数组。注意:如果将id数组写入rel属性中,id前后需要英文双引号。

                                <a href="###" class="ax-btn ax-primary" axPopup="content:'伟大的中国',rel:'#btnA'">窗口按钮</a>
                                <a href="###" class="ax-btn ax-primary" id="btnA">按钮A</a>
                                <a href="###" class="ax-btn ax-primary" axPopup="content:'伟大的中国',rel:['#btnB','#btnC']">窗口按钮</a>
                                <a href="###" class="ax-btn ax-primary" id="btnB">按钮B</a>
                                <a href="###" class="ax-btn ax-primary" id="btnC">按钮C</a>
                            

关闭按钮位置

气泡关闭按钮默认在左上角以内,如果内容占满了整个气泡可通过设置closePlace参数为outside将关闭按钮移除到气泡以外。

                                <a href="###" class="ax-btn ax-primary" axPopup="content:'伟大的中国',closePlace:'outside'">窗口按钮</a>
                            

异步内容

异步内容是指窗口内容通过ajax形式从同域的其他页面获取的内容,使用异步内容的方式有三种:
  • 1.使用type:'async'和url:''属性。填入页面地址即可获取该页面的html内容,比如:url:"ajax/about.html"表示从about.html页面中获取所有html内容。
  • 2.使用type:'async'和url:''属性。使用格式url#id,比如:url:"ajax/about.html#china"表示从about.html页面中id=china的标签中读取内容。
  • 3.使用js参数。必填type,url和content参数,其中content可用回调函数重新组织内容。回调函数有一个参数“data”,是异步内容。
  •                                             <a href="###" class="ax-btn ax-primary" axPopup='type:"async",url:"ajax/article.html"'>简单异步内容</a>
                                                <a href="###" class="ax-btn ax-primary" axPopup='type:"async",url:"ajax/article.html#post02"'>从ID获取异步内容</a>
                                                <a href="###" class="ax-btn ax-primary" id="ajax">JS异步获取JSON</a>
                                            
  •                                             new axPopup('#ajax',{
                                                type:'async',
                                                url:'ajax/axui.json',
                                                content:function(data){
                                                let html = '
      '; for(let k in data){html+='
    • '+k+':'+data[k]+'
    • ';} html+='
    '; return html; } });

自定义关闭按钮

在窗口内容中给元素添加close属性即可作为关闭本窗口的按钮。

                                <a href="###" class="ax-btn ax-primary" axPopup='content:"#close"'>自定义关闭</a>
                                <div id="close" style="display: none;">中华人民共和国中央人民政府,今天成立啦!<br /><a href="###" close class="ax-btn ax-primary">关闭</a></div>
                            

同时多个窗口

multiple参数是表示页面是否允许显示多个窗口,默认为false即显示一个;可设置为true,让页面能同时显示多个窗口。

                                <a href="###" class="ax-btn ax-primary" axPopup='content:"伟大的中国",multiple:false'>不允许</a>
                                <a href="###" class="ax-btn ax-primary" axPopup='content:"伟大的中国",multiple:true'>允许</a>
                                <a href="###" class="ax-btn ax-primary" axPopup='content:"伟大的中国",multiple:true'>也允许</a>
                            

iframe远程页面

使用type:"iframe"属性和url参数表示使用iframe,默认高度为400px。由于iframe特性,需要设置size属性为较大尺寸,比如xl或xxl;同时可按需设置height和width参数,由于内容高度超过760px会自动滚动,所以height的极限高度为760px。

                                <a href="###" class="ax-btn ax-primary" axPopup='type:"iframe",url:"http://www.axui.cn",size:"xxl",title:"打开iframe页面"'>iframe页面</a>
                            

超出滚动

css中设定内容区域的宽度随size属性,极限是760px(76rem),高度超出760px将自动滚动。用户通过使用widthheight参数,可使更多内容情况下滚动显示。

如果需要禁止滚动窗口的滚动条,可设置preventScroll参数为true。

超出滚动
                                <a href="###" class="ax-btn ax-primary" axPopup='content:"#scroll",preventScroll:true'>超出滚动</a>
                                <div style="display: none;" id="scroll">
                                    <article>
                                        <h1>第一部分</h1>
                                        <p>中国,是以华夏文明为源泉、中华文化为基础,并以汉族为主体民族的多民族国家,通用汉语、汉字,汉族与少数民族被统称为“中华民族”,又自称为炎黄子孙、龙的传人。</p>
                                        <p>中国是世界四大文明古国之一,有着悠久的历史,距今约5000年前,以中原地区为中心开始出现聚落组织进而形成国家,后历经多次民族交融和朝代更迭,直至形成多民族国家的大一统局面。20世纪初辛亥革命后,君主政体退出历史舞台,共和政体建立。1949年中华人民共和国成立后,在中国大陆建立了人民代表大会制度的政体。
                                        </p>
                                        <p>中国疆域辽阔、民族众多,先秦时期的华夏族在中原地区繁衍生息,到了汉代通过文化交融使汉族正式成型,奠定了中国主体民族的基础。后又通过与周边民族的交融,逐步形成统一多民族国家的局面,而人口也不断攀升,宋代中国人口突破一亿,清朝时期人口突破四亿,到2005年中国人口已突破十三亿。
                                        </p>
                                    </article>
                                    <article>
                                        <h1>第二部分</h1>
                                        <p>中国文化渊远流长、博大精深、绚烂多彩,是东亚文化圈的文化宗主国,在世界文化体系内占有重要地位,由于各地的地理位置、自然条件的差异,人文、经济方面也各有特点。传统文化艺术形式有诗词、戏曲、书法、国画等,而春节、元宵、清明、端午、中秋、重阳等则是中国重要的传统节日。
                                        </p>
                                        <p>中国一词最早见于西周初年的青铜器“何尊”铭文中的“余其宅兹中国,自之辟民”,同时又以“华夏”、“中华”、“中夏”、“中原”、“诸夏”、“诸华”、“神州”、“九州”、“海内”等的代称出现。</p>
                                        <p>“华夏”一词最早见于周朝《尚书·周书·武成》,“华夏蛮貊,罔不率俾”。
                                            《书经》曰:“冕服采装曰华,大国曰夏”。《尚书正义》注:“冕服华章曰华,大国曰夏”。“华”,是指华丽、兴旺;也有说上古华、夏同音,本一字。《左传》曰:“中国有礼仪之大,故称夏;有服章之美,谓之华。”
                                            华是指汉服,夏指行周礼的大国,故中国有礼仪之邦、衣冠上国之美誉。</p>
                                    </article>
                                </div>
                            

尺寸

小窗默认宽度是400rem(等同于400px),可通过size参数设置不同宽度的小窗。

  • sm:小型窗口,宽度200rem(200px)
  • md:中型窗口,宽度360rem(360px),默认尺寸
  • lg:大型窗口,宽度600rem(600px)
  • xl:大型窗口,宽度800rem(800px)
  • xxl:大型窗口,宽度1000rem(1000px)
                                <a href="###" class="ax-btn ax-primary" axPopup='size:"sm",content:"#china"'>小型尺寸</a>
                                <a href="###" class="ax-btn ax-primary" axPopup='size:"md",content:"#china"'>中型尺寸(默认)</a>
                                <a href="###" class="ax-btn ax-primary" axPopup='size:"lg",content:"#china"'>大型尺寸</a>
                                <div style="display: none;" id="china">中国,是以华夏文明为源泉、中华文化为基础,并以汉族为主体民族的多民族国家,通用汉语、汉字,汉族与少数民族被统称为“中华民族”,又自称为炎黄子孙、龙的传人。</div>
                            

任意组合内容

可对content参数使用函数形式,content函数中的this指向实例本身,巧妙使用this.*可任意组合内容。

  • this:指实例本身
  • this.options:指实例参数,比如this.options.title指窗口标题
  • this.button:指按钮Dom
  • this.wrapper:指窗口Dom
  • this.content:指窗口内容Dom
  •                                             <a href="###" class="ax-btn ax-primary" id="btnSame01" name="唐太宗牛!">我要评论</a>
                                                <a href="###" class="ax-btn ax-primary" id="btnSame02" name="宋高宗厉害!">继续评论</a>
                                                <a href="###" class="ax-btn ax-primary" id="btnSame03" name="明成祖霸气外露!">追加评论</a>
                                            
  •                                             let html = document.querySelector('#same').innerHTML;
                                                new axPopup('#btnSame01',{
                                                content:function(){
                                                return html + this.button.getAttribute('name');
                                                }
                                                });
                                                new axPopup('#btnSame02',{
                                                content:function(){
                                                return html + this.button.getAttribute('name');
                                                }
                                                });
                                                new axPopup('#btnSame03',{
                                                content:function(){
                                                return html + this.button.getAttribute('name');
                                                }
                                                });
                                            

底部按钮

通过设定footerShow参数显示窗口底部按钮。默认false不显示,可使用true显示默认按钮。用户可定义底部内容包括:1、自定义一个按钮;2、不要按钮,通过改写footer参数自定义文本。底部按钮参数如下:

                                confirm: {
                                    text: '确定',//确认按钮文字
                                    classname: '',//确认按钮的类名
                                    icon: '',//确认按钮的图标,格式是
                                    type: 'close',//按钮类型,可选择close关闭、async异步提交表单、submit直接提交表单
                                    url: '',//提交的地址,如果type为async则必须使用该参数
                                    callback: ''//确认按钮的回调函数,最终按函数方式使用,格式是function(button,content){},button是按钮节点,content是返回内容
                                },
                                cancel: {
                                    text: '关闭',//取消按钮文字
                                    classname: '',//取消按钮的类名
                                    icon: '',//取消按钮的图标
                                    callback: ''//取消按钮的回调函数,格式是function(button,content){},button是按钮节点,content是返回内容
                                },
                                diy: {
                                    text: '',//自定义按钮文字
                                    classname: '',//自定义按钮的类名
                                    icon: '',//自定义按钮的图标
                                    url: '',//自定义按钮的超链接
                                    target: '',//自定义按钮的链接目标,一般是_blank或者_self
                                    callback: ''//自定义按钮的回调函数,格式是function(button,content){},button是按钮节点,content是返回内容
                                }
                            
                                <a href="###" class="ax-btn ax-primary" axPopup='content:"伟大的中国",footerShow:true'>带常规按钮的小窗</a>
                                <a href="###" class="ax-btn ax-primary" axPopup='content:"伟大的中国",footerShow:true,note:"自定义底部文本"'>自定义底部文本的小窗</a>
                                <a href="###" class="ax-btn ax-primary" axPopup='content:"伟大的中国",footerShow:true,diy:{text:"自定义按钮",url:"http://www.axui.cn",target:"_blank"}'>带自定义按钮的小窗</a>
                            

显示列表

使用paddingclose参数制作列表小窗。列表使用方法请见:list

                                <a href="###" class="ax-btn ax-primary" axPopup='content:"#list",padding:false,close:false'>查看列表</a>
                                <a href="###" class="ax-bulletin">
                                    <span class="ax-bulletin-body"><i caption>南航与英航签署联营合作协议代码共享</i></span>
                                </a>
                                <hr/>
                                <a href="###" class="ax-bulletin">
                                    <span class="ax-bulletin-body"><i caption>12月,到英国大城小镇看“亮灯”</i></span>
                                    <i count>45次</i>
                                </a>
                                <hr/>
                                <div class="ax-bulletin">
                                    <div class="ax-bulletin-body"><a href="###" caption>英国人喝茶不再流行贵族范</a></div>
                                    <i count>234次</i>
                                </div>
                                <hr/>
                                <div class="ax-bulletin">
                                    <div class="ax-bulletin-body"><a href="###" caption>西班牙斗牛与逗牛,精彩各不同</a></div>
                                    <i count>98次</i>
                                </div>
                            

提交表单

使用paddingclose参数制作表单小窗。表单使用方法请见:input

本插件中确认按钮是放置在form标签之外,集成了两种提交方法。

第一种是同步提交。如果使用popup装入表单,像普通表单那样页面跳转式提交表单,需要具备如下几个条件:

  • 1、当页隐藏表单内容,并且必须使用form元素包裹,通过content参数引用其ID
  • 2、type参数设置为form
  • 3、confirm的type参数设置为submit
  • 3、form元素必须设置action属性和method属性

点击确认按钮将首先执行axValidRepeat函数(函数用法),对表单内控件进行再次校验;如果全部通过将执行submit()事件以跳转的方式提交表单。

                            <a href="###" class="ax-btn ax-primary" axPopup='content:"#form01",pageClose:false,type:"form",padding:false,close:false,confirm:{type:"submit"}'>前端校验提交表单</a>
                            <a href="###" class="ax-btn ax-primary" axPopup='content:"#form02",pageClose:false,type:"form",padding:false,close:false,confirm:{type:"submit"}'>异步校验提交表单</a>
                            <!--窗口-表单1-->
                            <div id="form01" style="display: none">
                                <form action="https://www.axui.cn" method="post">
                                    <div class="ax-emulate">
                                        <div class="ax-form-group">
                                            <div class="ax-flex-row">
                                                <div class="ax-form-label">姓名:</div>
                                                <div class="ax-form-con">
                                                    <div class="ax-form-input"><input name="name01" placeholder="输入登录名称" type="text" axValid='type:"required"'></div>
                                                </div>
                                                <span class="ax-form-txt ax-color-brief">必填校验</span>
                                            </div>
                                        </div>
                                        <hr/>
                                        <div class="ax-form-group">
                                            <div class="ax-flex-row">
                                                <div class="ax-form-label">选择房子:</div>
                                                <div class="ax-form-con">
                                                    <div class="ax-form-input">
                                                        <div class="ax-row">
                                                            <div class="ax-col ax-col-8"><input name="name02" placeholder="几室" value="" type="text"><span class="ax-pos-right">室</span></div>
                                                            <span class="ax-gutter-md"></span>
                                                            <div class="ax-col ax-col-8"><input name="name03" placeholder="几厅" value="" type="text"><span class="ax-pos-right">厅</span></div>
                                                            <span class="ax-gutter-md"></span>
                                                            <div class="ax-col ax-col-8"><input name="name04" placeholder="几卫" value="" type="text"><span class="ax-pos-right">卫</span></div>
                                                        </div>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                        <hr/>
                                        <div class="ax-form-group">
                                            <div class="ax-flex-row">
                                                <div class="ax-form-label">验证码:</div>
                                                <div class="ax-form-con">
                                                    <div class="ax-form-input"><input name="name05" placeholder="输入验证码" value="" type="text"></div>
                                                </div>
                                                <a href="###" class="ax-form-btn ax-btn ax-primary">获取验证码</a>
                                            </div>
                                        </div>
                                        <hr/>

                                        <div class="ax-form-group">
                                            <div class="ax-flex-row">
                                                <div class="ax-form-label">位置:</div>
                                                <div class="ax-form-con">
                                                    <div class="ax-form-input">
                                                        <select axSelect>
                                                            <option value="北京">北京</option>
                                                            <option value="上海">上海</option>
                                                            <option value="重庆" selected>重庆</option>
                                                        </select>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>

                                    </div>
                                </form>

                            </div>
                            <!--窗口-表单2-->
                            <div id="form02" style="display: none">
                                <form action="https://www.axui.cn" method="post">
                                    <div class="ax-emulate">
                                        <div class="ax-form-group">
                                            <div class="ax-flex-row">
                                                <div class="ax-form-label">姓名:</div>
                                                <div class="ax-form-con">
                                                    <div class="ax-form-input"><input name="name01" placeholder="输入登录名称" type="text" axValid='url:"ajax/name.php"'></div>
                                                </div>
                                                <span class="ax-form-txt ax-color-brief">填“李雷”</span>
                                            </div>
                                        </div>
                                        <hr/>
                                        <div class="ax-form-group">
                                            <div class="ax-flex-row">
                                                <div class="ax-form-label">选择房子:</div>
                                                <div class="ax-form-con">
                                                    <div class="ax-form-input">
                                                        <div class="ax-row">
                                                            <div class="ax-col ax-col-8"><input name="name02" placeholder="几室" value="" type="text"><span class="ax-pos-right">室</span></div>
                                                            <span class="ax-gutter-md"></span>
                                                            <div class="ax-col ax-col-8"><input name="name03" placeholder="几厅" value="" type="text"><span class="ax-pos-right">厅</span></div>
                                                            <span class="ax-gutter-md"></span>
                                                            <div class="ax-col ax-col-8"><input name="name04" placeholder="几卫" value="" type="text"><span class="ax-pos-right">卫</span></div>
                                                        </div>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                        <hr/>
                                        <div class="ax-form-group">
                                            <div class="ax-flex-row">
                                                <div class="ax-form-label">验证码:</div>
                                                <div class="ax-form-con">
                                                    <div class="ax-form-input"><input name="name05" placeholder="输入验证码" value="" type="text"></div>
                                                </div>
                                                <a href="###" class="ax-form-btn ax-btn ax-primary">获取验证码</a>
                                            </div>
                                        </div>
                                    </div>
                                </form>

                            </div>
                            

第二种是异步提交。异步提交表单不需要跳转页面即可完成表单提交,是目前前端开发中比较常见的表单提交方式。异步提交表单需要具备如下几个条件:

  • 1、当页隐藏表单内容,并且必须使用form元素包裹,通过content参数引用其ID
  • 2、type参数设置为form
  • 3、confirm的type参数设置为async
  • 3、confirm的url参数设置为异步提交地址

点击确认按钮将首先执行axValidRepeat函数(函数用法),对表单内控件进行再次校验;如果全部通过将执行axAjaxSubmit函数(函数用法)以非跳转的方式提交表单。

                                <a href="###" class="ax-btn ax-primary" axPopup='content:"#form03",type:"form",padding:false,close:false,confirm:{type:"async",url:"ajax/login.php"}'>异步提交表单</a>
                                <!--窗口-表单3-->
                                <div id="form03" style="display: none">
                                <form>
                                <div class="ax-emulate">
                                <div class="ax-form-group">
                                <div class="ax-flex-row">
                                <div class="ax-form-label">姓名:</div>
                                <div class="ax-form-con">
                                <div class="ax-form-input"><input name="name01" placeholder="输入登录名称" type="text" axValid='type:"required"'></div>
                                </div>
                                <span class="ax-form-txt ax-color-brief">必填校验</span>
                                </div>
                                </div>
                                <hr/>
                                <div class="ax-form-group">
                                <div class="ax-flex-row">
                                <div class="ax-form-label">选择房子:</div>
                                <div class="ax-form-con">
                                <div class="ax-form-input">
                                <div class="ax-row">
                                <div class="ax-col ax-col-8"><input name="name02" placeholder="几室" value="" type="text"><span class="ax-pos-right">室</span></div>
                                <span class="ax-gutter-md"></span>
                                <div class="ax-col ax-col-8"><input name="name03" placeholder="几厅" value="" type="text"><span class="ax-pos-right">厅</span></div>
                                <span class="ax-gutter-md"></span>
                                <div class="ax-col ax-col-8"><input name="name04" placeholder="几卫" value="" type="text"><span class="ax-pos-right">卫</span></div>
                                </div>
                                </div>
                                </div>
                                </div>
                                </div>
                                <hr/>
                                <div class="ax-form-group">
                                <div class="ax-flex-row">
                                <div class="ax-form-label">验证码:</div>
                                <div class="ax-form-con">
                                <div class="ax-form-input"><input name="name05" placeholder="输入验证码" value="" type="text"></div>
                                </div>
                                <a href="###" class="ax-form-btn ax-btn ax-primary">获取验证码</a>
                                </div>
                                </div>
                                </div>
                                </form>

                                </div>
                            

多媒体弹窗

本插件不仅可以弹出纯文本,也可以弹出图片、视频、音频等多媒体文件。多媒体文件分别用各自的属性表示。

  • 使用type:'picture'和url属性表示显示一张图片,请填入一个图片地址。
  • 使用type:'video'和url属性表示显示一个视频,请填入一个视频地址。
  • 使用type:'audio'和url属性表示显示一个音频,请填入一个音频地址。
  • 使用type:'iframe'和url属性表示显示一个网址,请填入一个网址;使用iframe属性,请配合使用width、height和size属性。
  • name:媒体文件的名称。
                                <a href="###" class="ax-btn ax-primary" axPopup='type:"picture",url:"https://src.axui.cn/v2.0/public/images/china01.jpg",mediaName:"中国城市夜景",close:false,content:"中国,是以华夏文明为源泉、中华文化为基础,并以汉族为主体民族的多民族国家。"'>图片</a>
                                <a href="###" class="ax-btn ax-primary" axPopup='type:"video",url:"https://src.axui.cn/v2.0/public/media/video.mp4",mediaName:"中国城市夜景",close:false,content:"中国,是以华夏文明为源泉、中华文化为基础,并以汉族为主体民族的多民族国家。"'>视频播放</a>
                                <a href="###" class="ax-btn ax-primary" axPopup='type:"audio",url:"https://src.axui.cn/v2.0/public/media/audio.mp3",mediaName:"中国城市夜景",close:false,content:"中国,是以华夏文明为源泉、中华文化为基础,并以汉族为主体民族的多民族国家。"'>音频播放</a>
                                <a href="###" class="ax-btn ax-primary" axPopup='type:"iframe",url:"http://www.axui.cn",mediaName:"中国城市夜景",padding:false,width:"800px",height:"400px"'>iframe</a>
                                <a href="###" class="ax-btn ax-primary" axPopup='content:"#table",size:"lg",close:false'>表格</a>

                                <div style="display: none;" id="table">
                                <table class="ax-table">
                                <thead>
                                <tr>
                                <th>等级</th>
                                <th>说明</th>
                                </tr>
                                </thead>
                                <tbody>
                                <tr>
                                <td>A、微小</td>
                                <td>为其他部门的工作提供服务。</td>
                                </tr>
                                <tr>
                                <td>B、略有</td>
                                <td>对实现企业的发展战略提供支持性服务。</td>
                                </tr>
                                <tr>
                                <td>C、中等</td>
                                <td>对实现企业的发展战略起到重要作用。</td>
                                </tr>
                                <tr>
                                <td>D、巨大</td>
                                <td>制定企业的发展战略,位于企业的决策层。</td>
                                </tr>
                                </tbody>
                                </table>
                                </div>
                            

销毁实例

通过使用this.destroy(callback)方法销毁实例,支持回调函数,回调无参数;销毁后可通过init初始化重新启用。

  •                                             <a href="###" class="ax-btn ax-primary" id="insDestroy">将要销毁的</a>
                                                <a href="###" class="ax-btn ax-primary" id="btnDestroy">立即销毁</a>
                                                <a href="###" class="ax-btn ax-primary" id="btnReturn">再次启用</a>
                                            
  •                                             let insDestroy = new axPopup('#insDestroy', { content: '伟大的中国' }),
                                                    btnDestroy = document.querySelector('#btnDestroy'),
                                                    btnReturn = document.querySelector('#btnReturn');
                                                btnDestroy.onclick = function () {
                                                    insDestroy.destroy(function () {
                                                        alert('销毁了实例!')
                                                    });
                                                }
                                                btnReturn.onclick = function () {
                                                    insDestroy.init();
                                                }
                                            

在创建实例的时候会自动添加到全局实例合集当中;如果填写了实例名insName,那么可通过axInstance方法进行销毁实例。关于axInstance使用方法请点击这里

  •                                     <a href="###" class="ax-btn ax-primary" axPopup='insName:"big",content:"big实例"'>name='big'的实例</a>
                                        <a href="###" class="ax-btn ax-primary" axPopup='insName:"small",content:"small实例"'>name='small'的实例</a>
                                        <a href="###" class="ax-btn ax-primary" id="destroyBig">销毁big实例</a>
                                        <a href="###" class="ax-btn ax-primary" id="destroySmall">销毁small实例</a>
                                        <a href="###" class="ax-btn ax-primary" id="viewAll">查看实例合集</a>
                                        <a href="###" class="ax-btn ax-primary" id="returnAll">重新启用</a>
                                            
  •                                             let destroyBig = document.querySelector('#destroyBig'),
                                                    destroySmall = document.querySelector('#destroySmall'),
                                                    viewAll = document.querySelector('#viewAll'),
                                                    returnAll = document.querySelector('#returnAll');
                                                destroyBig.onclick = function () {
                                                    axInstance.destroy('big');
                                                }
                                                destroySmall.onclick = function () {
                                                    axInstance.destroy('small');
                                                }
                                                viewAll.onclick = function () {
                                                    //只查看有name的实例合集
                                                    console.log(axInstance.data.filter(i => i.name && i.type === 'popup'));
                                                }
                                                returnAll.onclick = function () {
                                                    //重新初始化以启用
                                                    let items = axInstance.data.filter(i => (i.name === 'big' || i.name === 'small') && i.type === 'popup');
                                                    items.forEach(i => {
                                                        i.instance.init();
                                                    });
                                                }
                                            

获取实例

如果在创建实例的时候填写了insName参数,那么使用axInstance的find方法可找到指定名称的实例,并可对实例进行初始化、修改、销毁等操作。

  •                                     <a href="###" class="ax-btn ax-primary" axPopup='insName:"ins01",content:"我是中国人"'>创建带name的实例</a>
                                        <a href="###" class="ax-btn ax-primary" id="nameContent">更新内容</a>
                                        <a href="###" class="ax-btn ax-primary" id="nameSet">修改参数</a>
                                        <a href="###" class="ax-btn ax-primary" id="nameDestroy">销毁</a>
                                        <a href="###" class="ax-btn ax-primary" id="nameReturn">重新启用</a>
                                            
  •                                         let nameIns = axInstance.find('ins01'),
                                                nameOpen = document.querySelector('#nameOpen'),
                                                nameContent = document.querySelector('#nameContent'),
                                                nameSet = document.querySelector('#nameSet'),
                                                nameDestroy = document.querySelector('#nameDestroy'),
                                                nameReturn = document.querySelector('#nameReturn');
                                            nameOpen.onclick = function () {
                                                nameIns.show();
                                            }
                                            nameContent.onclick = function () {
                                                nameIns.updateContent('元谋人是已知的中国境内最早的人类。北京人是原始人群时期的典型。山顶洞人已经过着氏族公社的生活。').show();
                                            }
                                            nameDestroy.onclick = function () {
                                                nameIns.destroy();
                                            }
                                            nameSet.onclick = function () {
                                                nameIns.update({
                                                    title: '标题修改了!'
                                                }, function (update, before, after) {
                                                    if (update) {
                                                        alert('更新了参数!');
                                                    } else {
                                                        alert('没有更新参数!');
                                                    }
                                                }).show();
                                            }
                                            nameReturn.onclick = function () {
                                                nameIns.init();
                                            }
                                            

更新参数

通过使用update方法更新插件参数。该方法有两个参数,第一个参数setting:将要更新的参数,格式:{name:value};第二个参数callback:回调函数,可不填,回调函数支持三个参数:

  • 第1个参数:是否更新了,true或false,可不填
  • 第2个参数:更新之前的内容,可不填
  • 第3个参数:更新之后的内容,可不填
  •                                             <a href="###" class="ax-btn ax-primary" id="btnContent">装入内容</a>
                                                <a href="###" class="ax-btn ax-primary" id="btnUpdate">更新内容</a>
                                            
  •                                             let contentInstance = new axPopup('#btnContent', { content: '伟大的中国' });
                                                let btnUpdate = document.querySelector('#btnUpdate');
                                                btnUpdate.onclick = function () {
                                                contentInstance.updateContent('中华人民共和国中央人民政府,今天成立啦!',function(update,before,after){
                                                if(update){
                                                alert('已经更新!\n原内容:'+before+'\n新内容:'+after);
                                                }else{
                                                alert('没有要更新的内容!');
                                                }
    
                                                });
                                                }
                                            

更新内容

使用this.updateContent(data,callback)方法可更新窗口内容,支持三个参数。data可以是#id、.className等选择器,详细点击这里,也可是是DOM节点;第二个值是回调函数,可不填;其中回调函数有3个参数:

  • 第1个参数:是否更新了,true或false,可不填
  • 第2个参数:更新之前的内容(HTML格式),可不填
  • 第3个参数:更新之后的内容(HTML格式),可不填

以下演示,第一次点击“装入内容”按钮将创建一个实例并打开;关闭之后再点击“更新内容”按钮将改变之前窗口的内容;再次点击“装入内容”按钮发现内容已经改变了。

  •                                             <a href="###" class="ax-btn ax-primary" id="btnContent">装入内容</a>
                                                <a href="###" class="ax-btn ax-primary" id="btnUpdate">更新内容</a>
                                            
  •                                             let contentInstance = new axPopup('#btnContent', { content: '伟大的中国' });
                                                let btnUpdate = document.querySelector('#btnUpdate');
                                                btnUpdate.onclick = function () {
                                                contentInstance.updateContent('中华人民共和国中央人民政府,今天成立啦!',function(update,before,after){
                                                if(update){
                                                alert('已经更新!\n原内容:'+before+'\n新内容:'+after);
                                                }else{
                                                alert('没有要更新的内容!');
                                                }
    
                                                });
                                                }
                                            

更新位置

有时候我们只需要打开一个popup窗口,但是需要用在不同的按钮上面,此时我们需要借助updatePosition的方法来修改定位,该方法支持两个参数:

  • elem:改变窗口的按钮,可以是id、className或节点对象
  • callback:回调函数,无参数
  •                                             <a href="###" class="ax-btn ax-primary" id="tranPos1">原pop</a>
                                                <a href="###" class="ax-btn ax-primary" id="tranPos2">定位过来</a>
                                                <a href="###" class="ax-btn ax-primary" id="tranPos3">再次定位</a>
                                            
  •                                             let tranPos1 = document.querySelector('#tranPos1'),
                                                tranPos2 = document.querySelector('#tranPos2'),
                                                tranPos3 = document.querySelector('#tranPos3'),
                                                tranIns = new axPopup(tranPos1, { content: '伟大的中国' });
                                                tranPos1.onmouseenter = function () {
                                                tranIns.updatePosition(this);
                                                }
                                                tranPos2.onmouseenter = function () {
                                                tranIns.updatePosition(this);
                                                }
                                                tranPos3.onmouseenter = function () {
                                                tranIns.updatePosition(this);
                                                }
                                            

如果不需要改变定位按钮,只是因为页面结构改变导致定位不准而需要重新定位准确,那么直接使用this.popupPosition.update()方法即可。

变量和操作方法

本插件有系列内部成员变量和内部操作方法,用户根据这些变量和方法可以自由操作实例,据此可方便与其他组件进行交互。请按下F12按键打开浏览器控制台来观摩以下实例。


内部成员变量如下:

  • this.button:定位浮层的按钮节点
  • this.form:浮层内的表单提交域节点
  • this.state:浮层显示状态,shown、hidden和ing(动画进行中)
  • this.destroyed:是否销毁状态,true或false
  • this.bound:是否绑定事件状态,true或false
  • this.targetDom:浮层节点
  • this.wrapper:浮层内的.ax-popup-wrapper节点
  • this.content:浮层内的.ax-popup-content节点
  • this.body:浮层内的.ax-popup-body节点
  • this.header:浮层内的.ax-popup-header节点
  • this.footer:浮层内的.ax-popup-footer节点
  • this.wrapperHeight:浮层内的.ax-popup-wrapper节点高度值,数字格式
  • this.duration:显示和关闭动画的持续时间,数字格式,单位ms
  • this.hover:hover实例(由axHover创建)
  • this.popupPosition:定位实例(由axPopupPosition创建),通过该实例变量可以获取更深一级变量:
    • this.popupPosition.arrow:浮层三角箭头节点
    • this.popupPosition.boxData:浮层数据,是一个对象,包括长、宽、偏移量等
    • this.popupPosition.btnData:定位按钮数据,是一个对象,包括长、宽、偏移量等
    • this.popupPosition.browserData:浏览器可见窗口的数据,是一个对象,包含浮窗口的宽和高
    • this.popupPosition.placement:当前浮层的位置,字符串格式

内部操作方法如下:

  • this.update(setting, callback):更新所有参数,支持两个参数:
    • setting:必填项,对象类型,用户自定义的参数
    • callback:选填项,回调函数,支持三个参数:
      • isUpdated:是否更新了参数,true或false
      • before:更新前的参数
      • after:更新后的参数
  • this.updateContent(html, callback):更新文本内容,支持两个参数:
    • html:必填项,字符串类型,更新的内容,支持html标签代码
    • callback:选填项,回调函数,支持三个参数:
      • isUpdated:是否更新了内容,true或false
      • before:更新前的内容
      • after:更新后的内容
  • this.updatePosition(btn, callback):更新定位按钮(转移浮层到其他按钮上),支持两个参数:
    • btn:必填项,字符串类型,定位按钮,可以填"#id"、".className"、"div"等原生选择器以及Dom对象
    • callback:选填项,回调函数,支持一个参数,即placement
  • show(callback):显示浮层,支持一个参数即callback回调,回调函数无参数。
  • hide(callback):隐藏浮层,支持一个参数即callback回调,回调函数无参数。
  • destroy(callback):销毁实例,支持回调函数,回调无参数:

全局操作方法如下:

  • axInstance:每个new实例都会自动加入到全局实例合集当中,通过该方法可获取实例,继而使用实例的内部变量和内部操作方法。关于axInstance使用方法请点击这里
在回调函数中this均指向实例本身,所以在回调函数中通常可使用如下变量:
  • this:实例本身
  • this.targetDom:实例的Dom
  • this.options:实例的参数

监听事件

本插件有若干监听方法,以on为关键字,参数中监听格式为:new instance({onShow:function(){}});实例后监听格式是:instance.on('show',function(){})。在参数中监听和实例后监听效果相同。具体事件说明如下:

  • onInit 初始化后执行,无参数
  • onShow/show 打开窗口前执行,无参数
  • onShown/shown 打开窗口后执行,无参数
  • onHide/hide 窗口隐藏前执行,无参数
  • onHidden/hidden 窗口隐藏后执行,无参数
  • onUpdate/update 内容、参数或位置更新前执行,无参数
  • onUpdated/updated 参数更新后执行,支持参数isUpdated(是否更新了:true或false)、before(更新前参数)、after(更新后参数)
  • onUpdateContent/updateContent 内容更新后执行,支持参数isUpdated(是否更新了:true或false)、before(更新前内容)、after(更新后内容)
  • onUpdatePosition/updatePosition 位置更新后执行,支持参数placement(位置)
  • onDestroy/destroy 销毁后执行,无参数

演示实例显示结果使用了console.log方法,请按下F12按键打开开发者工具中的“控制台”查看监听效果。

  •                                             <a href="###" class="ax-btn ax-primary" id="ready">打开实例进行监听</a>
                                            
  •                                             let ready = new axPopup('#ready',{
                                                content: '中国,是以华夏文明为源泉、中华文化为基础,并以汉族为主体民族的多民族国家,通用汉语、汉字,汉族与少数民族被统称为“中华民族”,又自称为炎黄子孙、龙的传人。',
                                                });
                                                ready.on('show', function () {
                                                console.log('开始打开执行')
                                                }).on('shown', function () {
                                                console.log('已经打开执行')
                                                }).on('hide', function () {
                                                console.log('关闭前执行')
                                                }).on('hidden', function () {
                                                console.log('关闭后执行')
                                                });
                                            

参数选项

                                document.addEventListener("DOMContentLoaded", function() {
                                var demo1 = new axPopup({
                                    insName: '',//实例名称,对axInstance有用实例合集当中
                                    title: '',//窗口标题,为空等于不显示
                                    titleBreak: false,//标题分割线,默认不显示
                                    placement: 'top',//窗口相对按钮的位置,可填top|top-start|top-end|bottom|bottom-start|bottom-end|left|left-start|left-end|right|right-start|right-end|center
                                    arrow: true,//是否显示指示箭头,默认true显示,可填false不显示
                                    trigger: 'click',//显示窗口的动作,默认click点击显示,可填hover,sticky,none
                                    pageClose: true,//点击窗口之外的区域是否允许关闭窗口,默认true允许,可填false
                                    size: 'md',//小窗尺寸,默认为md,可填sm|md|lg|xl|xxl
                                    duration: 0,//弹出和关闭窗口动画的时间,如果为0则使用css中定义的动画时间,单位ms
                                    in: 'fadeIn',//可填fadeIn,fadeInDown,fadeInUp,slideDown,fadeInLeft,fadeInRight,springIn,scaleIn等
                                    out: 'fadeOut',//可填fadeOut,fadeOutDown,fadeOutUp,slideUp,fadeOutLeft,fadeOutRight,springOut,scaleOut等
                                    multiple: false,//是否允许打开多个窗口,默认不允许
                                    offsetShow: true,//是否保持弹窗与元素的间隙,默认保持,可选false取消间隙
                                    rel: '',//可以触发本窗口的元素,可以是#id,节点对象,或数组(多个按钮均触发)
                                    triggerRel: 'click',//关联按钮显示窗口的动作,默认click点击显示,可填hover,sticky,input,none,如果不填将使用trigger来代替
                                    theme: '',//窗口的风格,默认为空,可选crude
                                    stay: false,//设置打开后是否就不再关闭,默认为false,可选true
                                    fixDistance: '2.4rem',//如果窗口宽度或高度小于按钮,placement为*-start或*-end时箭头所处的位置,字符串格式
                                    name: '',//多媒体文件名称
                                    width: '',//内容宽度,当type是iframe的时候,有必要设置该参数,比如800px
                                    height: '',//内容高度,当type是iframe的时候,有必要设置该参数,比如400px,但是不要超过600px否则会产生垂直滚动条
                                    padding: 'ax-padding',//窗口内边距,值可以是布尔值也可以是类名,默认带边距,可填false,true,ax-padding,ax-padding ax-xxl,...
                                    content: '',//窗口内容,可填#id或html,
                                    type: 'html',//内容的类型,默认是html,可填picture|video|audio|iframe|async|html|form
                                    url: '',//异步请求地址,可填“url”或者“url#id”
                                    btnClass: 'ax-opened',//触发按钮在打开气泡后新增的样式名
                                    close: true,//关闭窗口的按钮,默认显示
                                    triggerShowOnly: false,//通过触发是否只能显示而不能关闭,默认false,可选择true只显示不关闭
                                    triggerStrict: false,//触发元素是否必须是指定input或rel节点,默认false忽略,如果为true那么input或rel的子元素将不会触发
                                    footerShow: true,//是否显示底部,默认显示
                                    footerType: 'line',//底部按钮风格,可选center,line,right
                                    footerBreak: false,//底部分割线,默认不显示
                                    note: '',//其他内容
                                    ajaxType: 'post',//异步提交的方式,默认post,可填get
                                    zIndex:0,//气泡层级,默认为0即不设置,如果与其他组件发生遮挡请自行设置
                                    response:true,//是否在手机端强制以绝对居中的方式打开气泡,默认true,可选择false保持pc端的打开方式
                                    breakpoints: {},//使用断点以适配终端,详情查看ax-utils-other.php页面
                                    onInit: '',//回调函数,初始化后执行,无参数
                                    onShow: '',//回调函数,开始显示后执行,无参数
                                    onshown: '',//回调函数,完成显示后执行,无参数
                                    onHide: '',//回调函数,开始关闭后执行,无参数
                                    onHidden: '',//回调函数,完全关闭后执行,无参数
                                    onUpdate: '',//回调函数,参数/内容/位置更新前执行,无参数
                                    onUpdated: '',//回调函数,参数更新后执行,无参数
                                    onUpdateContent: '',//回调函数,内容更新后执行,支持参数isUpdate(是否更新了:true或false)、oldContent(更新前内容)、newContent(更新后内容)
                                    onUpdatePosition: '',//回调函数,位置更新后执行,支持参数placement(位置)
                                    onDestroy: '',//回调函数,销毁后执行,无参数
                                    confirm: {
                                        text: '确定',//确认按钮文字
                                        classname: '',//确认按钮的类名
                                        icon: '',//确认按钮的图标,格式是<i class="ax-iconfont ax-icon-edit"></i>
                                        type: 'close',//按钮类型,可选择close关闭、async异步提交表单、submit直接提交表单、prevent阻止按钮默认事件什么事也不做
                                        url: '',//提交的地址,如果type为async则必须使用该参数
                                        callback: ''//确认按钮的回调函数,最终按函数方式使用,格式是function(button,content){},button是按钮节点,content是返回内容
                                    },
                                    cancel: {
                                        text: '关闭',//取消按钮文字
                                        classname: '',//取消按钮的类名
                                        icon: '',//取消按钮的图标
                                        callback: ''//取消按钮的回调函数,格式是function(button,content){},button是按钮节点,content是返回内容
                                    },
                                    diy: {
                                        text: '',//自定义按钮文字
                                        classname: '',//自定义按钮的类名
                                        icon: '',//自定义按钮的图标
                                        url: '',//自定义按钮的超链接
                                        target: '',//自定义按钮的链接目标,一般是_blank或者_self
                                        callback: ''//自定义按钮的回调函数,格式是function(button,content){},button是按钮节点,content是返回内容
                                    }
                                });
                            
以axMenu插件为例,如果在元素上通过ax*使用属性,需要使用类似json的写法,属性不需要使用引号,如果值是字符串需要使用引号包裹,如果值是数字、布尔值、null或undefined不需要引号;比如要设置active,那么在元素的ax*属性中应该这样书写:axMenu="active:2"