请选择 进入手机版 | 继续访问电脑版
收藏本站腾讯微博新浪微博
点点网模板设计大赛 phpchina

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 用悬赏 三天解决问题 解决访问速度慢 论坛支持农历生日 - 给官方提建议

论坛活动及任务 归纳网站最新活动 地图任务 邮件更新任务:保护帐号安全

积分换实物,来参加蓝色理想积分兑换吧! 联系招聘客服 蓝色理想帮你找工作! 万元奖励等你拿——点点网模板设计大赛

查看: 3768|回复: 19

[教程] 【翻译】CSS hacks与争议 [复制链接]

mienflying 楼主

当当网鱼

高级会员

帖子
351
体力
581
威望
4
居住地
广东省 深圳市
发表于 2007-11-17 17:45:51 |显示全部楼层
翻译说明:

这是Solid State Group网站上的一篇很友好的文章,解决了我在设计中遇到的很多问题,故在此我翻译其文,并对原作者表示非常感谢!

查看原文:http://diger.cn/blog/?p=324

英文地址:  http://www.solidstategroup.com/page/1592



1、说明本文阐述了8条我们发现的在用CSS设计中有用的解决方案。

2、浏览器特定的选择器

当你想在一个浏览器里改变样式而不像在其他浏览器中改变时,这些选择器很有用。

IE6以下

  1.    *html{}
复制代码


IE 7 以下

  1. *:first-child+html {} * html {}
复制代码


只对IE 7

  1. *:first-child+html {}
复制代码


只对IE 7 和现代浏览器

  1. html>body {}
复制代码


只对现代浏览器(非IE 7)

  1. html>/**/body {}
复制代码


最新的Opera 9以下版本

  1. html:first-child {}
复制代码


Safari

  1. html[xmlns*=”"] body:last-child {}
复制代码


要使用这些选择器,请在样式前写下这些代码。例如:
  1. #content-box {
  2. width: 300px;

  3. height: 150px;

  4. }

  5. * html #content-box {

  6. width: 250px;

  7. }

  8. /* 重写上面的代码并且把宽度改为250PX

  9. 在IE6以下版本中适用。 */
复制代码


3、在IE6中使用透明PNG图片

IE6的一个很难处理的BUG就是它不支持透明PNG图片。

你可能需要用一个重写的CSS的滤镜来解决这个问题:

  1. *html #image-style {

  2. background-image: none;

  3. filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=”fil

  4. ename.png”, sizingMethod=”scale”);

  5. }
复制代码


4、去掉连接虚线框

当你点击链接时,Firefox会在链接周围产生一个虚线外框。



这个很好解决,只需在a标签中添加outline:none就可以了。

  1. a{

  2.    outline:none;

  3. }
复制代码


5、对inline元素应用宽度。

如果你对一个inline元素使用宽度,它将只在IE6下起作用。

所以的HTML标签要么是Block的要么就是inline的。inline属性的标签有<span><a><strong>和<em>Block标签包括<div><p><h1><form>和<li>

你不能控制inilne标签的宽带,不过有一个方法是把标签属性从inline改为Block。

  1. span{

  2.    width:150px;

  3.    display:block;

  4. }
复制代码


应用display:block能够把span标签变成block标签,从而控制它的宽度。

6、使一个固定宽度的网站居中。

为了让你的网站在浏览器中居中,可以为最外层Div添加position:relative属性,然后将margin设为auto。

  1. #wrapper {

  2. margin: auto;

  3. position: relative;

  4. }
复制代码




7、图片替换技术

对于头部来说,永远是最好用文字而不是图片。在你必须要用图片的某个特殊地方最好使用隐藏文字的层的背景图片。这对于屏幕阅读和SEO非常有用,尽管依然使用很普通的文字,这可以联想到所有的优点。

HTML:

  
  1. <h1><span>Main heading one</span></h1>
复制代码


CSS:
  1. h1 {

  2. background: url(heading-image.gif) no-repeat;

  3. }

  4. h1 span {

  5. position:absolute;

  6. text-indent: -5000px;

  7. }
复制代码


正如你所见,我们对H1标签使用普通的HTML代码,用CSS来将图片替代文字。Text-indent把文字放到左边5000像素处,从而用户看不到它们。

8、最小宽度

IE的另外一个Bug就是它不支持min-width属性。min-width确实非常有用,特别是对于100%宽度的可变模板来说,因为他告诉浏览器停止收缩。

对于除IE6以外的所有浏览器来说你只需min-width:xpx;例如:

  1. .container {

  2. min-width:300px;

  3. }
复制代码


要让这些在IE6下起作用的话你要添加额外的努力!你需要创建两个DIV,一个包含着另一个。
  1. <div class=”container”>

  2. <div class=”holder”>Content</div>

  3. </div>
复制代码

然后你需要设置外面层的min-width:

  1. .container {

  2. min-width:300px;

  3. }
复制代码


现在又要IE hack起作用了,你需要写下以下代码:

  1. * html .container {

  2. border-right: 300px solid #FFF;

  3. }

  4. * html .holder {

  5. display: inline-block;

  6. position: relative;

  7. margin-right: -300px;

  8. }
复制代码


当浏览器窗口调整外层宽度来适应直到它缩小到border的宽度时,这个时候它就不能够在缩小了。而holder层也会停止收缩。外层的边框宽度变成了内层的最小宽度。

9、隐藏水平滚动

要去除水平滚动条,可以在body中插入overflow-x:hidden属性。

  1. body {

  2. overflow-x: hidden;

  3. }
复制代码


这在你决意要用一个比浏览器款的图片或Flash时很有用。

[ 本帖最后由 mienflying 于 2007-11-17 17:49 编辑 ]
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
已有 1 人评分威望 收起 理由
greengnn + 2 加分鼓励

总评分: 威望 + 2   查看全部评分

西部数码顶级域名注册商39元抢注!
mienflying 楼主

当当网鱼

高级会员

帖子
351
体力
581
威望
4
居住地
广东省 深圳市
发表于 2007-11-17 17:52:06 |显示全部楼层
自己来坐沙发了!

见到的最全的Hack了


原文的标题是《CSS Hacks & Issues》,翻译时我认为hacks不用翻译的,大家都知道什么意思,而且用hack确切。而Issues这个词,我翻译成了争议,不知道是否确切。
租服务器,上51IDC | [长沙]招聘:PHP经理10K/WEB前端6K/PHP开发6K

使用道具 举报

山寨前端工程师

初级会员

帖子
107
体力
198
威望
0
居住地
广东省 深圳市
发表于 2007-11-17 18:45:27 |显示全部楼层
我觉得多了解了解常用浏览器的一些常见差异比学习hack有效得多,过于依赖hack只是知其然.

使用道具 举报

nower 
帖子
81
体力
43
威望
0
发表于 2007-11-19 15:02:52 |显示全部楼层
最小宽度那个,我测试代码根本不行

使用道具 举报

四舍五入

中级会员

帖子
104
体力
202
威望
0
居住地
江西省 南昌市
发表于 2007-11-19 19:40:21 |显示全部楼层
刚学CSS,对hack很是恼火,慢慢看一下LZ的贴子...谢谢LZ~~

使用道具 举报

ahhqx 
帖子
26
体力
106
威望
0
居住地
广东省 广州市
发表于 2007-11-19 22:36:55 |显示全部楼层
挺不错的文章,支持一下

使用道具 举报

帖子
398
体力
1065
威望
11
居住地
辽宁省 沈阳市
发表于 2007-11-20 08:52:50 |显示全部楼层
支持一下。

使用道具 举报

zeq222 
帖子
105
体力
458
威望
0
居住地
北京市 石景山区
发表于 2007-11-20 08:53:31 |显示全部楼层
谢过LZ的整理了哦

使用道具 举报

瞧瞧

高级会员

帖子
477
体力
843
威望
0
发表于 2007-11-20 10:32:28 |显示全部楼层
真的不错  刚学css对浏览器兼容确实挺头疼!

使用道具 举报

做个好人

银牌会员

帖子
1614
体力
2579
威望
0
居住地
安徽省 合肥市
发表于 2007-11-20 11:47:05 |显示全部楼层
从没用过HACK。。

使用道具 举报

No01 

咚咚吆

金牌会员

帖子
5175
体力
3419
威望
1
发表于 2007-11-20 12:33:10 |显示全部楼层
同上  我也没用过 ........
我已不在江湖 江湖还在为了一些破浏览器争论着..

使用道具 举报

帖子
44
体力
107
威望
0
发表于 2007-12-10 22:52:37 |显示全部楼层

这篇帖子里好多错误…………

6和7真的可以吗

使用道具 举报

帖子
195
体力
850
威望
1
居住地
天津市 河西区
发表于 2007-12-11 12:42:56 |显示全部楼层
好文章~~帮助很大

使用道具 举报

帖子
68
体力
252
威望
1
发表于 2007-12-11 12:55:39 |显示全部楼层
不管怎样还是支持一下
20字节太小气了吧

使用道具 举报

pdf66 
帖子
85
体力
242
威望
3
居住地
广东省 深圳市
发表于 2007-12-12 09:00:00 |显示全部楼层
受益匪浅阿!

使用道具 举报

马天宇

中级会员

帖子
172
体力
332
威望
0
居住地
河南省 郑州市
发表于 2007-12-12 09:09:57 |显示全部楼层
真的很厉害呀,我也要收藏。谢谢老大了。

使用道具 举报

wj829 
帖子
18
体力
98
威望
0
居住地
浙江省 杭州市
发表于 2008-10-25 10:18:21 |显示全部楼层
没什么用处的东东

使用道具 举报

柴鸡不柴

中级会员 手机认证 

帖子
317
体力
444
威望
0
居住地
河南省 南阳市
发表于 2008-11-30 02:15:25 |显示全部楼层
我竟然能看懂了 呵呵

使用道具 举报

14px 

秋末

荣誉管理

帖子
1616
体力
4211
威望
52
居住地
湖南省 长沙市
发表于 2008-11-30 12:09:38 |显示全部楼层
有些是小技巧,很受益的说,另外min-width这东西,主流浏览器只有IE6不支持,所以这样写基本上就可以了:
min-width:300px;
_width:300px;

使用道具 举报

斜燕

中级会员

帖子
101
体力
401
威望
0
居住地
河北省 石家庄市
发表于 2008-11-30 12:10:29 |显示全部楼层
记得最初学CSS...CSSZENGARDEN有个设计就是利用HACK...不过现在IE对CSS的支持也趋于标准化...

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|安久科技提供CDN|blueidea.com ( 京ICP备05002321号 )  

GMT+8, 2012-2-11 18:48 , Processed in 0.138066 second(s), 11 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部