您当前的位置: 首页 > 前端教程 > CSS教程 > 用CSS控制IE下中英文字不在同一线条上的效果

用CSS控制IE下中英文字不在同一线条上的效果

作者:不详 来源:网络 发布时间: 2010-06-09 18:44 点击:
这是一个不太引人注意的问题,在IE浏览器下面中英文字体混排的时候,常常会出现中英文字不在同一线条上的情况。 如图1所示,在IE下当一行文字同时有英文跟中文的时候,链接下划线就会发生折行,也就表示这个时候中英文字不在同一线条上的!(FIREFOX不受此问题影响)

用CSS控制IE下中英文字不在同一线条上的效果

  这是一个不太引人注意的问题,在IE浏览器下面中英文字体混排的时候,常常会出现中英文字不在同一线条上的情况。
  
  如图1所示,在IE下当一行文字同时有英文跟中文的时候,链接下划线就会发生折行,也就表示这个时候中英文字不在同一线条上的!(FIREFOX不受此问题影响)
  
  图1IE浏览器下面中英文不对齐
  
  经过测试,默认的直接在页面里设置链接的时候是不会出现这个情况,如图2!
  
  图2IE浏览器下面中英文对齐
  
  那么疑惑又来了,是什么导致了中英文偏差呢?!解决办法又是什么呢?!于是经过我测试发现两种情况(当然有可能有更多导致的情况。你们可以自己去尝试),当中英文对象的相邻元素拥有vertical-align属性设置(比如前面一张小图片,或者文本框,我们需要把他们垂直对齐,一般都会给图片,文本框(其他任意内联块元素)设置vertical-align:middle;来实现)的时候,那么就会影响到中英文的不对齐。
  
  还有一种情况就是父元素(表格除外)拥有vertical-align属性设置的时候,里面的子元素中英文也会对不齐。
  
  <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  
  <htmlxmlns="http://www.w3.org/1999/xhtml">
  
  <head>
  
  <metacontent="text/html;charset=utf-8"http-equiv="Content-Type"/>
  
  <title>用CSS控制IE下中英文字不在同一线条上的效果</title>
  
  <styletype="text/css">
  
  *{margin:0;padding:0;}
  
  html{background:#fff;}
  
  body{position:relative;font:12px/1.6emVerdana,Lucida,Arial,Helvetica,宋体,sans-serif;color:#333;}
  
  </style>
  
  </head>
  
  <body>
  
  <divstyle="vertical-align:middle;">
  
  <ahref="">为什么我老是对不齐呢?why??</a>
  
  </div>
  
  </body>
  
  </html>
  
  怎么解决这个问题呢?!
  
  先说第一种,就是临近元素的vertical-middle导致的无法对齐的偏差问题解决方案:
  
  给中英文对象加一个zoom:1触发它的haslayout,通过研究发现一旦它有了haslayout之后,中英文就不会对不齐。
  
  <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  
  <htmlxmlns="http://www.w3.org/1999/xhtml">
  
  <head>
  
  <metacontent="text/html;charset=utf-8"http-equiv="Content-Type"/>
  
  <title>用CSS控制IE下中英文字不在同一线条上的效果</title>
  
  <styletype="text/css">
  
  *{margin:0;padding:0;}
  
  html{background:#fff;}
  
  body{position:relative;font:12px/1.6emVerdana,Lucida,Arial,Helvetica,宋体,sans-serif;color:#333;}
  
  </style>
  
  </head>
  
  <body>
  
  <div>
  
  <ahref=""style="zoom:1;">为什么我老是对不齐呢?why??</a>
  
  </div>
  
  </body>
  
  </html>
  
  第二种情况就是父元素的vertical-middle导致的无法对齐的偏差问题解决方案:
  
  给中英文对象加句vertical-align:baseline就可以解决!
  
  <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  
  <htmlxmlns="http://www.w3.org/1999/xhtml">
  
  <head>
  
  <metacontent="text/html;charset=utf-8"http-equiv="Content-Type"/>
  
  <title>用CSS控制IE下中英文字不在同一线条上的效果</title>
  
  <styletype="text/css">
  
  *{margin:0;padding:0;}
  
  html{background:#fff;}
  
  body{position:relative;font:12px/1.6emVerdana,Lucida,Arial,Helvetica,宋体,sans-serif;color:#333;}
  
  </style>
  
  </head>
  
  <body>
  
  <divstyle="vertical-align:middle;">
  
  <ahref=""style="vertical-align:baseline;">为什么我老是对不齐呢?why??</a>
  
  </div>
  
  </body>
  
  </html>
  
  但是我们可以看到,下划线好像贴的过紧,这个时候我们依然还需要给它加句zoom:1;触发它的hasLayout来避免过紧贴合!。
  
  <ahref=""style="zoom:1;"vertical-align:baseline;">为什么我老是对不齐呢?why??</a>
  
  如果您碰到其他情况的中英文对不齐的情况,那么也可以尝试使用上述两种方法来解决。当然最有效的莫过于就是直接中英文都统一使用宋体。

分享到:
本文"用CSS控制IE下中英文字不在同一线条上的效果"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4