CSS属性中的vertical-align估计你并不陌生,小图标和文字不对齐,你肯定想到vertical-align:middle;,inputbox和文字不对齐,也可以用vertical-align:middle;解决,先说说怎么解决的吧,再谈谈不能用的时候。
特别强调的是,下面的这些情况主要是针对IE6的,个别不是专指IE6的会提出来。
图片和文字中间对齐
图片和文字在同一行,那么肯定会默认低端对齐,如果图片的高度比较高,那就会显得不入格。可以直接给图片加个vertical-align:middle;实现中间对齐。这个基本上都知道,而且各个浏览器都需要这么做。
数字与中文的对齐问题
曾经遇到过这样的问题:下划线和文字贴得太紧,数字和中文不在同一水平线上。
影响原因:vertical-align属性的设置,影响到中英文不对齐。
解决方法:给中英文对象链接加vertical-align:baseline就可以解决
英文和中文对齐问题
顺便说下英文和中文的对齐问题,本来用line-height基线与基线之间的距离控制文字在中间。但汉字的基线和英文字母不用,所以不起到作用。
解决方法:从字体下手,simsun是宋体,在windows字体文件夹下宋体就是simsun,simhei是黑体。
把font-family设置成sinmsun,汉字和英文字母在同一平行线了。
inputbox和文字中间对齐问题
这个问题好像也是只在IE6中出现过,设置方法也是简单的使用vertical-align:middle;解决。不过jucelin在测试的时候发现也不存在这样的问题了,真让我晕死,算了,记录下,防止下次遇到。这个需要同时添加2个vertical-align:middle;才能解决好像。Mark一下,下次再找找问题所在。
<input name="" type="checkbox" value="" style="vertical-align:middle" /><span style="vertical-align:middle;">好地方</span>
汉字+数字或者汉字+字母不对齐问题
先看图:
图 :不对齐的情况
图 : 调整后的情况
今天开始发现这个问题也是因为有inputbox的原因,可是写测试代码到时候发现和inputbox没有什么关系。出现这样的情况其实也是因为使用了vertical-align:middle;的原因。解决办法你也应该能想到,删除即可。另外jucelin还发现,不对齐的原因还与上面提到的字体问题。因此如果你出现这样的情况,应该检查2个方面,一个是不是添加了vertical-align,另一个就是字体的问题,建议使用用中文的字体。
贴一下测试的代码:
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>非万能的vertical-align - power by jucelin</title> <style> .main{font-family:Arial;font-size:12px; vertical-align:middle;} span{ display:block; width:100px; float:left;height:22px; line-height:22px;} </style> </head> <body> <div class="main"> <div style="width:100%"> <span><input name="" type="checkbox" value="" /> hao123</span> <span><input name="" type="checkbox" value="" /> 好123</span> <span><input name="" type="checkbox" value="" /> 好hao</span> </div> <div style="width:100%; clear:both;"> <span><input name="" type="checkbox" value="" />hao123</span> <span><input name="" type="checkbox" value="" />好123</span> <span><input name="" type="checkbox" value="" />好hao</span> </div> <div style="width:100%; clear:both;"> <span><input name="" type="checkbox" value="" /> <a href="#">hao123</a></span> <span><input name="" type="checkbox" value="" /> <a href="#">好123</a></span> <span><input name="" type="checkbox" value="" /> <a href="#">好hao</a></span> </div> <div style="width:100%; clear:both;"> <span><a href="#">hao123</a></span> <span><a href="#">好123</a></span> <span><a href="#">好hao</a></span> </div> </div> </body> </html>
今天出现这个问题其实主要是因为为了让文字和inputbox对齐,加了vertical-align属性,结果导致了汉字和数字、汉字和字母的不对齐。最后的解决方法是删除所有的vertical-align,结果文字和inputbox它也对齐了,相对于白折腾了半天。算了,Mark下,希望对以后有帮助。
关于vertical-align可以参考的文章
不同浏览器下vertical-align的显示效果:http://www.blueidea.com/tech/web/2008/5892.asp
关于vertical-align的基本知识:http://www.cnblogs.com/huanzhi/archive/2010/08/23/1806829.html
其他资料:http://hi.baidu.com/%E6%8C%AFting/blog/item/f08e211c4f249eed1bd576c3.html
哎 没有经过正规的学习
我写这些CSS代码的时候最头疼的就是规范性的书写问题
总是各个浏览器下都不同
兼容性太要人命了
我也没有正规的学过,自己瞎倒腾。
主要是网络现在的教程真的很不错,共享万岁啊