[原创]前端工作了一段时间经验总结,献给做前端的同学

一,编辑器的选择,推荐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。

转载于:https://www.cnblogs.com/qiaoxinming/p/8414770.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/428162.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Xml的使用

关于xml的学习入门,下面的就足够了 话不多说,先上图 主要注释已经附在了代码里: 这是独立执行的xml文件,未关联css和XSL文件,只会显示出一棵数据树。 至于详细的使用,我都附在了代码注释里,可以…

python工厂模式 理解_浅谈Python设计模式 - 抽象工厂模式

声明:本系列文章主要参考《精通Python设计模式》一书,并且参考一些资料,结合自己的一些看法来总结而来。在上一篇我们对工厂模式中的普通工厂模式有了一定的了解,其实抽象工作就是 表示针对工厂方法进一步抽象化,用于工…

RESTful API 设计指南

摘自:http://www.ruanyifeng.com/blog/2014/05/restful_api http://www.ruanyifeng.com/blog/2011/09/restful.html 网络应用程序,分为前端和后端两个部分。当前的发展趋势,就是前端设备层出不穷(手机、平板、桌面电脑、其他专用设备......&…

C++中的位运算

最近在刷天梯题的时候&#xff0c;发现了<<和>>这两个运算&#xff0c;刚见到的时候简直一脸懵逼&#xff0c;觉得自己很菜&#xff0c;经过自己查找资料&#xff0c;发现原来这两个小东西是位运算符呀。为加深自己的印象&#xff0c;总结如下: 话不多说&#xff0…

node 更新_被创造者嫌弃,Node.js 如何应对来自 Deno 的挑战

(给前端大全加星标&#xff0c;提升前端技能)转自&#xff1a;OSC开源社区JavaScript 运行时 Node.js 于日前更新到了 15 版本&#xff0c;该软件自发布至今已走过了 11 年的岁月。但在今年 5 月&#xff0c;其竞争对手 Deno 也发布了 1.0 版本。Deno 是一个 Javascript/TypeS…

Python模块及其导入

一、模块 1、模块的定义&#xff1a; 为了编写可维护的代码&#xff0c;我们把很多函数分组&#xff0c;分别放到不同的文件里&#xff0c;这样&#xff0c;每个文件包含的代码就相对较少&#xff0c; 很多编程语言都采用这种组织代码的方式。在Python中&#xff0c;一个.py文件…

L1-046 整除光棍 (20 分)

这道题的解题过程真是一波三折&#xff0c;也真是发现人外有人&#xff0c;天外有天&#xff0c;好多神人真是。 原题如下图&#xff0c;也可点击这个链接到原题自己测试光棍原题链接: 一开始做的时候的想法&#xff1a;so easy&#xff0c;虽然看到了题目中提示s可能超级大…

python内存模型_内存篇3:CPython的内存管理架构-L2-块

本篇用到了C/C的内存对齐的基础知识&#xff0c;我已经假定你有C/C内存管理的相关基础。我们在前一篇的流程图中留下了两个黑箱子,会涉及到内存模型第一层以上的其他话题&#xff0c;回顾下面关于第一层面向类型的内存API流程执行图。本篇要讨论其中一个黑箱就是何为物&#xf…

软件测试_入行

软件测试&#xff0c;入行太简单了。1. 看一本软件测试理论书籍 。2. 看一点数据库知识&#xff08;增删改查&#xff09;。3. 看一点Linux常用命令&#xff08;30个够了&#xff09;。4. 了解几个行业内容的测试工具&#xff08;如Jira Zentao LR Jmeter Fiddler 等&#xff0…

L1-056 猜数字 (20 分)

这道题做法倒是多样化&#xff0c;可以使用结构体&#xff0c;也可以使用多个数组做&#xff0c;不过为了复习一下好久没用过的结构体&#xff0c;我是用结构体做的。 这道题可以用来复习一下一些之前的简单的知识点&#xff0c;至于思路的话我相信应该都是有的。 这里就不发运…

uci数据集_数据分析找不到数据集?快来看这个盘点

前言数据集相对于机器学习而言是至关重要的&#xff0c;可以说好的数据集是成功的一半。但是&#xff0c;我们很难找到一个特定的数据集来解决各种机器学习问题&#xff0c;甚至是进行实验。因而找到合适的数据集是一件很难的事情&#xff0c;接下来我们就盘点一下一些优质的数…

git保留两个repo的commit并进行合并

以往的合并时首先要删除repo的.git文件夹&#xff0c;然后重新add-commit-push。带来的问题是会丢失某一个仓库的提交信息&#xff0c;不利于时光倒退。经过摸索终于实现了保留两个仓库提交信息的合并方法。介绍如下&#xff1a; 比如要将DownloadPicsBySeleniumAndPhantomJS这…

安利一款编辑神器——Markdown

经常使用word或者那些浏览器自带编辑器的你可能会和我有时候遇到一样的烦恼&#xff0c;调整格式可真是不容易&#xff0c;如果你也有同样的烦恼&#xff0c;不妨可以试一下Markdown&#xff0c;值得你拥有哈。 Markdown的使用 1.安装使用篇 a.首先安装软件&#xff0c;然后创…

python对图片颜色校正_使用Python PIL更改图像色调

Using Python PIL, Im trying to adjust the hue of a given image.Im not very comfortable with the jargon of graphics, so what I mean by “adjusting hue” is doing the Photoshop operation called “Hue/saturation”: this is to change the color of the image uni…

自动生成业务单据流水号方案

我们在开发管理软件的时候,常常遇到流水号(单据号、登记号)自动生成、控制和管理的问题。由于流水号具有唯一性和连续性的特点,在实际开发过程中若处理不好,会产生流水号重复及断号的问题。特别是多个并发用户同时保存一张同样的业务单据时&#xff0c;系统会返回多个相同的流水…

IDEA快捷键的使用成就手速之旅(要想手速变得快,快捷练习必须刚)

IDEA快捷键的使用 &#xff08;持续更新&#xff09; 1.必备合集 a.Ctrl CtrlF 文本代码查找神器呀简直CrtlR 文本代码替换CtrlZ 撤销&#xff08;基操基操&#xff09;CtrlY 删除当前行或者选中行 b.Shirt c.CtrlShirt d.Ctrlalt e.altShirt f.CtrlShirtalt 2.慢慢积…

一个项目部署多个节点会导致锁失效么_Redis分布式锁

分布式锁在很多场景中是非常有用的原语&#xff0c; 不同的进程必须以独占资源的方式实现资源共享就是一个典型的例子。有很多分布式锁的库和描述怎么实现分布式锁管理器(DLM)的博客,但是每个库的实现方式都不太一样&#xff0c;很多库的实现方式为了简单降低了可靠性&#xff…

GIT_服务器与本地环境构建

linux安装git包 很多yum源上自动安装的git版本为1.7&#xff0c;这里手动编译重新安装1&#xff1a;安装依赖包yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker2&#xff1a;删除已有的gityum remove git3&#xff1a…

Maven项目的基本创建步骤

先来个自己笔记的图片备忘一下&#xff0c;如果以后有时间再慢慢更新详细。

visualvm远程监控jvm_大型企业JVM实战:优化及面试热点分析

本次课程的笔记非常多&#xff0c;而且内容已经整理了好几个小时了&#xff0c;接着下来内容也会更多&#xff0c;也是大型企业JVM性能调优实战的最后一节&#xff0c;希望对你有帮助&#xff01;04&#xff1a;JVM性能监控与故障处理工具 大型企业JVM性能调优实战之总结17&…