前端工作了一段时间的经验总结

一,编辑器的选择,推荐webstorm,绝对的神器。不要用dw了,它最骄傲的所见即所得其实没什么用,因为根本就不准,代码提示也不人性话,不方便。Webstorm的方便之处(目前用到的),

1.可以分屏,左右同时编辑两个文件,比如左边编辑html,右边编辑它的css/js。

2.代码提示很人性话,分级结构也很清洗。

3.方便查找,如ctrl+点击类名,就可自动定位到该css样式。

4.支持自定义模版,这样快速开始完成一些经常用到的代码。

5.支持个性化主题,字体等。

6.强大的插件库,自己去选吧。

7 .ctrl+/,注释所选区域。

目前暂时就发现这些,自己去发现吧,这有个软件学习地址:Webstorm入门指南

二,布局。提到布局最头疼就是浏览器兼容性,现在才发现其实很多兼容性其实是很容易避免的,只要做到你对自己的每一句代码都知道它的意义和作用,还有避免用一些有兼容性的样式属性就行了,很多情况都可以不用hack,一样能实现多浏览器兼容。

1.       不要用hack,一定有更好的解决办法。很多情况都是因为代码结构不够好才会出现兼容性问题。

2.       思考如何用最少的标签及属性实现页面。

3.       理解结构,表现,行为分离的意义。

4.       布局前一定要先分析页面结构,磨刀不误砍柴工,分析怎么用更好的办法实现,理清思路后,再切图写代码。

5.       深刻理解类的概念,注重归类元素,多总结,保持代码风格(包括前后代码的空格位置、多少,以及命名风格)严格一致并且尽量简洁。

6.       多用组合,少用继承。

7.       命名空间:驼峰命名法用于区别不同单词,划线用于表明从属关系。

8.       低权重原则------避免滥用子选择器(即类似#test span这样的选择符)。

三、技巧。

1. 写js效果时一定要注意先分析好效果的行为,尽量用最简单通用性的代码。分析步骤可以是1.先把要实现的功能一步一步的写在纸上(即自然语言)2.再根据自然语言翻译成机器语言,用jquery写的代码一定要注意代码的可移植性、通用性。

2. 组织css,推荐使用base、common、page三层,base可以分为两大部分:css reset(覆盖掉浏览器提供的默认样式,可以参考:developer.yahoo.com/yui/)和通用原子类。(疑问:如果使用css reset后,那么之前的要求的标签语义化是否就没有意义了呢?因为所有语义化的标签默认样式都被reset了),不用*{ margin:0; padding:0;}的原因是因为“*”表示所有标签,其中包含大量生僻标签和为向前兼容而留下来的淘汰标签。

3. 把多个按钮放在一张图定位时,最好两个按钮之间隔一个像素,要不然有些版本的chrome可能解析不准确。

4. .clearfix:before, .clearfix:after { content: ""; display: table; } .clearfix:after { clear: both; } .clearfix { zoom: 1; } 注意如果用了浮动,一定要清除浮动,深刻理解浮动的作用很重要。 在层里调整文字的垂直位置可以用1.lineheight2.padding。 注意模块化布局,增加代码的重用性,尽量只给最里层的内容层设高度,一般如果高度不确定的都设置成自适应,这样有助于内容拉伸,也便于修改模块的高度。 大框架,尽量简单的分,比如左右结构最好就设置成左右,没必要搞成左中右。 尽量不要在html代码里插入img,把他设置在结构里,然后用css插入图片。

5. jquery编程习惯可以参考:1.把所有用$()选中的元素保存在前缀为$的js变量里2.每个函数结束都要用return false 结束掉函数。

6. 布局前,先构思好整个页面的结构,一个好的结构要便于维护,加载更快,布局时也更容易。布局时,稳扎稳打,一步步弄好后(既没有用hack,也没有兼容性问题了),再布局下一个板块。 布局一个带js效果的页面,要先把效果图上的页面效果,完整布局好后,再考虑加动作的事情。并且一定要分析好页面的结构,以最少的标签,以及标签要与所放内容对应来布局。

7. jquery代码一般要用$(document).ready(function(){}确保页面dom准备好了再进行js操作。 页面按钮点击时边框变红,点击完后边框变蓝可以用outline:none;解决。 有动画的层最好设置overflow:hidden以免层里面的内容在外层宽高改变时撑出层外。

8. 写js效果时一定要注意先分析好效果的行为,尽量用最简单通用性的代码。分析步骤可以是1.先把要实现的功能一步一步的写在纸上(即自然语言)2.再根据自然语言翻译成机器语言,用jquery写的代码一定要注意代码的可移植性、通用性。

9. a标签的四种状态的排序问题,可以用love hate 原则,即l(link)ov(visited)e h(hover)a(active)te,顺序写错可能出现点击后hover样式失效。

10. 一般情况下,建议尽量使用class,少用id。

11. css编码风格:多行式和一行式。 多行式:可读性强,但使行数过多,编辑需要来回拖动滚动条,影响开发速度,增大css文件大小。 一行式:可读性稍差,有效减小css文件行数,有利于提高开发速度,同时减小css文件大小。 一行式逐渐成为主流。

12. css sprite:即把多个甚至所有的图标都放在一张图里,然后用背景定位来控制图标的显示。 使用难点:图片如何排列能够紧凑,同时保证不会影响扩展性。 优点:减少http请求数,减小服务器压力。 缺点:影响开发速度,大大降低了可维护性。 是否使用取决于网站流量,对于流量不大的网站来说,css sprite带来的好处并不明显,而付出的代价是巨大的,不划算。

13. 定义有:hover伪类的样式时,多定义一个它的hover类,这样有助于js调用生成current的效果,如定义 btn{xxx},btn:hover,btn_hover{xxx}。

14. 低权重原则避免滥用子选择器(即类似#test span这样的选择符)。 css的选择符是有权重的,当不同选择符的样式设置有冲突时,会采用权重高的选择符设置的样式。 规则:html标签的权重是1,class的权重是10,id的权重是100.如“div em”的权重是1+1=2,“strong.demo”的权重是10+1=11,“#test.red”的权重是100+10=110. 如果css选择符权重相同,那么样式会遵循就近原则,哪个选择符最后定义,就采用哪个选择符的样式,与挂class名的先后顺序无关。 为了保证样式容易被覆盖,提供可维护性,css选择符需保证权重尽可能低。

15. 如果不确定模块的上下margin特别稳定,最好不要将它写到模块的类里,而是使用类的组合,单独为上下margin挂用于边距的原子类(例如mt10、mt20)。模块最好不要混用margintop和marginbottom,统一使用margintop或marginbottom。

16. 拆分模块技巧:1.模块与模块之间尽量不要包含相同的部分,如果有相同部分,应将它们提取出来,拆分成一个独立的模块。2.模块应在保证数量尽可能少的原则下,做到尽可能简单,以提高重用性。

17. 触发hasLayout一般情况用zoom:1就行了,但当用dhtml的时候,可能失效,这时用position:relative就行了。

18. 布局最基本的元素:块级元素(常见:div,p,form,ul,ol,li)和行内元素(span,strong,em)等。 块级元素:独占一行,默认情况下,其宽度自动填满父元素宽度(即使设置了宽带也会独占一行)。 行内元素:不会独占一行,相邻的行内元素会排列在同一行里,直到一行排不下,才会换行,其宽度随元素的内容而变化(没有上下边距,只有左右边距)。 可以用display:inline/block,切换。

19. ie6、7不支持display:inline-block,但行内元素可以用此属性触发hasLayout(是ie浏览器为解析盒模型而设计的一个专有属性,它的设计初衷是用于块级元素的,如果触发行内元素的hasLayout,就会让行内元素拥有一些块级元素的特性),从而模拟出inline-block的效果,然后再用*vertical-align控制文字的垂直对齐。但这样做用hack,所以不推荐。

20. 排列地板砖一样的布局的元素时,尽量用给每个元素用相同的类来实现,如果最左边的元素间距和右边的有区别可以给所有元素套一个父层,然后设置其右边距为负就行了。

21. 如果一个类中有些部分会经常变化,我们可以将这个经常变化的部分抽离出来单独设成一个类,然后用组合来实现最终样式。

22. 可以用(function(){})(),这样的匿名函数来避免全局变量冲突。让js不产生冲突,需要避免全局变量的泛滥,合理使用命名空间以及为代码添加必要的注释。可以定义一个全局对象,然后用其属性来定义全局变量,同时结合命名空间(即类似,GLOBAL.A.xx,和GLOBAL.B.xx之类的)。四、常见问题

1. ie只有a支持hover,并且注意a里要有href才行。

2. IE6中用了float:left之后导致margin-left双倍边距的BUG解决方法加上display:inline

3. 如果存在文字在层居中的问题,水平方向可以用text-align代替,垂直方向可以用line-height来控制,如果只是控制上边距,就用padding-top。这样可以避免在ie6上的某些不必要的错误。

4. ajax传参数时,汉字一定要用encodeURIComponent(string),编码一下,要不然可能变成乱码中文在ie6里。

5. ie6下select元素会以窗口形式显示的,这是ie6的一个bug,所以当你设置一层为相对或绝对定位时,select仍然会浮在那个层之上。 解决方法,用一个和那个层同样大小的iframe放在test下面,select上面,用iframe遮住select。

最后推荐两本书吧,上面很多技巧都是来自于里面《css权威指南》、《如何编写高质量的代码》,有些是实际工作中自己的一些心得,前辈的指点。还有一句话:“你对所学东西理解深度,决定了你所站的高度。”????

时间: 2024-08-30 10:45:40

前端工作了一段时间的经验总结的相关文章

已经工作了一段时间,谈下自己编程的能力,谈下自己的项目

编程的人,就是要扎实的基础哦,我现在已经工作了一段时间,感觉自己还很差的样子哦,但是,我会继续努力的哦.下面是我自己感觉的能力: 1.具备扎实的PHP开发基础,深入理解OOP编程思想,具有良好的编码习惯,: 2.熟悉HTML.CSS,熟练使用DIV+CSS进行页面布局: 3.熟练掌握Javascript,jQuery,AJAX技术: 4.熟悉MVC设计模式,Smarty模板技术: 5.熟练掌握Thinkphp开源框架的使用 6.熟练使用Mysql数据库,熟悉索引.视图.事务.了解Mysql数据库

我在阿里工作的这段时间里,都学到了哪些东西

来阿里也已经四个多月了,这段时间你学了很多东西,简单说起来,就是一个走出舒适区的过程,从一开始的新手入门,到逐渐熟悉业务和技术,再到慢慢的适应环境,胜任工作. 总体来说,这几个月还是学到了很多东西,感觉成长的很快,但同时工作的压力也非常的大.总体来说,归纳几个点吧. 第一点:就是阿里的技术. 大家都知道阿里的java技术栈,在业内基本上是可以排第一的,这也归功于阿里的技术发展十分迅速,所以底层的技术才会如此的先进. 阿里内部通常都会自己研发中间件,阿里也开源了一套中间件,但实际上内部又维护了好几

松口气,近一段时间的工作学习情况

公司的工作最近又小松口气,其实剩下的事情还不少,但是框架已经成型,接下来硬骨头还有很多,但是吃一个就少一个,这就不太怕了. 去年开始做这套类似Blue Print的图脚本的时候没想到虚幻能这么快就开放,项目推行类Blue Print时也就没有太激进,图本身的出发点是自然语言,而不是程序语言,带有不少Coroutine的概念,结果现在就有点被动了.自己做出的图表系统无论怎么看,从组织上和方便程度上都不能跟UE4相提并论,所以--现在压力略大. 不过坚持到最后能实施成这样子,而且得到了部分策划的支持

对自己近段时间工作状态的深刻反思

我想写这篇文章最重要的目的是记录这一段时间的工作学习状态,并对自己的心路历程有个总结,总的来说对这一段时间自己的表现还是不太满意的,所以还是需要进行深刻的反思,只有通过深刻地反思才能够有所收获,程序员总是有一种心理就是自己的想法总是最好的,所以在实际的工作中不免和同事或者领导有些意见上面的分歧,本来可能是一件正常的问题讨论,最后演变成争执,如果再控制不好自己的情绪,就会将一些带情绪的话,最后弄得大家心里都是不太舒服的,但往往事情过了之后又有些深深的懊恼,只是当时为什么不能Hold住自己,有句话说

专访黄勇:Java在未来的很长一段时间仍是主流(把老板当情人,把同事当小孩,把客户当病人)

url:http://www.csdn.net/article/2015-09-06/2825621 2015-09-06 13:18 摘要:本文采访了现任阿里巴巴公司系统架构师黄勇,从事近十年的JavaEE应用开发工作.采访内容包含了技术人生.IT职场.程序员.Java Web框架.研发管理.敏捷开发.开源等问题,希望你在技术这条路上不孤单. [编者按] 一个普通的技术人讲述不平凡的技术人生路.黄勇,在工作十年后,写了一本书:<架构探险——从零开始写Java Web框架>,这本书是给他十年技

分享工作中遇到的问题积累经验 事务日志太大导致insert不进数据

原文:分享工作中遇到的问题积累经验 事务日志太大导致insert不进数据 分享工作中遇到的问题积累经验 事务日志太大导致insert不进数据 今天开发找我,说数据库insert不进数据,叫我看一下 他发了一个截图给我 然后我登录上服务器,发现了可疑的地方,而且这个数据库之前有一段经历 在月初的时候这个数据库曾经置疑过,启动不起来 Could not redo log record (163041:116859:5), for transaction ID (0:-1175226963), on

前端工作流程自动化——Grunt/Gulp 自动化

前端工作流程自动化--Grunt/Gulp 自动化 Grunt/Gulp 都是node.js下的模块,简单来说是自动化任务运行器,两者都有社区及大量的插件支撑,在所有的自动化工具领域里,这两者是最好的前端自动化构建工具. 那么问题来了,Grunt和Gulp到底哪家强?在回答这个问题前,先给大家看一组下面的数据: 再看看实现同样功能的配置代码: 作者本人之前一直使用Grunt来做自动化构建的,在Gulp出来后,经过一段时间的试用感觉配置比Grunt方便多了,如果你两者还没接触过,本人推荐直接使用G

谈谈一个菜鸟写了一段时间的静态页面

前端,在公司尤其是在UI的眼里,貌似他们也会写简单的页面,所以很多时候一个菜鸟前端是要被取笑的.. 无妨,毕竟底气不足,也想谈谈作为一个菜鸟,眼中的前端是怎么样的,哪些难以实现. 这段时间收获并不大,因为页面较多,所以很多时候都是抱着完成任务的心态去工作,工作效率就不谈了,写完一个页面,组件类的,之后再有重复的,就是ctr+c 或者ctr+v的工作 技术副总监交了我一些规划似的方法,执行者为我.要组件化框架化,把相同的组件柜类,写样式,然后不同的样式再继续拓展这样前期就会比较难,后期就会比较简单

总结这段时间的所学

对于之前一段时间对项目最后的整改,没有太多的大改动,不过老大布置下来的任务:对spring-data-redis的理解,以写出相应的代码来操作redis数据库,还有就是写出来的操作页面,虽然是给公司内部测试人员来测试的,我还是写的很认真,前端后端都自己来,不会前端就找资料,用bootstrap后再去imooc网上自己找了相对的资料来自学,感觉还是不错的前端框架,毕竟是facebook的人员写出来的,还有一些使用的注意和bug还是要自己去查的. 后来就是发布项目了,发不到测试环境还有很多的注意事项