dom

参考网站
http://blog.csdn.net/zxf13598202302/article/details/50485113

使用DOM(文档对象模型)


dom
// 使用createElement创建元素
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标签

<template id="dialog_tpl"> 
  <div class="dialog"> 
    <img src="" alt=""> 
    <input type="button" value="确认"> <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));

不设置为type="text/javascript"的script标签

<script type="text/html" id="theTemplate"> 
 <div class="dialog">
  <div class="title">
     <img src="close.gif" alt="点击可以关闭" />亲爱的提示条
  </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创建元素
  // 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: '这是测试标题',
    content: '这是测试里的内容',
    type: 'default',
    func: function() {
      console.log('2333');
    },
  };
  // 调用函数
  Modal(data);

  // 函数实现
  function Modal(data) {
    var config = data;
    // 打印传入的数据
    console.log(data);
    var modalBox = {
      modalConfig: {
        title: config.title || '默认标题', // modal标题
        content: config.content || '这是默认的内容', // modal内容
        //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;

        //监听事件
        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() {
          //如果没有指定处理函数
          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: '标题',
    content: '内容',
    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 || '默认标题', // modal标题
        content: config.content || '这是默认的内容', // modal内容
        //type: config.type, // modal类型
        func: config.func || 0, // 其他处理方法
      },
      init: function(){
          var that = this;
          //创建dom
          $("#container").append(modal);
          //写入配置
          $(".modal-title").text(that.modalConfig.title);
          $(".modal-body").text(that.modalConfig.content);
          $("#modal").hide();
          //监听事件
          $(".toggle").click(function() {
            $("#modal").toggle();
          });
          //遮罩层隐藏
          $("#overlay-mask").click(function() {
            $("#modal").hide();
          });
          //关闭事件
          $(".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
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,588评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,456评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,146评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,387评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,481评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,510评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,522评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,296评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,745评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,039评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,202评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,901评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,538评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,165评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,415评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,081评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,085评论 2 352

推荐阅读更多精彩内容

  • 之前通过深入学习DOM的相关知识,看了慕课网DOM探索之基础详解篇这个视频(在最近看第三遍的时候,准备记录一点东西...
    微醺岁月阅读 4,469评论 2 62
  • 本文整理自《高级javascript程序设计》 DOM(文档对象模型)是针对HTML和XML文档的一个API(应用...
    SuperSnail阅读 573评论 0 1
  • 要找实习了,要准备面试了。拿出之前积攒的一些问题点一个一个进行深入的研究,就碰到了这个,一个微信面试题引发的血案 ...
    small_a阅读 2,108评论 3 1
  • SDWebImage是我们经常使用的第三方框架,但很多时候我们都是直接拿来用,在感受其方便快捷的同时,往往忽略其底...
    只敲代码不偷桃阅读 856评论 0 4
  • 不知道刷了几遍的《夏洛特烦恼》,终于静下心来写个影评。从话剧小品,到这部电影,再到《一念天堂》和《驴得水》...
    5617021afa09阅读 649评论 0 1