这一章应该是自适应和响应式的实践,但是老鼠很懒,就不想写了。
因为这很尴尬,设计一个优雅的案例会搞得很复杂,一章怕是放不下。而一通繁琐操作下来,你会发现我就是把前面的东西再说一遍。这就很没必要。
这些东西就是窗户纸,你不找到有这些东西的时候感觉一切千难万难,而了解到之后基本马上就能形成生产力,因为没有什么复杂的地方,都是明摆着的理论知识。
关键在什么,你首先要有相应的基础,所以前面我反复恳求大家动手多写几个页面。如果你做了,那么现在我讲的每一句话,在你看来都有一种拨云见日的感觉。如果你还没做,那现在一定觉得我叨叨叨的像个老太太,面目可憎,味同嚼蜡,要不是偶尔皮一下还有点趣味,早就不看这只大耗子了。
话都说到这份上了,还没做练习的,求求你们,轻舒玉爪,尝试自己写一下吧。
你大概以为这一章我又打算这么糊弄过去了,然而并不是。这一章我们依旧聊聊对多种设备的适配这件事。
上一章说媒体查询的条件多达 32 种,这还仅仅是一些媒体特征,如果算上设备等条件的话……这很厉害了,但是它也有它的局限性。比如对于取值需要做一定的计算它就无法完成。所以有时候我们需要用 JS 对这部分进行补充。
道理很简单,我们先获取我们要观察的某个数据,比如 Viewport
的宽度吧,然后看看这个数据是否符合我们的情况,然后进行相应的处理,计算,什么什么的,生成我们需要的结果,把某个元素给设置成为相应的值。
然和这套操作要在什么时候执行呢?当窗口发生尺寸变化的时候,就叫着套操作来上一便。这就很好了,每次尺寸一变,元素跟着发生变化,而且灵活度非常大(可以进行复杂的计算和处理)。
但是,这里还丢了一个情况,就是我们打开页面的时候。页面刚打开,但是现在并没有发生窗口尺寸改变这件事,页面就傻了。就好像你告诉我闹钟响了就看看外面,天亮呢就起床工作,天黑呢就倒头睡觉。仿佛一切都很完美的安排。但是现在是中午,我走进了房间。这时候闹钟没响,所以我不会进行后面的操作,那我现在该做什么?
你肯定说我笨,进了房间先看看天亮天黑决定当前做什么啊。那么我们再总结一次,我应该什么时候看时间,决定做什么?当我走进这个房间的时候或者闹钟响起的时候。对吧?
现在也是一样,我们设定了闹钟,但是忘记说刚进入房间时的事情了。所以,当刚进入页面的时候,根据当前数据计算一次元素的属性值;以后每次窗口尺寸发生变化,我们就再进行一次计算。
你可能好奇,我们目前又不能用代码来实现这些功能,我还讲这些干嘛。一方面是让大家有一个相应的逻辑模型,也对这种逻辑操作有一定的认识和了解。这会方便你思考想在遇到的问题,也会分担我们以后学习 JS 时的压力。
还有一点,编程不止是一种技能,它也会影响你对事情的思考方法和逻辑能力。退一步说,即便没能学好写代码,也可能借此提高了自己逻辑思维和分析解决问题的能力,说人话就是能够变聪明。
暂无评论内容