编写跨浏览器兼容的 CSS代码的金科玉律

作为 Web 设计师,你的网站在各种浏览器中有完全一样的表现是很多人的目标,然而这是一个永远无法真正实现的目标,很多人认为,完美的跨浏览器兼容并不必要,这样说虽然没错,但在很多情形,一种近似的兼容还是很容易实现的,本文讲的是各种跨浏览器兼容的 CSS 编码准则和技巧。

理解 CSS 盒子模型

如果你想实现不需要很多奇巧淫技的跨浏览器兼容的 CSS 代码,透彻地理解 CSS 盒子模型是首要事情,CSS 盒子模型并不难,且基本支持所有浏览器,除了某些特定条件下的 IE 浏览器。

CSS 盒子模型负责处理以下事情:

  • 一个 blcok (区块)级对象占据多大的空间
  • 该对象的边界,留白
  • 盒子的尺寸
  • 盒子与页面其它元素的相对位置

CSS 盒子模型有以下准则:

  • Block (区块)对象都是矩形 (事实上所有对象都如此)
  • 其尺寸由 width, height, padding, borders, 以及 margins 决定
  • 如果不设置高度,该盒子的高度将自动适应其包含的内容,加上留白等(除非使用了 float)
  • 如果不设置宽度,一个非 float 型盒子水平上将充满其父容器(扣除父容器的留白)

处理 block 级对象时,必须注意以下事项:

  • 如果一个盒子的宽度设置为 100%,它就不能再设置 margins, padding, 和 borders,否则会撑破其父容器
  • 垂直毗邻的 margin 会引起复杂的坍塌问题, 导致布局问题(比如两个垂直毗邻的 Block 对象,上面的对象的 bottom-margin 为 40,下面的对象的 top-margin 为 20,则两个对象的间距将是 40,而不是 60 - 译者)
  • 拥有相对位置和绝对位置的对象,拥有不同的行为

在 Firefox 的 Firebug 中显示的盒子模型

理解 block 级和 inline 级 对象的区别

这个看似简单的问题事如果能透彻地理解,会受益匪浅。

下图讲解了 block 级对象和 inline 级对象的区别:

时间: 2025-01-30 15:31:07

编写跨浏览器兼容的 CSS代码的金科玉律的相关文章

解决跨浏览器兼容的CSS编码准则

浏览器越来越多,也就意味着做web前端开发的就越困难.现在的浏览器的内核都同,对于css的兼容也会有一定的差别!以前讲的用css hack来也不是一件容易的事,用过多的css hack来兼容也会出现许多臃肿的代码:所以掌握一些跨浏览器兼容的css编码准则是非常有必要的. 第一:理解css盒子模型(学习div+css布局也是很重要的,学会的css的盒子模型学习div+css也就不难了) 透彻地理解 CSS 盒子模型是首要事情,CSS 盒子模型并不难,且基本支持所有浏览器,除了某些特定条件下的 IE

不同浏览器兼容的CSS编码准则

掌握一些跨浏览器兼容的css编码准则是非常有必要的. 第一:理解css盒子模型(学习div+css布局也是很重要的,学会的css的盒子模型学习div+css也就不难了) 透彻地理解 CSS 盒子模型是首要事情,CSS 盒子模型并不难,且基本支持所有浏览器,除了某些特定条件下的 IE 浏览器. CSS 盒子模型负责处理以下事情: 一个 blcok (区块)级对象占据多大的空间 该对象的边界,留白 盒子的尺寸 盒子与页面其它元素的相对位置 CSS 盒子模型有以下准则: Block (区块)对象都是矩

使用 PostCSS 跨浏览器兼容教程

这里我们将使用PostCSS创建一个跨浏览器兼容性的样式表.我们将要做的: 有前缀的自动添加前缀添加一系列的IE版本,回退到IE8.IE9和IE10为没有支持的属性添加will-change属性 设置项目 你需要做的第一件事情就是使用Gulp或Grunt设置您的项目.如果你没有一个完美的项目模板,我建议你使用Gulp,可以使用较少的代码来达到相同的目的. 你可以阅读前面有关于Gulp或Grunt创建PostCSS项目的教程:     PostCSS深入学习:Gulp设置    PostCSS深入

跨浏览器兼容测试有关的大量资源

跨浏览器是所有网页设计师都会碰到的常见问题,当完成一个页面后,经常会要测试IE,FF等多种常用浏览器软件.有时候客户也会要求兼容更多浏览器,当电脑里没有安装这类浏览器时就会显得很麻烦,所以推荐那些为跨浏览器测试范畴的网页设计师可以阅读下本文 我们生活在一个幸福又痛苦的时代,有太多的浏览器可以使用,对 Web 开发与设计者而言,你有义务保证你的设计兼容所有主流浏览器.然而跨浏览器测试是件相当复杂的事,涉及不同的浏览器,不同的版本,不同的平台.本文介绍了与跨浏览器兼容测试有关的大量资源. 在线测试资

跨浏览器兼容测试8大利器

中介交易 SEO诊断 淘宝客 云主机 技术大厅 仅仅是一年前,跨浏览器兼容测试还不是一件容易事,市面上的测试工具都有一些缺陷,要么太贵,要么功能有限,要么很难用.最近我们终于看到了一些新 的工具出现,其中的一些可谓十分出色.本文精选8种最新的跨浏览器测试工具,这7款简单的工具让你的工作变得十分容易,而且它们完全免费. #1 - Xenocode Browser Sandbox Xenocode Browser Sandbox 改变了基于 Windows 的浏览器兼容测试工具的游戏规则,只需点一下

跨浏览器的Flexbox:CSS Flexible盒模型3

文章简介:CSS Flexible盒模型3又简称为Flexbox.摒弃我们传统上使用的一些hack和组件,Flexbox给网络的发展带来了很多正能量和兴奋济,让我们一起把复杂的网站布局变得简易和快速. 简介 CSS Flexible盒模型3又简称为Flexbox.摒弃我们传统上使用的一些hack和组件,Flexbox给网络的发展带来了很多正能量和兴奋济,让我们一起把复杂的网站布局变得简易和快速.早前在Flexbox: fast track to layout nirvana?一文中介绍了Flex

解决Flexbox跨浏览器兼容Bug

早在2013年9月,我在测试我的Solved by Flexbox项目时,在IE10和IE11中发现了一个Bug,就是Sticky footer实际上不会粘贴在页面的底部.我花了很多时间来解决这个问题,但始终没有成功. 起初,我真的很生气.在Flexbox出现之前,如果在不知道页脚的确切尺寸情况之下,要使用纯CSS来实现Sticky Footer的效果是不太可能.Flexbox改变了这一切,可以使用CSS解决这个问题. 失望之后,我最终得出一个结论,这不是什么大不了的事情.我的意思是,从渐进增强

Flexbox跨浏览器兼容Bug解决方法

在IE10和IE11中发现了一个Bug,就是Sticky footer实际上不会粘贴在页面的底部.我花了很多时间来解决这个问题,但始终没有成功. 起初,我真的很生气.在Flexbox出现之前,如果在不知道页脚的确切尺寸情况之下,要使用纯CSS来实现Sticky Footer的效果是不太可能.Flexbox改变了这一切,可以使用CSS解决这个问题. 失望之后,我最终得出一个结论,这不是什么大不了的事情.我的意思是,从渐进增强的角度来看,我的解决方案还是相当不错的.虽然它在IE并不完美,但不至于坏得

编写跨浏览器的javascript代码必备[js多浏览器兼容写法]_javascript技巧

序号 操作 分类 IE(6.0) FireFox(2.0) Mozilla(1.5) 当前浏览器 备注 1 "." 访问tag的固有属性 OK OK OK OK 2 "." 访问tag的用户定义属性eg: <input type="checkbox" myattr="test"> OK NO NO OK 可以用getAttribute函数 替代 3 obj.getAttribute 访问tag的固有属性 OK OK