96SEO 2026-02-19 19:44 16
。

基于此#xff0c;某些情况我们会极不情愿的使用这个不太友好的方式来达到大家要求的页面表现。
我个人是不太推荐使用hack的#xff0c;要知道一名好的前端#xff0c;…
做前端多年虽然不是经常需要hack但是我们经常会遇到各浏览器表现不一致的情况。
基于此某些情况我们会极不情愿的使用这个不太友好的方式来达到大家要求的页面表现。
我个人是不太推荐使用hack的要知道一名好的前端要尽可能不使用hack的情况下实现需求做到较好的用户体验。
可是啊现实太残酷浏览器厂商之间历史遗留的问题让我们在目标需求下不得不向hack妥协虽然这只是个别情况。
今天结合自己的经验和理解做了几个demo把IE6~IE10和其他标准浏览器的CSS
hack做一个总结也许本文应该是目前最全面的hack总结了吧。
由于不同厂商的流览器或某浏览器的不同版本如IE6-IE11,Firefox/Safari/Opera/Chrome等对CSS的支持、解析不一样导致在不同浏览器的环境中呈现出不一致的页面展现效果。
这时我们为了获得统一的页面效果就需要针对不同的浏览器或不同版本写特定的CSS样式我们把这个针对不同的浏览器/不同版本写相应的CSS
由于不同的浏览器和浏览器各版本对CSS的支持及解析结果不一样以及CSS优先级对浏览器展现效果的影响我们可以据此针对不同的浏览器情景来应用不同的CSS。
Hack大致有3种表现形式CSS属性前缀法、选择器前缀法以及IE条件注释法即HTML头部引用if
Hack大部分是针对IE浏览器不同版本之间的表现差异而引入的。
但不能识别下划线_IE6~IE10都认识\9但firefox前述三个都不能认识。
选择器前缀法(即选择器Hack)例如
.class{}。
IE条件注释法(即HTML条件注释Hack)针对所有IE(注IE10已经不再支持条件注释)
![endif]--。
这类Hack不仅对CSS生效对写在判断语句里面的所有代码都会生效。
hack书写顺序一般是将适用范围广、被识别能力强的CSS定义在前面。
这种方式是IE浏览器专有的Hack方式微软官方推荐使用的hack方式。
举例如下
IE]这段文字只在IE浏览器显示![endif]--只在IE6下生效!--[if
6]这段文字只在IE6浏览器显示![endif]--只在IE6以上版本生效!--[if
6]这段文字只在IE6以上(包括)版本IE浏览器显示![endif]--只在IE8上不生效!--[if
8]这段文字在非IE8浏览器显示![endif]--非IE浏览器生效!--[if
!IE]这段文字只在非IE浏览器显示![endif]--CSS
属性前缀法是在CSS样式属性名前加上一些只有特定浏览器才能识别的hack前缀以达到预期的页面展现效果。
hack写法实例IE6(S)IE6(Q)IE7(S)IE7(Q)IE8(S)IE8(Q)IE9(S)IE9(Q)IE10(S)IE10(Q)**color青色YYYYNYNYNYcolor绿色YYYYNYNYNY--color黄色YYNNNNNNNN__color蓝色YYNYNYNYNN##color紫色YYYYNYNYNY\0color:red\0红色NNNNYNYNYN\9\0color:red\9\0粉色NNNNNNYNYN!importantcolor:blue
!important;color:green;棕色NNYNYNYNYY
IE8/IE9/IE10都生效是IE8/9/10的hack“\9\0″
注意顺序否则IE6/7下可能无法正确显示导致结果显示为白色背景*/
background-color:orange\9\0;/*IE9,
/*可以通过javascript检测IE10然后给IE10的html标签加上class”ie10″
/*该demo实例是用于区分标准模式下ie6~ie9和Firefox/Chrome的hack注意顺序
实例是用于区分标准模式下ie6~ie9和Firefox/Chrome的hack注意顺序
该实例是用于区分标准模式下ie6~ie10和Opera/Firefox/Chrome的hack本例特别要注意顺序
PS:国外有些习惯常写作\0根本没考虑Opera也认识\0的实际
(-webkit-min-device-pixel-ratio:0){
若去掉其中的!important属性定义则IE6/7仍然是粉色IE8是紫色IE9/10为橙色Firefox/Chrome变为红色Opera是紫色。
是不是有些奇怪除了IE6以外其他所有的表现都符合我们的期待。
那为何IE6表现的颜色不是_background-color:green;的绿色而是*background-color:pink的粉色呢其实是最后一句所谓的IE7私有hack惹的祸不是说*是IE7的专有hack吗错你可能太粗心了我们常说的IE7专有*hack的格式是*html
selector而不是上面的直接在属性上加*前缀。
如果是为IE7定制特殊样式应该这样使用
}经过测试我发现属性前缀*background-color:pink;只有IE6和IE7认识。
而*html
selector只有IE7认识。
所以我们在使用时候一定要特别注意。
demo2实例是用于区分标准模式下ie6~ie9和Firefox/Chrome的hack注意顺序
demo3实例也是用于区分标准模式下ie6~ie9和Firefox/Chrome的hack注意顺序
demo4实例是用于区分标准模式下ie6~ie10和Opera/Firefox/Chrome的hack本例特别要注意顺序
选择器前缀法是针对一些页面表现不一致或者需要特殊对待的浏览器在CSS选择器前加上一些只有某些特定浏览器才能识别的前缀进行hack。
等等结合CSS3的一些选择器如html:first-childbody:nth-of-type(1)衍生出更多的hack方式具体的可以参考下表
由于IE10用户代理字符串UserAgent为Mozilla/5.0
Trident/6.0)所以我们可以使用JavaScript将此属性添加到文档标签中再运用CSS3基本选择器匹配。
document.documentElement;htmlObj.setAttribute(data-useragent,navigator.userAgent);htmlObj.setAttribute(data-platform,
hack但是有些情况为了顾及用户体验实现向下兼容不得已才使用hack。
比如由于IE8及以下版本不支持CSS3,而我们的项目页面使用了大量CSS3新属性在IE9/Firefox/Chrome下正常渲染这种情况下如果不使用css3pie或htc或条件注释等方法时,可能就得让IE8-的专属hack出马了。
使用hack虽然对页面表现的一致性有好处但过多的滥用会造成html文档混乱不堪增加管理和维护的负担。
相信只要大家一起努力少用、慎用hack未来一定会促使浏览器厂商的标准越来越趋于统一顺利过渡到标准浏览器的主流时代。
抛弃那些陈旧的IE
hack表这时一张6年前的旧知识汇总表了放在这里仅供需要时候方便参考。
12.02等。
一边工作一边总结总结了几天写下整理好今天把它分享出来文中难免有纰漏如大侠发现请及时告知
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback