老师 你详细通俗的解释一下 嘿嘿
(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 对吗老师?*/
正在回答
<!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>
同学你好,关于你的所有问题,我都一一的进行了解答,在你的注释下面,小括号里面的是我的讲解,这块的代码老师写的非常细,还照顾到了兼容性和性能,所以你要好好屡一下,多写两遍,记住流程,有些东西是固定的。
你是一个非常爱学习的童鞋,继续加油!
如果帮助到了你,欢迎采纳!祝学习愉快!
- 参与学习 人
- 提交作业 2198 份
- 解答问题 5012 个
如果你有web端基础,既想进阶,又想进军移动端开发,那就来吧,我们专题为你带来的课程有HTML5、CSS3、移动基础、响应式、bootstrap、less等,让你在前端道路上畅通无阻!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星