CSS中一些常见的兼容性问题

CSS中一些兼容性问题就是浏览器兼容,而这些浏览器兼容问题主要是Ie和FF之间的争斗。

CSS hack中的一些事:

我们为了让页面形成统一的效果,要针对不同的浏览器或不同版本写出对应可解析的CSS样式,所以我们就把这个针对不同浏览器/版本而写CSS的过程叫做 CSS hack。

CSS hack主要有三种:IE条件注释法、CSS属性前缀法、选择器前缀法。

(1)IE条件注释法,即在正常代码之外添加判别IE浏览器或对应版本的条件注释,符合条件的浏览器或者版本号才回执行里边的代码。

1 <!--[if IE 8]>
2 <p>Welcome to Internet Explorer 8.</p>
3 <![endif]-->

(2)CSS属性前缀法,即是给css的属性添加前缀。比如 * 可以被IE6/IE7识别,但 _ 只能被IE6识别,IE6-IE10都可以识别 "\9",IE6不能识别!important  FireFox不能识别 * _  \9

.type{
	color: #111; /* all */

	color: #222\9; /* IE */
	*color: #333; /* IE6/IE7 */
	_color: #444; /* IE6 */
	}

(3)选择器前缀法,顾名思义,就是给选择器加上前缀。

IE6可识别 *div{color:red;}
IE7可识别 *+div{color:red;}

 下面来说一下主要的兼容性问题:

(1)最主要也是最常见的,就是浏览器对标签的默认支持不同,所以我们要统一,就要进行CSS reset . 最简单的初始化方法是 *{margin:0; padding:0;} 但不推荐,而且它也并不完善,我们一般推荐淘宝的样式初始化。

body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend, button, input, textarea, th, td { margin:0; padding:0; }
    body, button, input, select, textarea { font:12px/1.5tahoma, arial, \5b8b\4f53; }
    h1, h2, h3, h4, h5, h6{ font-size:100%; }
    address, cite, dfn, em, var { font-style:normal; }
    code, kbd, pre, samp { font-family:couriernew, courier, monospace; }
    small{ font-size:12px; }
    ul, ol { list-style:none; }
    a { text-decoration:none; }
    a:hover { text-decoration:underline; }
    sup { vertical-align:text-top; }
    sub{ vertical-align:text-bottom; }
    legend { color:#000; }
    fieldset, img { border:0; }
    button, input, select, textarea { font-size:100%; }
    table { border-collapse:collapse; border-spacing:0; }

(2)IE6双边距bug: 块属性元素如果添加浮动之后,会产生双倍外边距bug。

解决方式:

给float元素添加display:inline-block 即可正常显示

(3)上下margin重合问题,相邻的两个div margin-left margin-right 不会重合,但相邻的margin-top margin-bottom会重合。

解决方式:

上下两个尽量不要同时使用margin—top和margin-bottom。

(4)超链接访问样式的问题,伪类要按照一定的顺序书写:

a:link{}  a:visited{}  a:hover{}  a:active{}

(5)chrome下默认会将小于12px的文本强制按照12px来解析。解决办法是给其添加属性: 

-webkit-text-size-adjust: none; 

(6)png24位的图片在IE6下面会出现北京,所以最好还是使用png8格式的。 

(7)IE盒模型和W3C标准盒模型:

IE盒模型:margin+border+padding+content;

W3C盒模型:margin+border+padding+content;

从上面的表达式看不出来IE盒模型与W3C盒模型有什么不同,例如一个盒子模型如下:margin:20px,border:10px,padding:10px;width:200px;height:50px;

如果用w3c盒子模型解释,那么这个盒子模型占用的:

宽度为:20*2+10*2+10*2+200=280px;

高度:20*2+10*2+20*2+50=130px;

盒子的实际宽度大小为:10*2+10*2+200=240px;

实际高度:10*2+10*2+50=90px;

用ie的盒子模型解释 :

盒子在网页中占据的大小为20*2+200=240px; 高:20*2+50=90px;

盒子的实际大小为:宽度:200px, 高度:50px;

我们常常理解的盒子模型是w3c这样的盒子模型

(8)IE6div高度不能小于10px:

解决方式:

<div style="height:2px;overflow:hidden;background:#000000;width:778px;"></div>

<div style="height:2px;font-size:2px;background:#000000;width:778px;">&nbps;</div>

希望大家能够理解,也希望自己能够加深一下记忆。 

时间: 2024-10-20 05:18:38

CSS中一些常见的兼容性问题的相关文章

javaScript中一些常见的兼容性问题整理

javaScript中一些常见的兼容性问题整理 1)滚动条: document.documentElement.scrollTop||document.body.scrollTop 2) 获取样式兼容 functiongetStyle(dom, styleName){ return dom.currentStyle? dom.currentStyle[styleName] getComputedStyle(dom)[styleName]; } 3) 网页可视区域兼容 window.innerHe

CSS中的浮动和清除浮动,梳理一下!

CSS中的浮动和清除浮动,梳理一下! 第一篇就整理整理CSS中很常见的浮动以及清除浮动的一些方式吧. 浮动到底是什么? 浮动核心就一句话:浮动元素会脱离文档流并向左/向右浮动,直到碰到父元素或者另一个浮动元素.请默念3次! 浮动最初设计的目的并没那么多事儿,就只是用来实现文字环绕效果而已,如下所示: 文字环绕效果 但是早期的前端开发者发现:浮动的元素可以设置宽高并且可以内联排列,是介于inline和block之间的一个神奇的存在,在inline-block出来之前,浮动大行其道.直到inline

css中font系列常见内容

font 可以一次性定义以下五种属性的值,常见的是前四种.不用所有的都写上,有什么些什么,没有的不写,各个属性值之间用空格. 说实话,如果能够单独写就单独写,真不知道这样写有什么样的好处,还麻烦 注意:书写的顺序 font-style font-variant font-weight font-size/line-height font-family 另外还有一些别的属性值:主要是应用在一些特殊的应用场景的制定字体,比如下拉列表.按钮.对话框.图标标记.窗口状态栏等等 caption 定义被标题

web前端-常见中文字体在CSS中的Unicode编码

一,常见中文字体在CSS中的Unicode编码 新细明体: \65b0\7ec6\660e\4f53 细明体: \7ec6\660e\4f53 标楷体: \6807\6977\4f53 黑体: \9ed1\4f53 宋体: \5b8b\4f53 新宋体: \65b0\5b8b\4f53 仿宋: \4eff\5b8b 楷体: \6977\4f53 仿宋_gb2312: \4eff\5b8b_gb2312 二,例如:font-family:’ \5b8b\4f53’;

英文单词断行问题:CSS中word-break、word-wrap以及hyphens的兼容性和区别

CSS中一提到单词断行,最先映入脑海的肯定是word-break和word-wrap这两条属性.但对于这两条属性到底有什么区别,兼容性如何,我一直都概念模糊.今天抽空把它们以及CSS3中新加入的断行属性之间的区别和作用理理清楚,做一下笔记. 在英文段落中有时会碰到一些很长的单词,这些单词的长度超出容器宽度.在默认的页面文档中,如果单词长度超出了单行,会被自动移到下一行中,图中puzzling!就被自动换行了:而如果单词本身的长度已经超出容器宽度,常规的文档对此就没有约束力了,图中dddddd…这

CSS中常见的布局

一.css中常见的布局有哪些? (1)两列布局 (2)三列布局 (3)弹性布局 (4)圣杯布局 (5)双飞翼布局 二.具体实现  (1)两列布局 https://www.cnblogs.com/qing-5/p/11442906.html (2)三列布局 https://www.cnblogs.com/qing-5/p/11338819.html (3)圣杯布局和双飞翼布局 相同点: a.三列布局,中间宽度自适应,两边定宽: b.中间栏要在浏览器中优先展示渲染: c.允许任意列的高度最高: d.

css中字体大小在不同浏览器兼容性问题

css中使用font-size设定字体大小,不同浏览器的字体height一样,但是width不同,比如在火狐和谷歌中,font-size:20px,字体的高度变为20px,但是谷歌的字体宽度比火狐长 一,解决方法如下: 1. 将浏览器的基准字号设置为 62.5%,也就是 10px,现在 1rem = 10px -- 为了计算方便.然后 在 body上应用 font-size: 2rem;,那么现在body的字体大小就是 20px. html { font-size: 62.5%; } body

css中常见中文字体的英文名称

曾经看过一些文章,建议CSS中字体应用英文来替代,但一直未引起我重视.最近官网改版,今天同事测试发现Mac的Safari总是显示宋体 → → 修改font-family:"微软雅黑"为"Microsoft YaHei" 后正常. 黑体:SimHei 宋体:SimSun 新宋体:NSimSun 仿宋:FangSong 楷体:KaiTi 微软雅黑:Microsoft YaHei 幼圆:YouYuan

CSS中常见的长度单位

原文地址:https://segmentfault.com/a/1190000008934791?utm_source=tuicool&utm_medium=referral px - 像素 px 是 CSS 中最常用的长度单位,可以用来指定字体大小,元素的宽度.高度.边框.内边距,外边距的大小等等, 它是一个虚拟长度单位,是计算机系统的数字化图像长度单位,如果px要换算成物理长度,需要指定精度DPI px 单位的值必须是整数值 与px相关的一些单位 in - 表示英寸,是一个物理单位,在CSS