老师 你详细通俗的解释一下 嘿嘿

老师 你详细通俗的解释一下 嘿嘿

(function (a ,b){
    var docEl = a.documentElement,
    // 老师这个是获取document保存到变量对吗?
    resizeEvt = "orientationchange" in window ? "orientationchange" : "resize";
// 这里疑问        这个屏幕旋转的时间  in window 是干什么  然后这个 三元 返回的orientationchange 是个什么值,resize不是滚动条吗?
    recalc = function (){
        var c = docEl.clientWidth;
        // 获取document的宽度
        if(! c) return;
        // 这是判断什么?
        if(c >=640){
            // 屏幕小于 = 640 利用rem 来固定屏幕宽度
            docEl.style.fontSize = "100px";
            // 100  =  1 * 100  6.4 = 640px
        }else{
            // 小于640 REM控制屏幕宽度
            docEl.style.fontSize = 100 * (c / 640) + "px";
            // 当屏幕变小时WeB 宽度也变小  老师对吗?
        }
    }
    if(! doc.addEventListener) return;
    //这里为什么把监听时间写在判断里面?
    b.addEventListener(resizeEvt,recalc,false);
    // 这个监听的resizeEvt是什么事件
    a.addEventListener("DOMContentLoaded",recalc,false);
    // 这个监听的DOMContentLoaded  又是什么事件
    recalc();
})/*函数自启动*/(document, win)/*第一个参数传递document,第二个参数传递window  对吗老师?*/

正在回答

登陆购买课程后可参与讨论,去登陆

3回答
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8" />
    <title>Document</title>
</head>

<body>
    <script type="text/javascript">
    (function(a, b) {
        var docEl = a.documentElement,
            // 老师这个是获取document保存到变量对吗?
            ( 对 )
            resizeEvt = "orientationchange" in window ? "orientationchange" : "resize";
        // 这里疑问        这个屏幕旋转的时间  in window 是干什么  然后这个 三元 返回的orientationchange 是个什么值,resize不是滚动条吗?
        (这里也是定义变量,给后面的事件监听做准备的,这段是为了获取移动端屏幕是否翻转,也就是手机重力感应等引起屏幕长宽变化之类的。'orientationchange' in window 这个是判断在window对象中是否有orientationchange属性,因为orientationchange会遇到兼容性问题,有的浏览器不支持,所以这边做了判断来决定是用orientationchange还是resize。当浏览器窗口被调整到一个新的高度或宽度时,就会触发resize事件,这里是判断在不同的环境下使用哪个事件)
)
        recalc = function() {
            var c = docEl.clientWidth;
            // 获取document的宽度
            if (!c) return;
            // 这是判断什么?
            (这个判断看看c是不是空的或者0,如果是0或者空那么就直接返回,不往下执行了,为性能考虑的避免这里都报错还在执行下面的,消耗性能)
            if (c >= 640) {
                // 屏幕小于 = 640 利用rem 来固定屏幕宽度
                (不是固定屏幕宽度,是设置字体大小fontsize属性。)

                docEl.style.fontSize = "100px";
                // 100  =  1 * 100  6.4 = 640px
            } else {
                // 小于640 REM控制屏幕宽度  
                (小于640的时候也设置一个固定比例的宽度)

                docEl.style.fontSize = 100 * (c / 640) + "px";
                // 当屏幕变小时WeB 宽度也变小  老师对吗?
                (是的,当屏幕变小,字体大小变小,不是宽度变小,你这里一直判断的都是宽度啊,宽度>640 或者<640,设置不同大小的字体)
            }
        }
        if (!doc.addEventListener) return;
        //这里为什么把监听时间写在判断里面? 
        (如果doc的addEventListener属性/方法不存在,则直接返回。因为下面要用这个事件监听了,上面要判断一下,因为在原生事件绑定中IE绑定中需要用到attachEvent,火狐与chrome中需要用到addEventListener 。也就是说这是做兼容性的)
        b.addEventListener(resizeEvt, recalc, false);
        // 这个监听的resizeEvt是什么事件 
        (resizeEvt是一个变量,上面给他定义了事件,看上面的解释)
        a.addEventListener("DOMContentLoaded", recalc, false);
        // 这个监听的DOMContentLoaded  又是什么事件
        (这个事件的作用是当初始HTML文档已完全加载和解析时,将触发DOMContentLoaded事件,而不需要等待样式表,图像和子框架页面加载,总结一句这个事件可以用来检测HTML页面是否完全加载完毕)
        recalc();
    })
     /*函数自启动*/
     (document, win) /*第一个参数传递document,第二个参数传递window  对吗老师?*/
     (是的,但是这里要写成window,不能写win,他的作用是自动调用匿名函数)

    </script>
</body>

</html>

同学你好,关于你的所有问题,我都一一的进行了解答,在你的注释下面,小括号里面的是我的讲解,这块的代码老师写的非常细,还照顾到了兼容性和性能,所以你要好好屡一下,多写两遍,记住流程,有些东西是固定的。

你是一个非常爱学习的童鞋,继续加油!

如果帮助到了你,欢迎采纳!祝学习愉快!

  • 慕神6715844 提问者 #1
    (function(a,b){ console.log($(a)); })(document,window) (function(a,b){ console.log($(a)); })(document,window) 老师是不是只能声明一次 匿名函数
    2018-10-31 22:53:17
  • 慕神6715844 提问者 #2
    嗯嗯 , 大牛的作品看出来了~ 很厉害。加油了
    2018-10-31 22:59:03
提问者 慕神6715844 2018-10-31 16:01:40

希望老师脑补 我写错的错别字 嘿嘿

提问者 慕神6715844 2018-10-31 16:00:42

有一些错别字 嘿嘿 时间 是事件的意思 /.-

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
响应式开发与常用框架 2018
  • 参与学习           人
  • 提交作业       2198    份
  • 解答问题       5012    个

如果你有web端基础,既想进阶,又想进军移动端开发,那就来吧,我们专题为你带来的课程有HTML5、CSS3、移动基础、响应式、bootstrap、less等,让你在前端道路上畅通无阻!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师