dom

參考網(wǎng)站
http://blog.csdn.net/zxf13598202302/article/details/50485113

使用DOM(文檔對象模型)


dom
// 使用createElement創(chuàng)建元素
var dialog = document.createElement('div');
var img = document.createElement('img');
var btn = document.createElement('input');
var content = document.createElement('span');
// 添加
classdialog.className = 'dialog';
// 屬性
img.src = 'close.gif';
// 樣式
btn.style.paddingRight = '10px';
// 文本
span.innerHTML = '您真的要GG嗎?';
//在容器元素中放入其他元素
dialog.appendChild(img);
dialog.appendChild(btn);
dialog.appendChild(span);

使用HTML5 template標(biāo)簽

<template id="dialog_tpl"> 
  <div class="dialog"> 
    <img src="" alt=""> 
    <input type="button" value="確認(rèn)"> <span></span> 
  </div>
</template>
//使用textarea包裹
var dialog = document.querySelector('#dialog_tpl');
dialog.content.querySelector('img').src = 'close.gif';
dialog.content.querySelector('span').innerHTML = '您真的要GG嗎?';
document.body.appendChild(dialog.content.cloneNode(true));

不設(shè)置為type="text/javascript"的script標(biāo)簽

<script type="text/html" id="theTemplate"> 
 <div class="dialog">
  <div class="title">
     <img src="close.gif" alt="點(diǎn)擊可以關(guān)閉" />親愛的提示條
  </div>
  <div class="content">
    <img src="delete.jpg" alt="" /><span>您真的要GG嗎?</span>
  </div>
  <div class="bottom">
     <input id="Button2" type="button" value="確定" class="btn"/>  
    <input id="Button3" type="button" value="取消" class="btn"/>
  </div>
 </div>
</script>
//使用script包裹
var template = document.getElementById("theTemplate").innerHTML ;

改寫代碼:

<div id="container">
    按鈕<button class="toggle">展示/隱藏</button>
</div>
window.onload = function() {
  // 使用createElement創(chuàng)建元素
  // modalheader
  var modalHeader = document.createElement('div');
  var modalClose = document.createElement('button');
  var closeContent = document.createElement('span');
  var modalTitle = document.createElement('h4');
  modalHeader.className='modal-header';
  modalClose.className='close';
  modalTitle.className='modal-title';
  closeContent.innerHTML = "&times";
  modalTitle.innerHTML = "這是一個浮出層";
  modalClose.appendChild(closeContent);
  modalHeader.appendChild(modalClose);
  modalHeader.appendChild(modalTitle);
  // modalbody
  var modalBody = document.createElement('div');
  var modalBodyContent = document.createElement('p');
  modalBody.className='modal-body';
  modalBodyContent.innerHTML = "這是一個浮出層";
  modalBody.appendChild(modalBodyContent);
  // modalfooter
  var modalFooter = document.createElement('div');
  var modalFunc = document.createElement('button');
  var modalCancel = document.createElement('button');
  modalFooter.className='modal-footer';
  modalFunc.className='btn btn-primary modal-func';
  modalCancel.className='btn btn-defalut modal-cancel';
  modalFunc.innerHTML = "確定";
  modalCancel.innerHTML = "取消";
  modalFooter.appendChild(modalFunc);
  modalFooter.appendChild(modalCancel);
  //modal-dialog
  var modalDialog = document.createElement('div');
  modalDialog.className = 'modal-dialog';
  modalDialog.appendChild(modalHeader);
  modalDialog.appendChild(modalBody);
  modalDialog.appendChild(modalFooter);
  //modal-content
  var modalContent = document.createElement('div');
  modalContent.className = 'modal-content';
  modalContent.appendChild(modalDialog);
  //modal
  var modal = document.createElement('div');
  var overlayMask = document.createElement('div');
  modal.id='modal';
  modal.className='modal hide';
  overlayMask.className='overlay-mask';
  overlayMask.id='overlay-mask';
  modal.appendChild(overlayMask);
  modal.appendChild(modalContent);

  document.getElementById("container").appendChild(modal);
  console.log(document.getElementById("container"));


  var data = {
    title: '這是測試標(biāo)題',
    content: '這是測試?yán)锏膬?nèi)容',
    type: 'default',
    func: function() {
      console.log('2333');
    },
  };
  // 調(diào)用函數(shù)
  Modal(data);

  // 函數(shù)實(shí)現(xiàn)
  function Modal(data) {
    var config = data;
    // 打印傳入的數(shù)據(jù)
    console.log(data);
    var modalBox = {
      modalConfig: {
        title: config.title || '默認(rèn)標(biāo)題', // modal標(biāo)題
        content: config.content || '這是默認(rèn)的內(nèi)容', // modal內(nèi)容
        //type: config.type, // modal類型
        func: config.func || 0, // 其他處理方法
      },
      //modal顯示/隱藏
      toggle: function() {
        console.log('show');
        if (modal.className.indexOf('hide')) {
          modal.className = 'modal';
        } else {
          modal.className = 'modal hide';
        }
      },
      init: function() {
        var that = this;
        //寫入配置
        modalTitle.innerText = that.modalConfig.title;
        modalBody.innerText = that.modalConfig.content;
        modalTitle.innerText = that.modalConfig.title;

        //監(jiān)聽事件
        document.querySelector('.toggle').addEventListener('click', function() {
          that.toggle();
        }, false);

        overlayMask.addEventListener('click', function(){
           modal.className = 'modal hide';
         }, false);

        //取消事件
        modalCancel.addEventListener('click', function() {
          modal.className = 'modal hide';
        }, false);

        modalFunc.addEventListener('click', function() {
          //如果沒有指定處理函數(shù)
          if (that.modalConfig.func == 0) {
            modal.className = 'modal hide';
          } else {
            that.modalConfig.func();
            modal.className ='modal hide';
          }
        }, false);

      }
    }
    return modalBox.init();
  }
}

jquery改寫

$(document).ready(function(){
  var data = {
    title: '標(biāo)題',
    content: '內(nèi)容',
    type: 'default',
    func: function() {
      console.log("2333");
    }
  };

  var modalHeader = $("<div class='modal-header'></div>");
  var modelCloseContent = $("<span aria-hidden='true'></span>").text("×");
  var modalClose = $("<button type='button' class='close'></button>").append(modelCloseContent);
  var modalTitle = $("<h4 class='modal-title'></h4>").text("這是一個浮出層");
  modalHeader.append(modalClose, modalTitle);
  // modalbody
  var modalBody = $("<div class='modal-body'></div>");
  var modalBodyContent = $("<p></p>").text("這是一個浮出層");
  modalBody.append(modalBodyContent);
  // modalfooter
  var modalFooter = $("<div class='modal-footer'></div>");
  var modalFunc = $("<button type='button' class='btn btn-primary modal-func'></button>").text("確定");
  var modalCancel = $("<button type='button' class='btn btn-default modal-cancel'></button>").text("取消");
  modalFooter.append(modalFunc, modalCancel);
  //modal-dialog
  var modalDialog = $("<div class='modal-dialog'></div>");
  modalDialog.append(modalHeader, modalBody, modalFooter);
  //modal-content
  var modalContent = $("<div class='modal-content'></div>");
  modalContent.append(modalDialog);
  //modal
  var modal = $("<div class='modal' id='modal'></div>");
  var overlayMask = $("<div class='overlay-mask' id='overlay-mask'></div>");
  modal.append(overlayMask, modalContent);

  Modal(data);
  function Modal(data) {
    var config = data;
    console.log(data);
    var modalBox = {
      modalConfig: {
        title: config.title || '默認(rèn)標(biāo)題', // modal標(biāo)題
        content: config.content || '這是默認(rèn)的內(nèi)容', // modal內(nèi)容
        //type: config.type, // modal類型
        func: config.func || 0, // 其他處理方法
      },
      init: function(){
          var that = this;
          //創(chuàng)建dom
          $("#container").append(modal);
          //寫入配置
          $(".modal-title").text(that.modalConfig.title);
          $(".modal-body").text(that.modalConfig.content);
          $("#modal").hide();
          //監(jiān)聽事件
          $(".toggle").click(function() {
            $("#modal").toggle();
          });
          //遮罩層隱藏
          $("#overlay-mask").click(function() {
            $("#modal").hide();
          });
          //關(guān)閉事件
          $(".close").click(function(){
            $("#modal").hide();
          });
          //確定事件
          $(".modal-func").click(function(){
            if(that.modalConfig.func == 0){
              $("#modal").hide();
            }else {
              that.modalConfig.func();
              $("#modal").hide();
            }
          });
          //取消事件
          $(".modal-cancel").click(function() {
            $("#modal").hide();
          });
      }
     }
    return modalBox.init();
  }
})

css樣式(未修改)

body {
    height: 100%;
}

.overlay-mask {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    z-index: 15;
    cursor: pointer;
}
.hide {
    display: none!important;
}

.modal {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    z-index: 10;
    overflow: hidden;
    -webkit-overflow-scrolling: touch;
    outline: 0;
    /* width: 600px; */
    margin: 0 auto;
    display: flex;
    height: 100%;
    /* border: 1px solid red; */
    justify-content: center;
    align-items: center;
}

.modal-open .modal {
    overflow-x: hidden;
    overflow-y: auto;
}

.modal-dialog {
    position: relative;
    width: auto;
    margin: 10px;
    width: 600px;
    z-index: 20;
}

.modal .close {
    float: right;
    font-size: 21px;
    font-weight: 700;
    line-height: 1;
    color: #000;
    text-shadow: 0 1px 0 #fff;
    filter: alpha(opacity=20);
    opacity: .2;
}

.modal-content {
    position: relative;
    background-color: #fff;
    -webkit-background-clip: padding-box;
    background-clip: padding-box;
    border: 1px solid #999;
    border: 1px solid rgba(0, 0, 0, .2);
    border-radius: 6px;
    outline: 0;
    -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
    box-shadow: 0 3px 9px rgba(0, 0, 0, .5)
}

.modal-backdrop {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    z-index: 1040;
    background-color: #000
}

.modal-backdrop .fade {
    filter: alpha(opacity=0);
    opacity: 0
}

.modal-backdrop .in {
    filter: alpha(opacity=50);
    opacity: .5
}

.modal-header {
    min-height: 16.43px;
    padding: 15px;
    border-bottom: 1px solid #e5e5e5
}

.modal-header .close {
    margin-top: -2px
}

.modal-title {
    margin: 0;
    line-height: 1.42857143
}

.modal-body {
    position: relative;
    padding: 15px
}

.modal-footer {
    padding: 15px;
    text-align: right;
    border-top: 1px solid #e5e5e5
}

.modal-footer .btn+.btn {
    margin-bottom: 0;
    margin-left: 5px
}

.modal-footer .btn-group .btn+.btn {
    margin-left: -1px
}

.modal-footer .btn-block+.btn-block {
    margin-left: 0
}

.modal-scrollbar-measure {
    position: absolute;
    top: -9999px;
    width: 50px;
    height: 50px;
    overflow: scroll
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容