我的弹窗插件的使用方法

功能说明:这个弹窗插件,主要实现的是弹窗的一些基本功能,如遮罩层:背景颜色、透明度、是否可以点击遮罩关闭弹窗;显示、关闭弹窗的按钮;弹窗显示、关闭的动画方式、动画时间;弹窗是否跟随页面滚动;弹窗在跟随页面滚动是出现的位置;一个弹窗中切换多种内容;支持手机模式;可以一个页面定义多个弹窗;ie8及以上支持(ie8目前不支持动画效果)。注:红色的类名my-popup、popup-content是必须有的,使用类名加自定义属性绑定显隐事件时,popup-show、popup-close与data-linked-id也是必须有的。

  1. 最简单的使用方式

    <div class="my-popup one-popup" id="onePopup">
      <div class="popup-content">
        <p class="msg">我是一个弹窗,点击透明遮罩层我就会隐藏</p>
      </div>
    </div>
    
    ****************************************
    
    var oOnePopup = new MyPopup('onePopup');
    

    说明:该插件必须传的参数是id,它的默认配置是:固定定位、点击背景关闭、无动画、背景transparent、透明度0

  2. 弹窗的配置参数与方法

    <div class="my-popup two-popup" id="twoPopup">
      <div class="popup-content">
        <p class="msg">我是弹窗2</p>
        <div class="btn-box">
          <button>我使用close()方法方式</button>
          <button class="popup-close" data-linked-id="twoPopup">我使用类名加上data-lined-id属性方式</button>
          </div>
      </div>
    </div>
    
    *****************************************
    
    var oTwoPopup = new MyPopup('twoPopup', {
      param: {
        isfixed: false,	// 弹窗是否固定居中(默认true可以) 值:true、false
        bgclose: false,	// 可否通过点击背景关闭弹窗 (默认true可以) 值:true、false
        type: 'top',	// 弹窗出现的方式(默认none无动画) 值:none、opacity、top、right、bottom、left
        time: 400,		// 弹窗出现动画的时长(默认200ms)
        bgcolor: '#777',// 背景颜色(默认transparent)
        opacity: 0.2 	// 背景透明度(默认0)
      },
      show: function () {
    	console.log("这是显示弹窗前调用的函数");
      },
      close: function () {
    	console.log("这是默认的关闭弹窗前调用的函数");
      }
    });
    
    配置参数
    isfixed 弹窗是否固定居中(默认true可以) 值:true、false
    bgclose 可否通过点击背景关闭弹窗 (默认true可以) 值:true、false
    type 弹窗出现的方式(默认none无动画) 值:none、opacity、top、right、bottom、left
    time 弹窗出现动画的时长(默认200ms)
    bgcolor 背景颜色(默认transparent)
    opacity 背景透明度(默认0)
    showFn 默认在弹窗弹出前执行的函数,如果是异步函数,有可能弹窗已经出现了,异步函数还没执行完。如果要使用异步函数,最好使用show()方法。这个在配置中的showFn方法,是显示弹窗时的默认方法,如果使用show()方法的时候传了函数进来,就不会执行该方法了,只会执行show()传入的方法。
    closeFn 默认在弹窗隐藏前执行的函数,如果是异步函数,有可能弹窗已经隐藏了,异步函数还没执行完。如果要使用异步函数,最好使用close()方法。close()传函数时同show()
    方法
    show() 使用该方法,可以使处于隐藏状态的弹窗显示出来(在创建了对应的弹窗对象之后)
    close() 使用该方法,可以使处于显示状态的弹窗隐藏起来(在创建了对应的弹窗对象之后)
    content() 在一个弹窗中有多个popup-content时,该方法才有作用。该方法可以按传入的iNum显示对应的popup-content
    show()方法参数
    fn 可选。函数,弹窗显示前需要执行的参数。
    oPos 可选。对象,在isfixed为false的情况下有效,即弹窗出现时相对于上于左的定位距离。有top,left两个属性
    close()方法参数
    fn 可选。函数,弹窗隐藏前需要执行的参数。
    content()方法参数
    iNum 必填。整数,0到n,传入同一个弹窗下的popup-content的下标。
  3. 随页面滚动的弹窗

    <div class="my-popup three-popup" id="threePopup">
      <div class="popup-content">
        <p class="msg">我是一个弹窗,点击透明遮罩层我就会隐藏</p>
      </div>
    </div>
    
    ******************************************************
    
    var oThreeShow = document.getElementById('threeShow');
    var oThreePopup = new MyPopup('threePopup', {
      param: {
        isfixed: false,
        bgcolor: '#917C77',
        opacity: 0.2
      }
    });
    oThreeShow.onclick = function () {
    	oThreePopup.show(null, {top: 200, left: 100});
    }
    
  4. 显示与关闭弹窗的两种方法

    <div class="my-popup four-popup" id="fourPopup">
      <div class="popup-content">
        <p class="msg">我是一个弹窗,点击透明遮罩层我就会隐藏</p>
        <div class="btn-box">
          <button class="popup-close" data-linked-id="fourPopup">关闭方法一</button>
          <button id="fourClose">关闭方法二</button>
        </div>
      </div>
    </div>
    
    *****************************************************
    	
    var oFourShow = document.getElementById('fourShow');
    var oFourClose = document.getElementById('fourClose');
    var oFourPopup = new MyPopup('fourPopup', {
      param: {
        bgcolor: '#999',
        opacity: 0.2
      }
    });
    oFourShow.onclick = function () {
      oFourPopup.show();
    }
    oFourClose.onclick = function () {
      oFourPopup.close();
    }
    

    方法一:使用指定的类名(popup-show、popup-close)及一个搭配的自定义属性(data-linked-id)实现弹窗的显隐。

    方法二:调用弹窗对象的show()、close()方法,实现对弹窗的显隐。如给一个按钮绑定点击事件,在点击事件中调用方法。

  5. 一个弹窗中切换多种内容

    <div class="my-popup five-popup" id="fivePopup">
      <div class="popup-content">
        <p class="msg">one</p>
        <button id="fiveOneBtn">下一步</button>
      </div>
      <div class="popup-content">
        <p class="msg">two</p>
        <button id="fiveTwoBtn">下一步</button>
      </div>
      <div class="popup-content">
        <p class="msg">three</p>
        <button id="fiveThreeBtn">完成</button>
      </div>
    </div>
    
    ******************************************************************
    
    var oFiveBtn1 = document.getElementById('fiveOneBtn');
    var oFiveBtn2 = document.getElementById('fiveTwoBtn');
    var oFiveBtn3 = document.getElementById('fiveThreeBtn');
    var oFivePopup = new MyPopup('fivePopup', {
      param: {
        bgcolor: '#999',
        opacity: 0.2,
        time: 200,
        type: 'opacity'
      },
      showFn: function () {
        oFivePopup.content(0);
      }
    })
    oFiveBtn1.onclick = function () {
      oFivePopup.content(1);
    }
    oFiveBtn2.onclick = function () {
      oFivePopup.content(2);
    }
    oFiveBtn3.onclick = function () {
      oFivePopup.close();
    }
    

    说明:在有多个popup-content的时候可以通过MyPopup.content(iNum)方法来决定显示哪一个popup-content。iNum是从0开始的popup-content的顺序数。

  6. 使用我的弹窗插件可以实现其它的自定义插件,如我的对话框插件

    我的对话框