x特遣队高清百度云资源

WEB前端开发人员须知的常见浏览器兼容问题及解决技巧 - ThinkPHP框架
所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况。在大多数情况下,我们的需求是,无论用户用什么浏览器来查看我们的网站或者登陆我们的系统,都应该是统一的显示效果。所以浏览器的兼容性问题是前端开发人员经常会碰到和必须要解决的问题。
在学习浏览器兼容性之前,我想把前端开发人员划分为两类:
第一类是精确按照设计图开发的前端开发人员,可以说是精确到1px的,他们很容易就会发现设计图的不足,并且在很少的情况下会碰到浏览器的兼容性问题,而这些问题往往都是浏览器的bug,并且他们制作的页面后期易维护,代码重用问题少,可以说是比较牢固放心的代码。
第二类是基本按照设计图来开发的前端开发人员,很多细枝末节差距很大,不如间距,行高,图片位置等等经常会差几px。某种效果的实现也是反复调试得到,具体为什么出现这种效果还模模糊糊,整体布局十分脆弱。稍有改动就乱七八糟。代码为什么这么写还不知所以然。这类开发人员往往经常为兼容性问题所困。修改好了这个浏览器又乱了另一个浏览器。改来改去也毫无头绪。其实他们碰到的兼容性问题大部分不应该归咎于浏览器,而是他们的技术本身了。
这篇文章主要针对的是第一类,严谨型的开发人员,因此这里主要从浏览器解析差异的角度来分析兼容性问题
浏览器兼容问题一:不同浏览器的标签默认的外补丁和内补丁不同
问题症状:随便写几个标签,不加样式控制的情况下,各自的margin和padding差异较大。
碰到频率:100%
解决方案:css里*{margin:0;padding:0;}
备注:这个是最常见的也是最易解决的一个浏览器兼容性问题,几乎所有的css文件开头都会用通配符*来设置各个标签的内外补丁是0。
浏览器兼容问题二:块属性标签float后,又有横行的margin情况下,在ie6显示margin比设置的大
问题症状:常见症状是ie6中后面的一块被顶到下一行
碰到频率:90%(稍微复杂点的页面都会碰到,float布局最常见的浏览器兼容问题)
解决方案:在float的标签样式控制中加入display:将其转化为行内属性
备注:我们最常用的就是div+css布局了,而div就是一个典型的块属性标签,横向布局的时候我们通常都是用divfloat实现的,横向的间距设置如果用margin实现,这就是一个必然会碰到的兼容性问题。
浏览器兼容问题三:设置较小高度标签(一般小于10px),在ie6,ie7,遨游中高度超出自己设置高度
问题症状:ie6、7和遨游里这个标签的高度不受控制,超出自己设置的高度
碰到频率:60%
解决方案:给超出高度的标签设置overflow:或者设置行高line-height小于你设置的高度。
备注:这种情况一般出现在我们设置小圆角背景的标签里。出现这个问题的原因是ie8之前的浏览器都会给标签一个最小默认的行高的高度。即使你的标签是空的,这个标签的高度还是会达到默认的行高。
浏览器兼容问题四:行内属性标签,设置display:block后采用float布局,又有横行的margin的情况,ie6间距bug(类似第二种)
问题症状:ie6里的间距比超过设置的间距
碰到几率:20%
解决方案:在display:后面加入display:display:
备注:行内属性标签,为了设置宽高,我们需要设置display:(除了input标签比较特殊)。在用float布局并有横向的margin后,在ie6下,他就具有了块属性float后的横向margin的bug。不过因为它本身就是行内属性标签,所以我们再加上display:inline的话,它的高宽就不可设了。这时候我们还需要在display:inline后面加入display:talbe。
浏览器兼容问题五:图片默认有间距
问题症状:几个img标签放在一起的时候,有些浏览器会有默认的间距,加了问题一中提到的通配符也不起作用。
碰到几率:20%
解决方案:使用float属性为img布局
备注:因为img标签是行内属性标签,所以只要不超出容器宽度,img标签都会排在一行里,但是部分浏览器的img标签之间会有个间距。去掉这个间距使用float是正道。
浏览器兼容问题六:标签最低高度设置min-height不兼容
问题症状:因为min-height本身就是一个不兼容的css属性,所以设置min-height时不能很好的被各个浏览器兼容
碰到几率:5%
解决方案:如果我们要设置一个标签的最小高度200px,需要进行的设置为:{min-height:200height:auto!height:200overflow:}
备注:在B/S系统前端开时,有很多情况下我们又这种需求。当内容小于一个值(如300px)时。容器的高度为300px;当内容高度大于这个值时,容器高度被撑高,而不是出现滚动条。这时候我们就会面临这个兼容性问题。
浏览器兼容问题七:透明度的兼容css设置
方法是:每写一小段代码(布局中的一行或者一块)我们都要在不同的浏览器中看是否兼容,当然熟练到一定的程度就没这么麻烦了。建议经常会碰到兼容性问题的新手使用。很多兼容性问题都是因为浏览器对标签的默认属性解析不同造成的,只要我们稍加设置都能轻松地解决这些兼容问题。如果我们熟悉标签的默认属性的话,就能很好的理解为什么会出现兼容问题以及怎么去解决这些兼容问题。
/*csshack*/
我很少使用hacker的,可能是个人习惯吧,我不喜欢写的代码ie不兼容,然后用hack来解决。不过hacker还是非常好用的。
使用hacker我可以吧浏览器分为3类:ie6;ie7和遨游;其他(ie8chromeffsafariopera等)
ie6认识的hacker是下划线_和星号*
ie7遨游认识的hacker是星号*(包括上面问题6中的!important也算是hack的一种。不过实用性较小。)
比如这样一个css设置height:300*height:200_height:100
ie6浏览器在读到height:300px的时候会认为高时300px;继续往下读,他也认识*heihgt,所以当ie6读到*height:200px的时候会覆盖掉前一条的相冲突设置,认为高度是200px。继续往下读,ie6还认识_height,所以他又会覆盖掉200px高的设置,把高度设置为100px;
ie7和遨游也是一样的从高度300px的设置往下读。当它们读到*height200px的时候就停下了,因为它们不认识_height。所以它们会把高度解析为200px;
剩下的浏览器只认识第一个height:300所以他们会把高度解析为300px。
因为优先级相同且想冲突的属性设置后一个会覆盖掉前一个,所以书写的次序是很重要的。
最后说一下,严谨型的开发人员会有一套合适自己的RESET.CSS。结合自己的经验尽量规避容易出现不兼容的问题。以减少hack的使用,尽量符合W3C的标准。
ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。2017前端框架何去何从【web前端开发吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:45,348贴子:
2017前端框架何去何从收藏
这是想说什么
登录百度帐号推荐应用2014年5个最流行前端框架对比 - WEB前端 - 伯乐在线
& 2014年5个最流行前端框架对比
当今时代众多CSS的前端框架纷涌而至,但真正的优秀的却屈指可数。
在这篇文章中我们将对我认为最好的五个框架进行比较,每个框架都有自己优缺点和特定的应用领域,这允许你根据特定项目的需求选择合适的框架。比如,如果你的项目比较简单,你就不需要复杂的框架,此外,许多选项是模块化的,这允许你仅使用你需要的组件,或者混合使用不同框架的组件。
我们要讨论的框架都是基于其在github上的人气展示的,首先说最流行的,当然是:Bootstrap。
(注意:下面的一些信息在未来的几周和几月后就过时了,如:GitHub 上的评分(Stars)和版本数,因此如果你是在这篇文章发布很久以后阅读的话,你需要留意这一点。此外,还要注意框架大小是否将必要的CSS和JS文件最小化。)
1. Bootstrap
在当今流行的各种框架中是无可争议的老大。鉴于其每天仍在增长的巨大人气,可以肯定,这个美妙的工具绝对不会让你失望,它也不会在你成功建立网站前就离你而去。
发布: 2011
当前版本: 3.3.1
人气: 在Github上有75,000+ stars
描述: “Bootstrap是最流行的的 HTML, CSS和 JavaScript 响应式开发框架 ,web上开发的第一个移动项目.”
核心概念/原则:
和移动优先
框架大小: 145 KB
响应式: Yes
模块化: Yes
开始模板/布局: Yes
Halflings set
附加/插件: 没有捆绑插件,但许多第三方插件可用.
独特的组件: Jumbotron
文档: 良好
定制: 基本的GUI定制器。不幸的是,你需要手动输入的颜色值,因为没有可用的颜色选择器。
浏览器支持: Firefox, Chrome, Safari, IE8+ (你需要
Notes on Bootstrap
Bootstrap 的主要优点是它非常流行。从技术上讲,它并不一定比这次列出来的其他框架好,但它提供的资源(文章和教程、第三方插件和扩展、主题开发者等等)比其他四个框架的总和还要多。简而言之,Bootstrap无处不在。这是人们继续选择它的主要原因。
(注意:“独特的组件”的意思是,相比这里提到的其他框架是独一无二的。)
2. Foundation by ZURB
Foundation是这几个框架中第二大的,在像ZURB一样实力雄厚的公司支持下,这个框架确实很强大,是的,就是foundation。毕竟, Foundation已经在很多大型网站上投入使用,包括 Facebook, Mozilla, Ebay, Yahoo!和国家地理等等。
创建者: ZURB
发布: 2011
当前版本:5.4.7
人气: 在Github上有18,000+ stars
描述: “世界上最优秀的响应式前端框架”
核心概念/原则:
、手机优先、语义的
框架大小: 326KB
响应式: Yes
模块化: Yes
开始模板/布局: Yes
附加/插件: yes
独特的组件: Icon Bar, Clearing Lightbox, Flex Video, Keystrokes, Joyride, Pricing Tables
文档: 良好,还有许多额外的资源是可用的。
定制: 没有GUI编辑器,只能手工定制。
浏览器支持: Chrome, Firefox, Safari, IE9+; iOS, Android, Windows Phone 7+
Notes on Foundation
Foundation 是一个提供业务支持、培训和咨询真正专业的框架。它还提供了很多资源帮助你更快和更容易学习和使用框架。
3. Semantic UI
经过多年的努力,致力于能够以更语义化的方式构建网站。它使用自然语言的原则,使代码更可读,更容易理解。
当前版本:1.2.0
人气: 在Github上有12,900+ stars
描述: “基于自然语言有效原则的UI组件框架”
核心概念/原则: 语义,标签的矛盾性、响应式
框架大小: 552KB
预处理器: Less
响应式: Yes
模块化: Yes
开始模板/布局: No
图标设置: Font Awesome
附加/插件: yes
独特的组件: Divider, Flag, Rail, Reveal, Step, Advertisement, Card, Feed, Item, Statistic, Dimmer, Rating, Shape.
文档: 非常好。Semantic提供了一个很好的组织文档,还有一个提供入门指南,定制和创建主题单独的网站,。
定制: 没有GUI定制器,只能手工定制。
浏览器支持:Firefox, Chrome, Safari, IE10+ (IE9 with browser prefix only), Android 4, Blackberry 10
Notes on Semantic UI
Semantic 是这里讨论的最创新和功能最全面的框架。在框架的总体结构和命名约定方面,也以清晰的逻辑和语义类超过了别的框架。
4. Pure by Yahoo!
是一个轻量级的、模块化的框架,以纯CSS编写,它包括很多组件,你可以根据需要联合或独立使用它们。
发布: 2013
当前版本: 0.5.0
人气: 在Github上有9,900+ stars
描述: “您可以在每一个web项目中使用的一组小的和响应式的CSS模块”
核心概念/原则:,极简的.
框架大小: 18 KB
响应式: Yes
模块化: Yes
开始模板/布局: Yes
图标设置: 没有,可以使用Font Awesome替代
附加/插件: None
独特的组件:None
文档: 良好
定制: 基本的GUI定制器。
浏览器支持:Firefox的最新版本, Chrome, S IE7+; iOS 6.x, 7.x; Android 4.x
Notes on Pure
Pure只提供一个基本的风格,使你的项目有一个干净的开始。对于工作中不需要一个全功能的框架只需要有特定的组件的人来说是最理想的。
5. UIkit by YOOtheme
是一个简洁的框架,它易于使用,易于定制组件。虽然它不像其它竞争对手一样受欢迎,但它提供了相同的功能和质量。
发布: 2013
当前版本: 2.13.1
人气: 在Github上有3,800+ stars
描述: “一个轻量级的和模块化的前端框架,用于快速开发和功能强大的web接口。”
核心概念/原则:RWD, 手机优先.
Less, Sass
响应式: Yes
模块化: Yes
开始模板/布局: Yes
图标设置: Font Awesome
附加/插件: Yes
独特的组件: Article, Flex, Cover, HTML Editor
文档: 良好
定制: 优秀的GUI定制器。
浏览器支持: Chrome, Firefox, Safari, IE9+
Notes on UIkit
UIkit已经成功的在许多WordPress 主题上使用,它提供了一个灵活、强大的定制化机制,也可以通过GUI定制器进行手动操作。
哪一个框架更适合你?
最后,在选择合适的框架方面,让我给你一些意见,这里有一些重要的事情需要注意:
这个框架有足够的人气吗?更大的普及意味着更多的人参与这个项目,因此,会有更多来自社区的教程和文章,更多真实的案例/网站,更多第三方扩展,与相关web开发产品更好地结合。巨大的人气也意味着框架不太会过时,毕竟一个有着巨大群体使用的框架是不太可能被放弃的。
这个框架还在持续积极开发吗?一个好的框架是需要结合最新的网络技术不断升级的,特别是关于移动方面的技术。
这个框架已经成熟了吗?如果一个框架尚未在实际项目和测试中使用,那么你可以随意玩,但依赖它做专业项目就不太明智了。
这个框架提供良好的文档吗?良好的文档总是能为你的学习过程提供便利。
这个框架的特异性程度有多高?这里的要点是,相比一个特异程度高的框架,使用一个更通用的框架要容易得多。在大多数情况下,最好选择一个最小风格的框架,因为它更容易定制。相比重写或覆盖现有的规则,添加新的CSS规则是更方便和高效的流程。另外,如果你在现有框架的头部添加新规则,那么你将可能会留下一些不被使用的规则,这将增加不必要的CSS文件的大小。
最后,如果你仍然不确定,可以采用混搭方式。如果一个特定的框架不满足您的需要,您可以从两个或两个以上的项目来混合组件。例如,你可以从一个框架得到较小的CSS样式基础从另一个框架得到一个优秀的栅格系统,再从第三个框架获得更复杂的组件。模块化万岁!:)
你的想法是什么呢?这些框架有什么优点和缺点是这里没有提到的呢?你认为还有其他问题是应该被列出来的吗?在下面的讨论中可以让我们获悉。
关于作者:
可能感兴趣的话题
关于伯乐前端
伯乐前端分享Web前端开发,包括JavaScript,CSS和HTML5开发技术,前端相关的行业动态。
新浪微博:
推荐微信号
(加好友请注明来意)
– 好的话题、有启发的回复、值得信赖的圈子
– 分享和发现有价值的内容与观点
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 翻译传播优秀的外文文章
– 国内外的精选文章
– UI,网页,交互和用户体验
– 专注iOS技术分享
– 专注Android技术分享
– JavaScript, HTML5, CSS
– 专注Java技术分享
– 专注Python技术分享
& 2017 伯乐在线问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
项目中同时使用了jQuery和zepto这两种框架,注意到一段js代码如下:
function slideToggleMenu() {
jQuery(function ($) {
$("#showMenu,.kelelogo").unbind("click");
$("#showMenu,.kelelogo").click(function (e) {
e.preventDefault() || e.stopPropagation();
$("#mainMenu").slideToggle();
前辈解释说这里的$符代表了jQuery,而页面中其余部分的$都代表zepto,请问以下这种结构怎么理解?
jQuery(function($){});
我只知道(function($){}(jQuery))的形式可以消除$符的冲突
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
jQuery(function($){
//把$作为jQuery的别名, 只有在这函数里有效
jQuery 本身就有考虑到多库共存, 最简单就是用var jq = jQuery.noConflict();
如果是插件, 就用
(function($){
}(jQuery));
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
首先要清楚形参和实参的概念。然后要知道jQuery这个库里定义了一个函数,名叫jQuery。你展示的这段代码就是调用了一次jQuery函数,参数是一个回调函数。这样调用jQuery的话,jQuery就会稍后在执行这个回调函数的时候,传入一个参数,值就是jQuery本身。因此在这个回调函数中,第一个参数就是jQuery本身,也就解决了冲突。如果你明白了形参的概念,你就会明白这是怎么工作的。并且也会明白为什么下面的代码是对的:
jQuery(function (a) {
// 这里的a就是jQuery
a("#shouMenu, .kelelogo").unbind("click");
分享到微博?
你好!看起来你挺喜欢这个内容,但是你还没有注册帐号。 当你创建了帐号,我们能准确地追踪你关注的问题,在有新答案或内容的时候收到网页和邮件通知。还能直接向作者咨询更多细节。如果上面的内容有帮助,记得点赞 (????)? 表示感谢。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
扫扫下载 App突破瓶颈解决web前端工程师jquery框架与mootools以及prototype并存
& &这个问题困扰半月之久了 ,跑遍这个搜索引擎界(度娘 &谷歌 &黑马) 至于搞定了 废话不说直接贴源码:
& &作为前端&jquery框架与mootools并存是你做好用户体验,以及交换设计,构建必不可少的!
&script src=&prototype.js&&&/script&
&script src=&jquery.js&&&/script&
&script src=&mootloos.js&&&/script&
jQuery.noConflict();
// Use jQuery via jQuery(...)
jQuery(document).ready(function(){
jQuery(&div&).hide();
// Use Prototype with $(...), etc.
$('someid').style.display = 'none';
&body&&/body&
---------------------------------------------------------------------------------------------------
方式二:&html&
&script src=&prototype.js&&&/script&
&script src=&jquery.js&&&/script&
&script src=&mootloos.js&&&/script&
var $j = jQuery.noConflict();
// Use jQuery via $j(...)
$j(document).ready(function(){
$j(&div&).hide();
// Use Prototype with $(...), etc.
$('someid').style.display = 'none';
&body&&/body&
---------------------------------------------------------------------------------------------------
&script src=&prototype.js&&&/script&
&script src=&jquery.js&&&/script&
&script src=&mootloos.js&&&/script&
jQuery.noConflict();
// Put all your code in your document ready area
jQuery(document).ready(function($){
// Do jQuery stuff using $
$(&div&).hide();
// Use Prototype with $(...), etc.
$('someid').style.display = 'none';
&body&&/body&
话说&prototype有的好多变量,mootools都有,我以及果断扔掉prototype了,自己感觉 &感觉
这。。。 感觉没多大必要吧
--- 共有 1 条评论 ---
自己跑着玩可以.
若项目里面出现, 说明出现不仅仅是库共存的问题
感觉没有太大的必要,统一就好,要不然很麻烦的
人家都求少点JS, 你到好, 几个都用上....
实际项目中,使用这个方法太SB了,原因有三:
1. 使用过多的js库,必须导致混乱,学习成本增加,维护成本太高
2. 加载了太多文件,对性能而言就是噩梦
3. 误导一些初学者,metools, prototype这两个js库真的没必要学了。
引用来自“月影又无痕”的答案 实际项目中,使用这个方法太SB了,原因有三:
1. 使用过多的js库,必须导致混乱,学习成本增加,维护成本太高
2. 加载了太多文件,对性能而言就是噩梦
3. 误导一些初学者,metools, prototype这两个js库真的没必要学了。 山炮 不懂 勿嘭 & &&
LZSB,我是主管就先炒掉你,乌七八糟的还以为自己挺牛
mootools = jQuery + prototype
引用来自“v韦德”的答案LZSB,我是主管就先炒掉你,乌七八糟的还以为自己挺牛不懂的不是更sb &js框架优化 sb & &合并用的 不懂 滚蛋 ..... & 这个sb
--- 共有 2 条评论 ---
我没本事只能优化两个js框架 ,你可以自己去写没必要浪费时间看这个 评论这个 谢谢
呵呵,说一次就行了,说这么多个sb是冗余了吖,下次记得优化一下吖,可见代码质量。。。
你是山炮,你全家才是山炮
--- 共有 2 条评论 ---
其实你是畜牲都不如是吧,这个是你先动粗口,自讨的
你m没教你做人也应该叫你怎么做畜生吧? 做人不要骂全家,不要过分了 !!!!

我要回帖

 

随机推荐