JS实例-DOM知识

1、右下角悬浮框(富媒体):

右下角广告

在高级浏览器下可以直接用 <b>position:fixed 固定定位</b>

该实例主要解决IE6下的不兼容fixed的问题。

<b>知识点</b>

滚动高度/宽度:
html: document.documentElement
body: document.body

纵向:
    获取滚动高度:
    document.body.scrollTop
    兼容:Chrome
    FF/IE: 0

    document.documentElement.scrollTop
    兼容:FF/IE
    Chrome: 0
        
    兼容版:
    var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;

横向:
滚动的宽度
兼容问题同上。

    兼容版:
    var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft;

可视区高度:

可视区 - 就是你能看见的区域的大小
    
    document.documentElement.clientHeight

可视区宽度:
    document.documentElement.clientWidth

物体本身的高度、宽度:
物体 -> obj
obj.offsetHeight
obj.offsetWidth

取的是盒子模型的高度/宽度

盒子模型:width/height + padding + border + margin

盒子模型大小:width/height + padding + border

offsetHeight的返回值是number , 大小是盒模型大小,当display:none 时获取的值为 0

<b>事件</b>
window.onscroll
当滚动滚动条的时候
window.onresize
当缩放浏览器的时候

代码


<style>

body {height:2000px;}

div {width:200px;height:200px;background:blue;  position:fixed;_position:absolute;right:5px;bottom:10px;font-size:100px;text-align:center;line-height:200px;color:#fff;}
</style>

<script>

//ie 6 兼容写法

if (window.navigator.userAgent.toLowerCase().indexOf('msie 6.0') != -1) {

    window.onload = window.onscroll = window.onresize = function () {

        var oBox = document.getElementById('box');

        var scrollTop = document.documentElement.scrollTop||document.body.scrollTop;

        var clientHeight = document.documentElement.clientHeight;

        var oHeight = oBox.offsetHeight;
  
        oBox.style.top = (scrollTop + clientHeight -oHeight)+'px';

    };
}
</script>

<body>
    <div id="box">广告</div>
</body>


2、懒加载()

物体距离左边/上边的距离:
父级:
a). parentNode -> 结构上的父级
b). offsetParent -> 定位父级
祖宗: body
物体 -> obj

左边:obj.offsetLeft 
    物体距离有定位父级的左边的一个距离
上边:obj.offsetTop
    物体距离有定位父级的上边的一个距离

求物体距离上边/左边的绝对距离:
getPos(obj);

function getPos(obj) {
   var l = 0;
   var t = 0;
   while(obj) {
    l += obj.offsetLeft;
    t += obj.offsetTop;
    // 换定位父级
    obj = obj.offsetParent;
   }
   return {left: l, top: t};
}

慢点加载
原因:节约资源,节约带宽,节省钱

查看是否加载
chrome -> network -> 加载痕迹

怎么让一个图片不加载 ?
不给src,在需要的时候给
写_src 约定俗成

定义属性:
a). . 点
b). [] 中括号
c). obj.getAttribute('自定义属性名字');

设置自定义属性:
obj.aaa = xxx;
obj.setAttribute('自定义属性名字','值是多少');

删除自定义属性
obj.removeAttribute('自定义属性名字');

*** 自定义属性的方法方式不能混合使用
代码
<style>
* {margin:0;padding:0;list-style:none;}
ul li {width:300px;height:300px;border:1px solid #000;margin:10px;float:left;   }
ul li img {width:100%;  }
</style>

<script>
    function getPos(obj) {
        var l = 0; //默认左边距离
        var t = 0; //默认高度
        //循环 获取l 和 t 的值
        while (obj) {
           l += obj.offsetLeft;
           t += obj.offsetTop;
          obj = obj.Offsetparent;
        }
        return {top: t, left: l};
     }
    window.onload = window.onscroll = window.onresize = function () {
        var oBox = document.getElementById('box');
        var aImg = oBox.getElementsByTagName('img');
        //获取滚动高度
        var scrollT = document.documentElement.scrollTop||document.body.scrollTop;
        //获取可视区高度
        var clientH =document.documentElement.clientHeight;
        //循环改变符合条件img的src
        for (var i = 0; i < aImg.length; i++) {
            if (scrollT + clientH >= getPos(aImg[i]).top) {
                aImg[i].src = aImg[i].getAttribute('_src');
            }

        }
    };
</script>

<body>
<ul id="box">
  <li><img _src="cat/1.jpg" alt="..."/></li>
  <li><img _src="cat/2.jpg" alt="..."/></li>
  <li><img _src="cat/3.jpg" alt="..."/></li>
  <li><img _src="cat/4.jpg" alt="..."/></li>
  <li><img _src="cat/5.jpg" alt="..."/></li>
  <li><img _src="cat/6.jpg" alt="..."/></li>
  <li><img _src="cat/7.jpg" alt="..."/></li>
  <li><img _src="cat/8.jpg" alt="..."/></li>
  <li><img _src="cat/9.jpg" alt="..."/></li>
  <li><img _src="cat/10.jpg" alt="..."/></li>
  <li><img _src="cat/11.jpg" alt="..."/></li>
  <li><img _src="cat/12.jpg" alt="..."/></li>
</ul>

3、简单瀑布流(花瓣网):

特点:
a). 宽度一致,高度是参差不齐
b). 滚不完

aUl -> 伪数组
    没有数组的方法

物体的<b>内容</b>高度:
物体 -> obj
obj.scrollHeight

注意点:
如果内容的高度小于盒模型的高度,取盒模型的高度
如果内容的高度大于盒模型的高度,取内容的高度

效果:


简单瀑布流

代码:

<style>
div {width:1100px;margin: 0 auto;   }
div ul{width:200px;margin:10px;border:1px solid #000;float:left;list-style:none;}
div ul li{width:180px;margin:10px;}
</style>

<script>
      function rnd(n,m) {
          return parseInt(Math.random()*(m-n)+n);
      }

      function createLi() {
          var oLi = document.createElement('li');
          oLi.style.height = rnd(200,400) +'px';
          oLi.style.background = 'rgb('+rnd(0,256)+','+rnd(0,256)+','+rnd(0,256)+')';
          return oLi;
      }
      window.onload = function () {
          var oBox = document.getElementById('box');
          var aUl = oBox.children;  
          function createLi20() {
              for (var i = 0; i < 20; i++) {
              var oLi = createLi();
              var arr = [];
              for (var k = 0; k <aUl.length; k++) {
                  arr.push(aUl[k]);
              }
              arr.sort(function (ul1, ul2) {
                  return ul1.offsetHeight - ul2.offsetHeight;
              });
              arr[0].appendChild(oLi);
            }   
          }

          createLi20();
          window.onscroll = function () {
              var scrollT = document.documentElement.scrollTop||document.body.scrollTop;
              var clientH = document.documentElement.clientHeight;
              var iH = document.body.scrollHeight;
              if (scrollT + clientH >= iH) {
                  createLi20();
              }
          };
      };
</script>

<body>
<div id = "box">
    <ul></ul>
    <ul></ul>
    <ul></ul>
    <ul></ul>
</div>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,629评论 1 92
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 11,613评论 4 59
  • 柯达是在大学微信群里得知陆珈然已经结婚的。在过去一个小时的唇枪舌战里,柯达觉得自己的脑细胞大量死亡,喉咙里像被生生...
    张未眠阅读 324评论 0 3
  • 最近几天,忙的天昏地暗,上班,手术,门诊,练车团团转。 整个人就像陀螺,不停的转。 每天的精力真的是有限的。却要用...
    萝懵懵焉阅读 168评论 0 0
  • 观念是什么?观念观念就是价值观和信念。上篇文章我们讲了信念。那什么是价值观呢?价值观就是你认为重要的事情。每个人重...
    晴天爱学习阅读 698评论 0 1