金牌译作 CSS Hacks 和 问题解决

1596个读者 译者: Rlog  02/18/2008 原文 引用 双语对照及眉批

简介

这篇文章包括了8个非常有用的解决办法,  在进行css设计遇到问题时你就会用到它们.

Author: Chris Thomas ;Translater: Robin

目录

  • 介绍
  • 针对浏览器的选择器
  • 让IE6支持PNG透明
  • 移除超链接的虚线
  • 给行内元素定义宽度
  • 让固定宽度的页面居中
  • 图片替换技术
  • 最小宽度
  • 隐藏水平滚动条

 

一. 介绍

这篇文章包括了8个非常有用的解决办法, 在进行css设计遇到问题时你就会用到它们.

二. 针对浏览器的选择器

这些选择器在你需要针对某款浏览器进行css设计时将非常有用.

IE6及其更低版本

* html {}

IE7及其更低版本

*:first-child+html {} * html {}

仅针对IE7

*:first-child+html {}

IE7和当代浏览器

html>body{}

仅当代浏览器(IE7不适用)

html>/**/body{}

Opera9及其更低版本

html:first-child {}

Safari

html[xmlns*=""] body:last-child {}

要使用这些选择器,请将它们放在样式之前. 例如:

#content-box {
width: 300px;
height: 150px;
}
* html
#content-box {
width: 250px;
} /* overrides the above style and changes the width to 250px in IE 6 and below */

三. 让IE6支持PNG透明

一个IE6的Bug引起了大麻烦, 他不支持透明的PNG图片.

你需要使用一个css滤镜

*html #image-style {
background-image: none;
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="fil
ename.png", sizingMethod="scale");
}

四. 移除超链接的虚线(仅对FF有效)

FireFox下,当你点击一个超链接时会在外围出现一个虚线轮廓. 这很容易解决, 只需要在标签样式中加入 outline:none .

a{
outline: none;
}

五. 给行内元素定义宽度

如果你给一个行内元素定义宽度,那么它只是在IE6下有效. 所有的HTML元素要么是行内元素要么就好是块元素. 行内元素包括: <span>, <a>, <strong> 和 <em>. 块元素包括<div>, <p>, <h1>, <form>和<li> . 你不能定义行内元素的宽度, 为了解决这个问题你可以将行内元素转变为块元素.

span { width: 150px; display: block }

六. 让固定宽度的页面居中

为了让页面在浏览器居中显示, 需要相对定位外层div, 然后把margin设置为auto.

#wrapper {
margin: auto;
position: relative;
}

七. 图片替换技术

用文字总比用图片做标题好一些. 文字对屏幕阅读机和SEO都是非常友好的.

HTML:

<h1><span>Main heading one</span></h1>

CSS:

h1 { background: url(heading-image.gif) no-repeat; }
h1 span {
position:absolute;
text-indent: -5000px;
}
你可以看到我们对标题使用了标准的<h1>作为标签并且用css来将文本替换为图片. text-indent属性将文字推到了浏览器左边5000px处, 这样对于浏览者来说就看不见了.

关掉css,然后看看头部会是什么样子的.

八. 最小宽度

IE6另外一个bug就是它不支持 min-width 属性. min-width又是相当有用的, 特别是对于弹性模板来说, 它们有一个100%的宽度,min-width 可以告诉浏览器何时就不要再压缩宽度了.

除IE6以外所有的浏览器你只需要一个 min-width: Xpx; 例如:

.container {
min-width:300px;
}

为了让他在IE6下工作, 我们需要一些额外的工作. 开始的时候我们需要创建两个div, 一个包含另一个:

<div class="container">
<div class="holder">Content</div>
</div>

然后你需要定义外层div的min-width属性

.container {
min-width:300px;
}

这时该是IE hack大显身手的时候了. 你需要包含如下的代码:

* html .container {
border-right: 300px solid #FFF;
}
* html .holder {
display: inline-block;
position: relative;
margin-right: -300px;
}

As the browser window is resized the outer div width reduces to suit until it shrinks to the border width, at which point it will not shrink any further. The holder div follows suit and also stops shrinking. The outer div border width becomes the minimum width of the inner div.

九. 隐藏水平滚动条

为了避免出现水平滚动条, 在body里加入 overflow-x:hidden .

body { overflow-x: hidden; }

当你决定使用一个比浏览器窗口大的图片或者flash时, 这个技巧将非常有用.

继续阅读
  • 深究:发掘Google Reader的功能

    Google Reader 是一款功能庞大的RSS 阅读器,不过如果你没有仔细研究它的文档,那么你很可能并未充分利用它提供的功能。 今天我将通过介绍Google Reader丰富的快捷键来展示Goo...

  • 在 Apple TV 上跑 Mac OS X - 两千四百元人民币的苹果电脑

    【本文有删节--译者。】 Hackint0sh.org 的 semthex 网友与 AppleTVHacks.net 再下一城!我们把 Mac OS X 的内核整个儿换成自己改过的之后,完整的 Ma...

  • 使用CSS开发时髦的导航栏(一)

    除非限制你自己只做单个页面的网站,否则你都需要导航栏。事实上,导航栏是任何网站设计中最主要的部分之一,如果希望用户很容易的在你的站点移动,导航栏的设计需要大量的思考。 制作容易的站点导航栏是CSS真...

  • CSS渐变文本效果

    你是否想不用photoshop来创建一个带渐变的标题文字吗? 这里用一个简单的css技巧来向你展示如何仅仅使用css和png图片来制造这种效果. 经测试这种方法适合大多数主流浏览器.当然, IE6需...

  • 50个小窍门帮你轻松搞定工作

    本文介绍了帮助你提高工作效率或者说是生活质量的一些小的窍门。有点像是书店里经常展示的“成功必备手册”“战胜家务的一百零一招”之类的东西。我觉得还是满有用的,但应用这些窍门的前提是你已经先认识到你的生活...

  • 14个可以节省你时间的CSS工具

    作为一个网站设计/开发人员,你必须不断寻找方法来减少设计/开发过程中所花费的时间。这对于提高你的工作效率并最大化你的利润是非常重要的。下面介绍的按功能分类的CSS工具可以有效地节省你设计网站的时间。C...

  • 使用CSS开发时髦的导航栏(二)

    我能够使用CSS和列表创造有子菜单的导航栏吗? 有时候我们需要超过一级的导航栏 – 可是在CSS里面用样式化的列表能够创建多级导航栏吗?   解决方案 在一个导航系统中显示子菜单最好的办法是在一个列...

  • 使用CSS开发时髦的导航栏(三)

    如何使用CSS和列表构造一个水平菜单? 到目前为止,我们能够处理垂直导航栏了—这种导航栏在一个中间是主要内容的网站左边或右边很容易被看到。然而,导航栏也常常被做成水平菜单紧挨在文本上方。 解决方案 ...

相关小组

标签:

内容有问题?请与我们联络。

译作评分

  • Currently 5.00/5
  • 1
  • 2
  • 3
  • 4
  • 5
 5.0  |  4 个评分

0条评论    0眉批

添加评论

欢迎访问译言网。在这里,您可以。。。

阅读
发现
翻译