当前位置: 首页 > news >正文

通用CSS Hack

浏览器的兼容性一直是个头疼的问题,使用“欺骗”技术可使各个浏览器效果一致,花了些时间整理了各个浏览器的HACK,主要包括IE系列和最新版本的Chrome、Safari、Firefox、 Opera,比较全面的记录下Hack,内容包括3部分:@ hack、属性Hack、选择器Hack,这些Hack已经测试并得到有效运用,有需要的同学可以放心使用,笔者会在以后不断的更新,如果有需要补充或者修改的,欢迎大家指教!

以下代码之间的空格是必要的,缺少空格导致失效

/*---------------------------------@ hack [[---------------------------------*/

@media all and (min-width:0){选择器{}} /* 支持IE9、Chrome、Safari、Firefox、 Opera */

@media screen and (-webkit-min-device-pixel-ratio: 0) {选择器{}}/* 仅支持wekit内核浏览器Chrome、Safari */

@media all and (-webkit-min-device-pixel-ratio: 10000), not all and (-webkit-min-device-pixel-ratio: 0) {选择器{}} /* 只支持Opera */
@-moz-document url-prefix() {选择器{}} /* 只支持Firefox */

如:

 

<p class="class">@hack@hack@hack@hack@hack@hack</p>

<style type="text/css">

@media all and (min-width:0){ /* 在IE9文本颜色为红色*/

 .class{color:#F00;}

} 

@media screen and (-webkit-min-device-pixel-ratio: 0) { /* 在Chrome、Safari中文本颜色为绿色 */

 .class{color:#0F0;}

}

@media all and (-webkit-min-device-pixel-ratio: 10000), not all and (-webkit-min-device-pixel-ratio: 0) { /* 在Opera中文本颜色为蓝色 */

 .class{color:#00F;}

}

@-moz-document url-prefix() { /* 在Firefox中文本颜色为品红色 */

 .class{color:#F0F;}

} 

</style>


/*---------------------------------@ hack ]]---------------------------------*/

/*---------------------------------选择器hack [[---------------------------------*/

html* 选择器{} /* 只支持IE7 */

*+html  选择器{}/* 仅支持IE7  使用该选择器需要HTML顶部有声明:<!DOCTYPE HTML ......>*/

*html  选择器{}/* 只支持IE6 */

如:

<p class="class">选择器hack选择器hack选择器hack选择器hack选择器hack选择器hack</p>

html* .class{color:#F00;} /* 在IE7中文本颜色为红色 */

*+html .class{color:#0F0;} /* 在IE7中文本颜色为绿色 */

*html .class{color:#00F;} /* 在IE6中文本颜色为蓝色 */


/*---------------------------------选择器 hack ]]---------------------------------*/

/*---------------------------------属性hack [[---------------------------------*/

选择器{属性:属性值\9;}/* 支持IE6+ */

选择器{属性:属性值\0;}/* 仅支持IE8和IE9 */

选择器{属性:属性值\9\0;}/* 仅支持IE9 */

选择器{*属性:属性值;}/* 仅支持IE7和IE6 */

选择器{_属性:属性值;}/* 只支持IE6 */

选择器{属性:属性值!important;}/* 只不支持IE6 */

选择器{[;属性:属性值;]}/* 仅支持Safari和Chrome ,且只能放在选择器的最后一个属性,因为当浏览器解析[;;]后,不会再读取后面属性 */

如:

<p class="class">属性hack属性hack属性hack属性hack属性hack属性hack</p>

<style type="text/css">

.class{

color:#F00\0;/* 在IE8和IE9中文本颜色为红色 */

*color:#0F0; /* 在IE7中文本颜色为绿色 */

_color:#00F; /* IE6中颜色为蓝色 */

[;color:#F0F;]/* 在Safari和Chrome中颜色为品红色 */

}

</style>


/*---------------------------------属性hack ]]---------------------------------*/

最后的建议是:尽量写出无hack的结构和样式,做到可以向后兼容,减少多余代码,更加可以体现自己的专业化的态度。

 

 

相关文章:

  • 解决w3wp.exe内存占用问题
  • ASP.NET读取ASP设置的Cookie
  • Asp操作Cookies(设置[赋值]、读取、删除[设置过期时间])
  • 判断客户浏览器是否支持cookie
  • ASP.NET 操作Cookie详解 增加,修改,删除
  • ‍w3wp.exe占用内存过高的问题
  • w3wp.exe 频繁重启 Faulting application w3wp.exe
  • UTF-8编码下的Cookies出错 类型不匹配: ‘[object]‘
  • gzip 和 gunzip 的使用
  • linux下vi命令大全
  • extjs 同步和异步请求
  • Extjs combo数据绑定与获取
  • 上传图片Microsoft VBScript 运行时错误 错误 '800a01a8' extension=upfile.file(inputname).FileExt
  • RPM包管理
  • Linux Crontab 定时任务 命令详解
  • [笔记] php常见简单功能及函数
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • chrome扩展demo1-小时钟
  • css属性的继承、初识值、计算值、当前值、应用值
  • ES6系列(二)变量的解构赋值
  • JavaScript 一些 DOM 的知识点
  • js面向对象
  • MySQL用户中的%到底包不包括localhost?
  • node和express搭建代理服务器(源码)
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • Rancher-k8s加速安装文档
  • 包装类对象
  • 初识 beanstalkd
  • 跨域
  • 如何实现 font-size 的响应式
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 听说你叫Java(二)–Servlet请求
  • 我看到的前端
  • 小程序测试方案初探
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ​如何防止网络攻击?
  • ​水经微图Web1.5.0版即将上线
  • #laravel 通过手动安装依赖PHPExcel#
  • #pragma multi_compile #pragma shader_feature
  • #pragma 指令
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (04)odoo视图操作
  • (java)关于Thread的挂起和恢复
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (Python) SOAP Web Service (HTTP POST)
  • (python)数据结构---字典
  • (二)springcloud实战之config配置中心
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • ***原理与防范
  • .NET : 在VS2008中计算代码度量值
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • @property括号内属性讲解