UC浏览器对CSS存在一些“特殊照顾”

合集下载

CSS在不同浏览器使用不同效果概览

CSS在不同浏览器使用不同效果概览

1.css在不同浏览器下显示效果不同firefox和IE对某些css样式的认定有不少区别,包括:ul和ol的默认padding值是不一样的,在Firefox中,padding-left默认值为40px左右,而IE中为0,一般设置ul{margin:0;padding:0;}就能解决大部分问题对字体大小small的定义不同,Firefox中为13px,而IE中为16px,差别挺大,也只能设置为14px 了事;(暂时没有发现)并列排列的多个元素(图片或者链接)的代码中的空格和回车会造成元素之间的间隙,而在firefox中和在IE中显示是不一样的,IE显示空格(约8px)、firefox显示空格(约4px)对不规范代码的兼容情况不同,IE中漏掉的关闭符号对显示不造成影响,而firefox中就会形成错乱的布局,而在ie中用到的padding和margin的负值都会被firefox解析为0,易造成布局的混乱;(我觉得好像负值在firefox中也是有显示的)firefox对于长高尺寸的严格解析会造成与设置不匹配(超出)的图片或表格将原设置div撑大;!important属性可以在除IE浏览器的其他浏览器中起作用,因此有人利用这种差别来令一个CSS兼容多种浏览器;未定义id的div,在IE中会与div属性中的其他设置有关,而在firefox中的位置会于div在文件中位置有关,紧随前一个div出现……(有待尝试)设置为float的div在ie下设置的margin会加倍的,特别是margin-left,这是ie6的一个bug。

解决的方法是在这个div里面加上display:inline;如果是动态地添加内容,高度最好不要定义。

浏览器可以自动伸缩,然而如果是静态的内容,高度最好定好。

(似乎有时候不会自动往下撑开,不知道具体怎么回事)FF: div 设置margin-left, margin-right 为auto 时已经居中, IE 不行。

CSS浏览器兼容性处理解决不同浏览器的样式差异

CSS浏览器兼容性处理解决不同浏览器的样式差异

CSS浏览器兼容性处理解决不同浏览器的样式差异CSS浏览器兼容性处理:解决不同浏览器的样式差异在网页设计与开发过程中,我们经常会遇到在不同浏览器下显示效果不一致的情况。

这是由于不同浏览器对CSS样式的解析和支持程度不同导致的。

为了解决这些浏览器的兼容性问题,我们需要采取一些措施,使得网页在各种浏览器下都能够达到一致的效果。

本文将介绍一些常见的CSS兼容性处理技巧,帮助您解决不同浏览器的样式差异。

一、CSS hack技巧1. 选择器优先级在CSS中,选择器的优先级决定了哪个样式会被浏览器应用。

可以通过提高选择器的优先级来确保样式被正确地应用。

一般来说,ID选择器的优先级最高,紧接着是类选择器和属性选择器,最后是标签选择器。

2. 浏览器前缀某些CSS属性在不同浏览器下需要添加前缀才能得到正确的效果,例如-webkit、-moz和-o等。

通过添加不同浏览器的前缀,可以确保样式在各个浏览器中一致地显示。

可以使用CSS预处理器如Sass或Less来自动生成带有前缀的代码。

3. 条件注释条件注释是一种只有特定浏览器会解析的代码,通过条件注释可以为不同浏览器提供不同的样式。

例如:<!--[if IE]>xxx<![endif]--> 可以仅在IE浏览器中应用xxx样式,从而解决IE浏览器的兼容性问题。

二、CSS兼容性库1. Normalize.cssNormalize.css是一个跨浏览器的CSS文件,它几乎可以为所有的HTML元素提供一致的默认样式。

通过引入Normalize.css,可以统一各个浏览器的默认样式,从而避免不同浏览器之间的样式差异。

2. AutoprefixerAutoprefixer是一个基于CSS规范的自动添加浏览器前缀的工具。

它可以根据你设置的浏览器兼容范围自动添加所需的前缀,大大简化了处理浏览器兼容性的工作。

三、媒体查询1. 响应式设计媒体查询是CSS3的一个重要特性,它可以根据不同的设备或屏幕尺寸应用不同的样式,从而实现响应式设计。

解决CSS浏览器兼容性问题的4种方案

解决CSS浏览器兼容性问题的4种方案

解决CSS浏览器兼容性问题的4种⽅案前端是⼀个苦逼的职业,不仅因为技术更新快,⽽且要会的东西实在太多了,更让⼈头疼的是,还要⾯临各种适配、兼容性问题。

为什么会有浏览器兼容性问题?还不是因为浏览器⼚商太多了!Chrome,Frirefox,Safari,Edge,IE6,IE7,IE8,IE9...360安全浏览器,qq浏览器,世界之窗,TT,搜狗,opera,maxthon(傲游)……关键是不同⼚商,甚⾄同⼀⼚商不同版本,对同⼀段CSS的解析效果也不⼀致,这就导致了页⾯显⽰效果不统⼀,也就带来了兼容性问题。

多么希望Chrome能够⼀统江湖啊~~⽬前各浏览器市场份额浏览器这么多,我们也不可能每⼀个都要去兼容,对于⽤户量⼀般的产品,把主流浏览器的适配做好,就已经很不错啦。

根据百度流量研究院提供的2018年8⽉⾄2019年2⽉的数据可以看出,Chrome占⽐46.28%,IE系仍然占有很⼤⽐重,任重⽽道远啊~CSS浏览器兼容性问题的解决思路和⽅案今天,不想去关注太多细节问题,⽐如那个css样式需要我们去兼容,⽽是想讨论⼀下⼤的解决思路,主要包括4个⽅⾯,浏览器CSS样式初始化、浏览器私有属性,CSS hack语法和⾃动化插件。

1. 浏览器CSS样式初始化由于每个浏览器的css默认样式不尽相同,所以最简单有效的⽅式就是对其进⾏初始化,相信很多朋友都写过这样的代码,在所有CSS开始前,先把marin和padding都设为0,以防不同浏览器的显⽰效果不⼀样。

*{margin: 0;padding: 0;}关于浏览器CSS样式初始化,经验不丰富的话,可能也不知道该初始化什么,这⾥给⼤家推荐⼀个库,Normalize.css,github star数量接近3.4万,选取展⽰其中⼏个样式设置,如下html {line-height: 1.15; /* Correct the line height in all browsers */-webkit-text-size-adjust: 100%; /* Prevent adjustments of font size after orientation changes in iOS. */}body {margin: 0;}a {background-color: transparent; /* Remove the gray background on active links in IE 10. */}img {border-style: none; /* Remove the border on images inside links in IE 10. */}通过CSS样式初始化,相信能解决不少常规的兼容性问题,接下来再看看浏览器的私有属性。

CSS浏览器兼容性与解决方法

CSS浏览器兼容性与解决方法

CSS浏览器兼容性与解决⽅法⼀.什么是浏览器兼容性问题?所谓的浏览器兼容性问题,是指不同的浏览器对同⼀段代码有不同的解析,造成页⾯显⽰效果不统⼀的情况;⽽造成浏览器兼容问题的根本原因,是浏览器的内核不同导致的。

认识浏览器内核浏览器类型内核 js引擎IE Trident jscriptFirefox Gecko TraceMonkeyChrome WebKit, Blink V8Safari WebKit SquirrelFish ExtremeOpera Presto Carakancss浏览器兼容性问题的解决思路和⽅案1.使⽤css Hack解决兼容性问题浏览器在读取CSS代码的时候可能会遇到⼀些⽆法识别的代码,造成这种现象的原因通常有两种:1. 代码本⾝有问题,如: bg:red ,bg并不是⼀个有效的css属性2. 代码没问题,但浏览器的内核不能识别,如: box-sizing:border-box ,这句代码本⾝没有问题,但由于使⽤的是CSS3的属性box-sizing ,会造成在⼀些低版本内核的浏览器中⽆法识别。

总之,当浏览器遇到这些⽆法识别的代码时,它会怎么做呢?和java、C#等后端语⾔不同,浏览器不会中⽌程序的执⾏,它会⽴即跳过这些⽆法识别的代码,就当作没看见⼀样,继续执⾏后⾯的代码。

就向下⾯这个例⼦⼀样:.main{color1 : red; /*这句代码⽆法被浏览器识别,浏览器就当这句代码不存在*/color: green;}浏览器⽅⾯,除了拥有这种特殊的错误处理⽅式之外,不同的浏览器内核,以及浏览器内核的不同版本,它们同时拥有⾃⼰独特的CSS属性,这些属性在CSS标准之外。

造成这种现象的原因是⼀些历史遗留问题。

⽐如,webkit内核的浏览器能够识别-webkit-box-sizing:border-box; ,在没有box-sizing的年代,它就是通过-webkit-box-sizing 来设置盒⼦宽⾼影响范围的,但其他内核的浏览器是⽆法识别该属性的。

CSS样式兼容性的检测与处理方法

CSS样式兼容性的检测与处理方法

CSS样式兼容性的检测与处理方法一.CSS样式兼容性的检测与处理方法CSS(层叠样式表)是一种用来描述网页样式的语言,可以控制网页的布局、字体、颜色等各个方面。

然而,由于不同浏览器或设备对CSS的支持度不同,会导致网页在不同环境下显示效果不一致或出现兼容性问题。

为了解决这些问题,本文将介绍CSS样式兼容性的检测与处理方法。

一、兼容性检测方法1.使用caniuse网站:caniuse是一个在线工具,可以查询不同属性或特性在各个浏览器中的支持情况。

根据查询结果可以了解哪些属性需要特殊处理或替代方案。

2.使用CSS兼容性前缀:不同浏览器支持不同的CSS前缀,例如-moz-、-webkit-、-o-等。

通过为CSS属性添加对应的前缀,可以使其在不同浏览器中得到正确的解析和渲染。

3.使用JavaScript检测:通过JavaScript的能力检测方法,可以判断当前浏览器是否支持某个CSS属性或特性。

根据判断结果,可以采取相应的处理方法。

二、兼容性处理方法1.渐进增强:该方法要求先考虑最基本的功能,在此基础上不断增加更高级的特性。

通过为不同浏览器提供不同的样式,确保网页在各个环境下都能正常显示。

这种方法强调向下兼容,适合对低版本浏览器提供支持的场景。

2.优雅降级:与渐进增强相反,优雅降级是先构建完整的功能,然后逐步去除一些高级特性,以适应不同浏览器或设备的限制。

这种方法强调向上兼容,适合先为高级浏览器提供更好的用户体验的场景。

3.使用CSS Hack:CSS Hack是指通过编写特定的CSS代码,以便只在特定浏览器中生效或不生效。

例如,针对IE浏览器的特殊处理,可以使用条件注释或选择器Hack等技术手段。

4.使用CSS重置样式:不同浏览器对默认样式的设置有差异,这可能导致网页在不同环境下显示效果不同。

通过引入CSS重置样式表,可以将不同浏览器的默认样式统一化,减少兼容性问题。

三、案例分析以现代浏览器对于CSS3的支持度较高为例,假设我们需要实现一个圆角按钮(border-radius属性):```css.button {border-radius: 5px;}```但是在某些旧版本的IE浏览器中,border-radius属性不受支持,因此我们需要针对IE浏览器增加特定的样式:```css.button {border-radius: 5px; /* 现代浏览器支持 */-moz-border-radius: 5px; /* Firefox 浏览器支持 */-webkit-border-radius: 5px; /* Chrome 和 Safari 浏览器支持 */behavior: url(border-radius.htc); /* 使用HTC行为文件实现圆角效果*/}```通过以上处理,我们可以在不同浏览器中实现圆角按钮的效果,保证了网页在各个环境下的兼容性。

解决不同浏览器兼容性不一致导致css的animation不起效

解决不同浏览器兼容性不一致导致css的animation不起效

解决不同浏览器兼容性不⼀致导致css的animation不起效最近项⽬中,需要把APP的纯html5的项⽬显⽰在⼀个移动的⼴告屏上边,⼴告屏是基于安卓系统的,浏览器不清楚什么版本,直接使⽤css 的animation是不⽀持的。

有⼀个页⾯是通过animation实现页⾯的图⽚的跳动,结果浏览器不⽀持,刚开始使⽤js解决(结果js解决由于⽔平不够导致效果不好,⽽且还会弹出⽩⾊的块,电脑浏览器都不会出现这个,就这个⼴告屏出现,真的恶⼼)⽆奈之下,只能让浏览器去兼容css的animation。

⼀开始页⾯的css代码是这样的@keyframes rotate {0%{transform: translateY(0);}25%{transform: translateY(-10px);}50%{transform: translateY(-20px);}75%{transform: translateY(-10px);}100%{transform: translateY(0);}}.active{animation:rotate 1s linear infinite;} 这段代码就是让图⽚不停地上下跳动跳动,有兴趣的可以复制下来找张图⽚玩玩,不能兼容项⽬需要的浏览器,需要修改为@-webkit-keyframes rotate {0%{-webkit-transform: translateY(0);}25%{-webkit-transform: translateY(-2vmin);}50%{-webkit-transform: translateY(-4vmin);}75%{-webkit-transform: translateY(-2vmin);}100%{-webkit-transform: translateY(0);}}@-o-keyframes rotate {0%{-webkit-transform: translateY(0);}25%{-webkit-transform: translateY(-2vmin);}50%{-webkit-transform: translateY(-4vmin);}75%{-webkit-transform: translateY(-2vmin);}100%{-webkit-transform: translateY(0);}}@-moz-keyframes rotate {0%{-webkit-transform: translateY(0);}25%{-webkit-transform: translateY(-2vmin);}50%{-webkit-transform: translateY(-4vmin);}75%{-webkit-transform: translateY(-2vmin);}100%{-webkit-transform: translateY(0);}}@keyframes rotate {0%{-webkit-transform: translateY(0);}25%{-webkit-transform: translateY(-2vmin);}50%{-webkit-transform: translateY(-4vmin);}75%{-webkit-transform: translateY(-2vmin);}100%{-webkit-transform: translateY(0);}}.active{-webkit-animation:rotate 1s linear infinite;-o-animation:rotate 1s linear infinite;-moz-animation:rotate 1s linear infinite;animation:rotate 1s linear infinite;} 代码有点长(动画的代码多),就是为了处理兼容性问题。

CSS各浏览器兼容问题整理

CSS各浏览器兼容问题整理

目录目录 (1)一、IE6/IE7/IE8/Firefox/Chrome/Safari的CSS hack兼容一览表 (3)1) 区别IE和非IE浏览器 (3)2) 区别IE6,IE7,IE8,FF (3)3) 区别IE6、IE7、Firefox (方法1) (4)4) 区别IE6、IE7、Firefox (方法2) (4)5) 区别IE7、Firefox (4)6) 区别IE6、IE7 (方法1) (4)7) 区别IE6、IE7 (方法2) (5)8) 区别IE6、Firefox (5)二、IE 的if条件Hack (5)三、对齐产生的问题 (6)1) div的居中对齐问题 (6)2) div中文字垂直居中对齐的问题 (7)3) 怎样使一个层垂直居中于浏览器中 (7)4) 如何对齐文本与文本输入框 (7)四、宽高问题 (7)1) IE6下容器的宽度和FF解释不同 (7)2) 页面的最小宽度 (8)3) 为什么无法定义1px左右高度的容器 (8)4) Firefox 关于DIV高度无法自适应 (8)5) div重叠的现象 (9)6) IE与宽度和高度的问题 (9)7) div嵌套时,外层div高度不能自适应 (10)8) div嵌套时y 轴上外层div 到内层div 的距离的问题 (10)9) padding,marign,height,width 的傻瓜式解决技巧 (10)10) FORM标签 (10)五、浮动 (11)1) margin加倍的问题 (11)2) DIV浮动IE文本产生3象素的bug (11)3) 怎么样才能让层显示在FLASH之上呢 (11)4) float的div闭合;清除浮动 (12)5) 自适应高度 (13)六、列表类 (13)1) UL的padding与margin (13)2) ul和ol列表缩进问题 (14)3) list-style-image无法准确定位 (14)4) LI中内容超过长度后以省略号显示的方法 (14)七、链接 (14)1) 游标手指cursor (14)2) ,给a标签内内容加上样式, (15)3) 链接(a标签)的边框与背景 (15)4) ff不支持expression 例如去掉链接的边框要分别写不同的css (15)5) 超链接访问过后hover样式就不出现的问题 (15)八、背景、图片类 (15)1) IE6下为什么图片下有空隙产生 (15)2) 图片垂直于容器内 (15)3) background 显示问题 (16)4) 背景颜色无法显示 (16)5) 背景透明问题 (17)九、其他问题 (17)1) 如何使连续长字段自动换行 (17)2) 为什么web标准中IE无法设置滚动条颜色了 (18)3) 属性选择器(这个不能算是兼容,是隐藏css的一个bug) (19)4) IE捉迷藏的问题 (19)5) BOX模型解释不一致问题 (19)6) IE6下绝对定位的容器内文本无法正常选择 (19)7) CSS双线凹凸边框 (19)8) IE选择符空格BUG (20)9) ff不支持<body scroll="no" > scroll属性 (21)10) ff不支持数据岛绑定 (21)11) ff不能用.click();方法打开链接 (21)12) 目前FF2.0为止都不支持IE的name锚点 (22)一、IE6/IE7/IE8/Firefox/Chrome/Safari的CSS hack兼容一览表不同的浏览器对CSS的解释都有一点出入,特别是padding, line-height这些要细微控制的地方,下面的hack基本可以解决这个问题:详细查看•在属性前加下划线(_),那么此属性只会被IE6解释•在属性前加星号(*),此属性只会被IE7解释•在属性值后面加"\9",表示此属性只会被IE8解释各浏览器CSS hack兼容表:代码如下:#test{color:red; /* 所有浏览器都支持*/color:red !important; /* Firefox、IE7支持*/_color:red; /* IE6支持*/*color:red; /* IE6、IE7支持*/*+color:red; /* IE7支持*/color:red\9; /* IE6、IE7、IE8支持*/color:red\0; /* IE8支持*/}body:nth-of-type(1) p{color:red;} /* Chrome、Safari支持*/1)区别IE和非IE浏览器【区别符号】:「*」、「\9」#tip{background:blue; /*非IE背景藍色*/background:red\9; /*IE6、IE7、IE8背景紅色*/}(详细查看)2)区别IE6,IE7,IE8,FF【区别符号】:「*」、「_」、「!important」#tip{background:blue; /*Firefox背景变蓝色*/background:red\9; /*IE8背景变红色*/*background:black; /*IE7 背景变黑色*/_background:orange; /*IE6 背景变橘色*/}【说明】:因为IE系列浏览器可读「\9」,而IE6和IE7可读「*」(米字号),另外IE6可辨识「_」(底线),因此可以依照顺序写下来,就会让浏览器正确的读取到自己看得懂得CSS语法,所以就可以有效区分IE 各版本和非IE浏览器(像是Firefox、Opera、Google Chrome、Safari等)。

CSS的特殊性(specificity)

CSS的特殊性(specificity)

CSS的特殊性(specificity)
特殊性是⼀个选择器"特殊程度"的数字表⽰。

它可以描述成⼀个4个位置的点数串: 0.0.0.0 。

为帮助理解,我们甚⾄可以将其看成⼀个四位的数值,数值越⼤的特殊性越⾼(例如:0.1.0.0(100)>0.0.1.2(12)),特殊性越⾼的属性会覆盖特殊性较低的属性.
⽤值表⽰:
每个内联样式(body)的特殊性为 1.0.0.0(1000)
每个ID选择器的特殊性为 0.1.0.0(100)
每个类或者伪类的特殊性为 0.0.1.0(10)
每个元素和伪元素的特殊性为 0.0.0.1(1)
连接符和通配符为 0.0.0.0(0)
例如:
p a{color:red}
body * a{color:blue}
两者特殊性相同。

继承不具有特殊性,也就是说:继承特殊性⽐*还⼩,连0都没有(可以这样理解⽽已)。

例如:
*{color:red}
p{color:blue}
<p>I'm blue<b>I'm red</b></p>
浏览器中:p标签内aaaaaaa为蓝⾊,b标签内为红⾊。

写在HTML页⾯中的头部内联样式(style)会覆盖外链样式(link)中相同属性设定。

设定了!important(重要声明)的属性特殊性最⾼,也就是说⽐body内内联样式更⾼!。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在实际开发中,我们发现了UC浏览器对CSS存在一些“特殊照顾”:
∙不支持font-family属性,也就是说,在UC浏览器你只能看到一种字体;
∙不支持font-szie属性,也就是说,在UC浏览器你只能看到一样大小的字体;
∙不支持width、height、padding、margin、line-height属性,也就是说,在UC浏览器只能通过p、br等HTML标签来换行以达到字符上下间隔;
∙不支持固定像素的宽度,100%显示页面,也就是说,在UC浏览器始终将看到的是“满屏的”;
∙不支持浮动、层叠布局,float和position属性无效,也就是说,在UC 浏览器你只能看到“左对齐”。

∙支持background-color,但不支持background-image,也就是说不支持CSS背景图显示,在UC浏览器你只能看到背景色。

不过,个人仍然认为,如今建设小屏幕移动设备网页,完全可依据WebKit引擎的浏览器作为标准进行界面开发。

换句话说,我们设计支持UC浏览器的网页,而不是设计以UC浏览器为标准的网页。

这样做还有个好处,可以在大部分的手机浏览器上保证相对一致的样式。

而针对UC这种连float等标准CSS属性也不支持的浏览器,别过于纠结它!
但为了保证界面中各元素在UC浏览器仍具有良好的阅读顺序,严重建议HTML编码人员留意各个HTML标签的先后顺序。

因为只有在支持float、position属性的浏览器下,页面各个容器才可以任意浮动或层叠的。

否则,浏览器将按HTML标签的先后顺序显示。

另外一些小屏幕移动设备网页设计的相关补充:
∙网站头(header)
考虑到小屏幕移动设备的一些特性,设计网页时,有些可以去掉网站头(包括LOGO、全局导航什么的)。

比如flick的查看大图页面就去掉了网站头。

这里我自创了一句时髦的设计原则:“针对于小屏幕移动设备的界面设计,在某些指定任务的界面,应优先于让用户关注当前任务,而不是应用程序本身。

”这个原则是行得通的,同样适用于设计移动设备应用程序~
打个比方说,如果你在设计小屏幕移动设备访问的邮箱时,完全可以在写信、邮件阅读页去掉网站头~
∙链接聚焦(hover)
各个浏览器均自定义了链接的hover样式,比如有的浏览器给链接聚焦时加了边框,有的浏览器给链接聚焦时加个背景色之类。

因此小屏幕移动设备网页不需要在CSS中编写hover样式。

∙鼠标事件(mouseover)
考虑到触摸屏操作,用户无法用手指进行over的操作,因此应禁止在应
用于移动设备访问的网页使用mouseover。

相关文档
最新文档