`
rapheal
  • 浏览: 169780 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

浏览器处理“盒子”

阅读更多

前言

这应该是我写关于Web前端一些概念性的东西的最后一篇,为了分享一些自己的想法跟理解,一起交流心得,并且希望能帮助到一些人进入Web前端。为了避免盒子的概念太奇怪,在这声明一下:盒子就是页面切分成一小块一小块的元素。

 

让盒子动起来

前面几篇文章已经介绍了,我们可以通过为页面量身定制一套装饰,使得页面的摆放跟设计图一摸一样,高保真地还原设计图。

不满足现状的人们要继续朝更高难度的发展,我们得想办法让页面上这些“盒子”跟我们交流。

于是后来的发展中就出现了Javascript(JS)。

再次用俗一点的话来解释它的话:使用它,我们可以任意改变页面上盒子的大小,例如宽度,边距等等;我们可以让盒子从页面上消失、隐藏、移动;我们可以监控用户是不是点击了页面上的盒子并作出响应或者浏览器是不是已经把盒子摆放好了;我们也可以知道现在页面上有多少个盒子了;

细心的人应该注意到,上边说的全都是针对盒子的。嗯,JS的重要的功能就是用来操作盒子的,也就是DOM操作,至于什么是DOM,还是自己谷歌/百度吧,或许你可以认为DOM就是这一大堆盒子。

不会JS就只能操作DOM吧?

当然不是,Javascript是一种脚本语言,是浏览器的解释器解析JS来进行逻辑控制、DOM操作等等的,但是在Web前端的工作里边,我们大多时候使用Javascript都是DOM操作。

 

JS With浏览器们

回到前面一个话题,我们说过了大家都在用各种各样的浏览器,每个厂商生产出来的东西对CSS理解是有差异的,同样,它们对JS的认识理解也是有很多不一样的地方。

有时候,我用我常用的火狐打开一个网站,然后发现它上边一团糟的时候,我就会在这头一边骂娘一边打开IE去访问它。

这些网站往往覆盖于那些不负责任、不会技术、不懂用户感受的公司/机构里边:

zf、银行(尤其是网银)、学校某某系统……

真的让人觉得他们很业余并且往往这些系统是最贵的,我想原因,大家都懂。

既然浏览器对JS解析不一致,我们得想办法让它一致起来,使得我们在进行开发Web应用的时候不用浪费一大堆时间去考虑浏览器的兼容问题(不过这个问题是必须考虑的,更多的是放在测试阶段吧)。

 

JS框架

什么是框架!?打个比方吧,JS就是一堆木头,我们可以使用木头来做很多事情吧,例如我们可以用它来雕刻、烧火、做把木剑玩玩也是可以的。那你想想,我每次都给你一堆木头,叫你雕刻一堆印章,这时候你会很想说:好惨,我得一直做重复的工作来完成这项任务,我要拿着刻刀不停地在这一堆形状各异的木头中制作一个摸样的印章。

这时候要是有个人来跟你说:我有个机器,我可以帮助你先预处理一下这堆木头。例如我可以把木头先处理成形状一样的圆柱体,然后你只需要在这个圆柱体下边刻上你想要刻的文字,你很快就能完成这项任务了。

于是你感动到鼻涕泪流。

这个机器就相当于前面所提的框架,我们可以用它来预处理一下JS脚本,使得我们不关心JS各种形状不一的东西(浏览器解析不一致的东西)获得一样的结果,然后只要对结果稍微处理一下就能很快达到目的。

无疑,它帮助我们完成快速开发,同时也保证了我们开发的应用有很好的结构,很好的扩展性。

当然,要记住一点,任何事情有利有弊。

框架首先加重了我们的一些负担:

  1. 我们得先学习怎么让这个机器工作起来;
  2. 你的应用到互联网的各个角落的时候必须都扛着这个机器去工作;
  3. 机器坏了或者崩溃了,谁来为它产生的后果买单?

在JS里边,有很多很好的框架,最出名的当然是jQuery,还有YUI、Prototype、Dojo等等。

也许你会为选取哪个框架而发愁。

但是个人看法,一开始的JS学习不应该使用框架,更应该自己亲自去体会一下各个浏览器对JS有那些解析不一致的地方,除非你急着要做个应用没时间花很多精力在处理浏览器兼容性方面。要相信有付出一定会有回报,偷懒只会带来一些弊端。

说了那么多,貌似学习JS考虑浏览器兼容性很可怕的样子,其实在很多不兼容的处理都是在一些DOM操作上而已,对于普通的逻辑控制,语法解析基本是不会有差别的,SO无须那么畏惧。刚刚说那么多,只是为了要强调,一定要做好浏览器兼容性!不要让千千万万个我在这头访问你的应用时骂娘。

 

辅助工具

正所谓“工欲善其事必先利其器”,最后推荐一下一些工具,我采用的组合是:

  1. 浏览器:IE Tester(用于测试IE6,7,8)、火狐、谷歌、Opera、Safari;
  2. 辅助处理图片工具PhotoShop;
  3. 调试工具:火狐底下的Firebug,Fiddler,HTTPWacth;
  4. 文本编辑器:Notepad++;
  5. 双显示器

工具的具体使用方式在网上很容易就找到,不废篇幅跟时间了。个人采用的工具以及方法有限,还望多推荐跟指正。

 

本篇总结

希望这几天写的几篇能够帮助到一些人吧,不想贴一些网上一大堆无聊的糟糕代码跟术语,因为个人认为有些东西需要联系实际的例子来引出概念会远远比说个术语更让人接受。

当有人跑来看你的文章,听你的演讲,然后没有收获,我就觉得这样的效果是非常糟糕的,我们会经常在学校讨论这个这个老师不会讲课之类之类的吗?我很欣赏那些善于演讲善于写作的人,听他们的演讲跟看他们的文章对听者读者是一种享受。

接下来会结合一些实际的例子来写一些关于技术细节的东西,当然我会继续保持这种风格,看看能不能帮助别人更好的理解,还望大牛们多多交流指正。

0
1
分享到:
评论
2 楼 rapheal 2011-08-15  
jordan_micle 写道
双显示器真是必需的。。。。

个人觉得是很方便,有些人可能也不习惯,所以看情况而定吧~
1 楼 jordan_micle 2011-08-15  
双显示器真是必需的。。。。

相关推荐

    编写跨浏览器兼容的 CSS 代码

    为 Web 设计师,你的网站在各种浏览器中有完全一样的表现是很多人的目标,然而这是一个永远无法真正实现的目标,很多...CSS 盒子模型负责处理以下事情: 一个 blcok (区块)级对象占据多大的空间 该对象的边界,留白

    迅雷大众版 v9.1.46.998 V3 精简绿色版(满速)

    去除检测更新、去除浏览器组件,阻止浏览器访问网页; 极限精简所有无用的文件,比官方安装包缩小 75% 体积; 禁止 Data 目录 ThunderPush 自动下载推送垃圾文件; 超级 SVIP 会员,畅享迅雷9 主题; 整合成批处理...

    CSS3弹性盒模型开发笔记(一)

    弹性盒模型(Flexible Box Moudle),该模型用于决定元素在盒子中的分布方式以及处理盒子的可用空间。这与XUL(Firefox浏览器的用户交互语言)相似,其他语言也使用相同的盒模型。如XAML,GladeXML等。通过弹性盒...

    JavaScript王者归来part.1 总数2

     13.4 浏览器的事件处理模型实现   13.4.1 Internet Explorer事件模型   13.4.1.1 关于IE事件注册   13.4.1.2 IE Event对象的属性   13.4.1.3 IE中的事件起泡   13.4.2 Netscape 4事件模型   13.4.2.1 ...

    SA-FileUp&游窝盒子_py1024-80g_8979.exe

    允许用户使用一个浏览器从本地硬盘将文件传送到微软 IIS Web Serber 上。文件可以是任何格式的,如 Word 文档、图象等格式。它只允许传送 2GB 以下的文件。开发者获得和处理用户输入进程。它还有下载组件,供编程...

    【JavaScript源代码】Vue使用canvas实现图片压缩上传.docx

     better-scroll的滚动原理和浏览器原生滚动原理是一样的,当子盒子的高度大于父盒子的高度,就会出现纵向滚动;同理,如果子盒子的宽度大于父盒子的宽度,那么就会出现横向滚动。 先来看一下 better-scroll 常见的...

    乐视随身看64g T50升级固件.zip

    6) 随身看固件升级到T50版本后,会对盒子进行格式化处理,盒子里面的数据会全部被格式化。 7) 随身看固件升级到T50版本后,需要在手机中将乐视视频APP执行清除数据操作。如果未执行清除数据操作,会导致乐视视频APP...

    chip-8-emulator:使用可在浏览器上运行JavaScript构建Chip-8模拟器

    当您按下电源按钮时,那个小盒子里面有什么? 微小的硅芯片如何相互交谈以创建我们在屏幕上看到的惊人图形并响应我们在控制器上进行的每一次按下? 如果您不仅要全面了解微处理器与内存,显示器,键盘和声卡的通讯...

    box-o-lafs:盒子里的 Tahoe-LAFS

    应该像拥有​​“团队”文件夹一样简单(而不是通过网络或命令行主动上传文件),无论如何 - 浏览器是避免攻击面的“魔法文件夹”。 第二个问题更为固有:如果我能说出你存储了多少信息,这已经是该信息的部分泄露...

    使select在选中/聚焦时列出所有选项目前比较好的处理方式

    在开发中,遇到这样一个需求...利用select的size属性,配合盒子布局的position属性来实现,具体代码如下: 复制代码代码如下: ”right”> 支付方式: </td> <td xss=removed> <!– 这里必须用div包着select,否则在f

    WebSockets-with-NodeJS:这是一个简单HTML5画布,它可以跟踪光标的位置并将这些坐标发送到所有浏览器。 因此,两个不同的客户端可以互相移动屏幕。 使用NodeJS,Express,Socket.io,https

    任何移动他们的盒子的人也会移动其他所有人的盒子。 ## public /包含静态文件css / javascript和Foundation 5作为前端框架 ## routes /包含一个处理获取/发布请求的路由器 ## App同时在https和http端口80上运行以...

    css3弹性盒模型实例介绍

    Css3引入了新的盒模型——弹性盒模型,该模型决定一个盒子在其他盒子中的分布方式以及如何处理可用的空间。这与XUL(火狐使用的用户交互语言)相似,其它语言也使用相同的盒模型,如XAML 、GladeXML。使用该模型,...

    如何确保JavaScript的执行顺序 之实战篇

    虽然现代浏览器可以并行的下载JavaScript(部分浏览器),但考虑到JavaScript的依赖关系,他们的执行依然是按照引入顺序进行的。 为了更好的测试这个过程,我写了一个简单的HTTP处理程序页面 service.ashx,它可以...

    postmortem-processing-tools:从原位杂交图像的连续切片高分辨率人类尸体的图像配准和层重建

    等待实例启动,请在Web浏览器中转到 ,以获取更多信息。 1.目录 目录 问题描述 登记 点提取 重建 3D重建管道 概述 使用无业游民的盒子 使用IPython笔记本 浏览源代码 有关处理环境的详细信息 注意事项 2.问题描述 ...

    DIV+CSS教程

    在所有浏览器和平台之间的兼容性。 更少的编码、更少的页数和更快的下载速度。 除了还不能全面支持我们常用的大多数浏器之外,CSS在实现其它承诺方面作得相当出色。CSS在改变我们制作样式表的方法。它为大部分的...

    CSS教程:闭合CSS浮动元素的几种方法

    按照CSS规范,浮动元素(floats)会被移出文档流,不会影响到块状盒子的布局而只会影响内联盒子(通常是文本)的排列。因此当其高度超出包含容器时,一般父容器不会自动伸长以闭合浮动元素。但是有时我们却需要这种...

    CSS教程:弄懂闭合浮动元素

    按照CSS规范,浮动元素(floats)会被移出文档流,不会影响到块状盒子的布局而只会影响内联盒子(通常是文本)的排列。因此当其高度超出包含容器时,一般父容器不会自动伸长以闭合浮动元素。但是有时我们却需要这种...

    闭合浮动元素让CSS代码更规范

    按照CSS规范,浮动元素(floats)会被移出文档流,不会影响到块状盒子的布局而只会影响内联盒子(通常是文本)的排列。因此当其高度超出包含容器时,一般父容器不会自动伸长以闭合浮动元素。但是有时我们却需要这种...

    adonis-blog:基于adonis-blog-demo示例应用程序的博客应用程序

    无密码验证前端框架以增加UX 访问控制列表所见即所得编辑器带有处理上传的文件(图像)怎么跑运行npm install安装所有依赖项复制.env.example并将其重命名为.env 运行adonis key:generate以生成密钥运行adonis ...

Global site tag (gtag.js) - Google Analytics