max-width、max-height、min-width和min-height这四个性质(property)分别表示最大宽度、最大高度、最小宽度和最小高度。它们在CSS中有着很重要的作用,比如,它们可以用来很好地协调各种不同分辨率下用户端(client)的显示效果,举个例子,你设计的网页由于侧栏(sidebar)过宽,当用户使用640*480或者更小的分辨率浏览网页的话,就会导致内容(content)栏过窄,影响用户的阅读,一个办法是,把内容或者包含内容的div的宽度固定一个最小值,姑且是780px吧,那么我们可以这样写:min-width: 780px;,这样,当用户端分辨率的宽度在小于780px时,会在水平位置上出现滚动条,不至于影响布局,用户稍微移动一下滚动条就可以方便阅读主要内容。
然后,十分不幸的是,你知道我要说什么,就是IE,这个世界上使用者最多的浏览器,到目前的版本为止,对这四个性质没有一个能够,哪怕一点点的支持。这可让设计者吃尽了苦头,最明显的就是,当你使用float布局时,在IE中的一个臭毛病是,顶层div的宽度变小的时候(缩小窗口,分辨率低等),浮动的布局(一般是右边那一块跑到了下方)就会被破坏,变得一塌糊涂。这样即使是最开明的主管,也不能容忍你这样的设计……
天生不足,后天补上。web设计世界的天才多如牛毛,我们随便Google就能找到不少解决方案(solution),在抱怨IE的同时请向西半球鞠躬。当我写到这里时,我才开始一一验证我所找到的方案,结果让我大失所望,令另我把标题从“让max-*, min-*在IE中有效的解决方案”改成了“让max-*, min-*在IE6中有效的解决方案”。真如Dave所说:别指望 min-width 在IE中有用。
我找到的第一种方案,在http://www.issociate.de/board/post/154073/min-width.html中说,可以在同层的div中加入例如 <div style="width: 300px; height: 0; line-height:0;></div>。可惜,这种无异于插入空白占位透明的GIF图片(spacer GIF)无异,没有实际的效果和意义。诸君可以亲自一试……
第二种,请访问http://www.svendtofte.com/code/max_width_in_ie/,此人研究JavaScript极为深入,在CSS中使用了极为罕用的expression,虽然这会让CSS文件通不过校验(validation),但是我觉得,标准的意义在于分离结构和表现,而且未影响到XHTML/HTML的代码合法性,可以接受。我曾欢天喜地啊,因为我用IE各种版本测试了他的演示版(demo)均正常无比……我自己写的在IE 5.x中也测试通过,最后,在IE6中测试的时候,IE6竟然当掉(crash)了。不解,极为痛苦……仔细检查代码,原来他的demo没有任何DTD声明(即<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">这样的声明),莫非此方法只可以在怪癖模式(quirks mode)下起作用?我把我的HTML文件中的DTD去掉,果如其然。真是一个极大讽刺,想在标准下使用CSS却不能在标准下使用XHTML/HTML……这个方法,嗯,假如你的网页在quirks mode下使用,可以使用这个方法……但是,在IE 5.x下可以使用,无论是标准模式(standard mode)还是怪癖模式下。具体方法在其网页上,在此不列出。
第三种方案,恰恰相反,在IE6中十分完美,而且也不用担心CSS代码的合法性。请访问http://www.doxdesk.com/software/js/minmax.html。不像作者所说,可以支持非mac版的IE 5以上版本(make IE5+/Win support CSS min/max-width/height),我的测试结果,只有IE6起作用,而且十分完美。如果你的网页已经不再面向IE5.x,这个方法就是拯救你的灵丹妙药。方法十分简单,请下载http://www.doxdesk.com/file/software/js/minmax.js,在head区域添加 <script type="text/javascript" src="minmax.js"></script>就可以了。
从此,在IE7出来之前,你可以部分指望 min-width在IE中有用了。还有什么更好的办法,请留言,谢谢。
March 28th, 2005
by Aether
阿…正在找这个,居然忘记了自己google一把,真是郁闷阿;
March 28th, 2005
by wx2
NEO你好,能否做个友情链接?
March 28th, 2005
by POPOEVER
expression并不“极为罕用”,相反非常常用,只是当“重构潮”来临之后,兼容性被重新摆到桌面上来,于是expression用得越来越少,其实expression有很多应用的领域,特别是在hta上仍然可以大展身手,关于expression,早年在经典论坛上有过一段时间非常流行对其深入的研究及讨论,有兴趣可以去翻翻
March 28th, 2005
by Neo
The Author
to wx2,连接已经做好。 多谢你也连接了我的网页。
March 28th, 2005
by lexrus
try to search “expression” in blueidea with teeni, some ideas are really interesting. but it’s now useless when we are spreading webstandards, right?
btw: the rss feed you generated which includes invalid date format has not be supported by bxna. so i just removed your feed recently. hope you make some fix soon:)
March 28th, 2005
by guoshuang
http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/minheight.asp?frame=true
March 29th, 2005
by Neo
The Author
to lexrus,我没有修改过RSS文件,我也不知道怎么回事……
March 30th, 2005
by lexrus
一, 28 Mar 2005 16:10:33 +0000
it looks like that your host server is running in GMT. but the time it generated is be of chinese GMT+8. so your time always faster then the real time. i mentioned this popular problem in bxna faq:
http://blog.blueidea.com/faq/#faq4
and it seams that the system $lang or the locale of your blog is set to zh_CN.
but we have no Chinglish supported to resolve “一, 28 Mar 2005″~
March 30th, 2005
by Neo
The Author
>>lexrus,
我已经把LANG改为默认的了……服务器时区问题我也无能为力了……不过RSS的时间是正确的……
April 28th, 2005
by dNgpNg
不知道我这个算不算个办法(小弟接触Web Standard没多久:))。
在一个100%的div里,对其中某个元素指定左右margin和宽度。左右margin和宽度值的和是想要的min-width。这样当窗口缩到这个值时自动出现横向滚动条,其它的元素最好是float或absolute的。此法有一些局限性,要根据页面的布局情况而决定,并不适用于所有情况,但在某些情况下还是比较好用的。而且IE5、IE6都支持。
这个是我前些日子在为学校设计新首页时研究出来的。叶子暂时放在这里http://www.bjut.edu.cn/bjut_new/,感兴趣的话可以用IE5/6打开试试。
March 9th, 2007
by wkz0712 » Blog Archive » 全窗口2栏布局
[...] 推荐阅读:让max-*, min-*在IE6中有效的解决方案 [...]
March 28th, 2007
by Anonymous
[...] (tags: css) No Comments so far Leave a comment RSS feed for comments on this post. TrackBack URI Leave a comment Line and paragraph breaks automatic, e-mail address never displayed, HTMLallowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> [...]