css中ie7/ie6按钮文字垂直居中的兼容性解决方法

  这2天接手了一个离职的同事手头上的工作,发现了一个通用按钮样式在IE下存在兼容性问题。

 

  

先上代码

 代码如下 复制代码

display:inline-block;line-height:18px;margin-left:5px;border:1px #c4c3c3 solid;background:url(../images/bg_my3.gif) 0 0 repeat-x;text-align:center; cursor:pointer; width:45px

  

  本身我们想要的效果,也就是FF和IE8下的效果,如下图

     

  

  但是在IE6和IE7下,底部多了一条白边,如下图

  

 

  这三个按钮现在是没有设置height的,如果我设置了height,IE8和FF,还是正常的。但是IE6和7变成这样

  

  

  在谷歌搜索了众多资料,得出结论:

  在对button清除padding和border之后,ie6,7都会在上内边距产生1个像素的空间,firefox2,3(beta5)则会产生左右内边距3个像素和上内边距1个像素的空白

 

  难道这个BUG是无法解决的?

 

  于是我不死心,一边和JQuery丛林的朋友讨论,一边继续google~终于,皇天不负苦心人,在这一个网页中,我得到了启发  我发现,把line-height改成16px或者14px,在IE6下都能得到不错的效果,如下图

  

 

  但是,当line-height:16px时,IE7下的效果则为

  

 

  当line-height:14px时,IE7下的效果又是

    

  

  其实这2个效果已经差不多,但是我觉得当line-height:16px时,底部的空白还是要比line-height:14px时的空白要高一点点(好吧,我承认我比较钻牛角尖。)于是我确定为我的样式加上*line-height:14px;

  不知道大家发现没有,在line-height:14px;IE7下的按钮的字距离顶部是几乎没有内边距(padding-top),紧挨着,一点儿也不好看。于是我又加了一个+padding-top:1px;

  

  尽管加了+padding-top:1px;但其实效果还是不太理想的,因为文字并不是真正垂直居中的。不过,本人能力有限啊。求大家有更好的方法解决的贡献出来吧!

  最后把各浏览器下的效果再一起排排站吧

 

  FF下     

  IE8

  IE7

  IE6

 

  到目前为止,代码如下

  

 代码如下 复制代码

line-height:18px;*line-height:14px;+padding-top:1px;margin-left:5px;border:1px #c4c3c3 solid;background:url(../images/bg_my3.gif) 0 0 repeat-x;text-align:center; cursor:pointer; width:45px

 

  但是,别人做事怎么这么不负责任呢,这三个按钮的间距也明显不一样啊,好在在IE下基本一致,只是IE和FF有差别,我继续调整去……

时间: 2024-11-05 01:33:12

css中ie7/ie6按钮文字垂直居中的兼容性解决方法的相关文章

IE6下文字line-height失效的解决方法

当一个容器里的文字与img.input.textarea.select.object等元素相连时,对这个容器设置的line-height数值就会失效,同时以上元素的行高可能×2,受影响的浏览器:ie5.01.ie5.5.ie6.0. 解决方法是对与文字相连接的img.input.textarea.select.object等元素加以属性,代码如下: .line-height{   margin:(所属line-height-自身img,input,select,object高度)/2px 0; 

CSS实现让同一行文字和输入框对齐的方法

 本文实例讲述了CSS实现让同一行文字和输入框对齐的方法.分享给大家供大家参考.具体分析如下: 大家都知道有时候一个文本输入框和一段文字在同一行上显示,然而它们总不是垂直居中,看上去不美观,这段CSS代码就是解决这一问题的,上边一行是没有定义,下边一行是定义过的,可以看出有明显的差别.   代码如下: <!--CTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1

Asp.net中阻止页面按钮多次提交的解决办法_实用技巧

问题背景: 手头上的KPI分类评级考核系统,页面的提交按钮是用LinkButton或者Button做的.当大量用户同时在线访问该站点时,应用程序服务器出现CPU占用100%的糟糕状况,页面会卡住不动,用户不明情况连续点击提交按钮重复提交,造成数据库中出现大量的重复数据. 其实,即便服务器没有崩掉,快速频繁点击提交按钮,也会出现重复提交的问题. 尝试过:1)在提交按钮的点击事件里设置提交按钮的Enabled属性 Enabled = false; ,这个属性设置在未拿到新页面前是无效的,问题依然存在

win7系统使用过程中总提示内存不足的原因及解决方法

  在使用win7系统的过程中,有时候会遇到一些常见的故障问题,比如有的用户反映在操作使用win7系统的时候,系统总弹出"计算机的内存不足"的提示.大部分用户遇到这种情况往往不懂得如何处理.其实只要我们了解系统提示内存不足的原因所在,就能找出解决该问题的方法.下面小编就跟大家分享关于win7系统使用过程中总提示内存不足的原因及解决方法! 一.系统提示"计算机内存不足"的原因: 1.系统运行太多的应用程序; 2.硬盘剩余空间太少; 3.系统"虚拟内存&quo

MySQL中Union子句不支持order by的解决方法_Mysql

本文实例讲述了MySQL中Union子句不支持order by的解决方法.分享给大家供大家参考,具体如下: 我对DB知之甚少,这问题只在MySQL遇到,不知道别的DBMS是不是也如此. 问题是这样的,我打算在一个表里获得与某一行记录相邻的两行,并且想通过union一起取出来,所以这么写: select id,title from subjects where id>#some_id# order by id limit 1 union select id,title from subjects

Android Listview 滑动过程中提示图片重复错乱的原因及解决方法_Android

主要分析Android中Listview滚动过程造成的图片显示重复.错乱.闪烁的原因及解决方法,顺便跟进Listview的缓存机制. 1.原因分析 Listview item 缓存机制:为了使得性能更优,Listview会缓存行item(某行对应的view).listview通过adapter的getview函数获得每行的item.滑动过程中, a.如果某行item已经划出屏幕,若该item不在缓存内,则put进缓存,否则更新缓存: b.获取滑入屏幕的行item之前会先判断缓存中是否有可用的it

JS在Chrome浏览器中showModalDialog函数返回值为undefined的解决方法_javascript技巧

本文实例讲述了JS在Chrome浏览器中showModalDialog函数返回值为undefined的解决方法.分享给大家供大家参考,具体如下: 主页面: <script type="text/javascript"> function SelectGroupCust() { var temp = window.showModalDialog("Default2.aspx?xx=" + Date(), "", "dialog

关于jquery中动态增加select,事件无效的快速解决方法_jquery

近来做项目,用的jquery1.6.2库,当动态增加div 及select时,事件却不起作用. 查了一些资料,发现bind事件:向匹配元素附加一个或更多事件处理器.而live事件:为当前或未来的匹配元素添加一个或多个事件处理器. 其资料如下: [bind和live的区别] live方法其实是bind方法的变种,其基本功能就同bind方法的功能是一样的,都是为一个元素绑定某个事件,但是bind方法只能给当前存在的元素绑定事件,对于事后采用JS等方式新生成的元素无效,而live方法则正好弥补了bin

使用nodejs中httpProxy代理时候出现404异常的解决方法_node.js

在公司中使用nodejs构建代理服务器实现前后台分离,代码不能拿出来,然后出现httpProxy代理资源的时候老是出现404.明明被代理的接口是存在的.代码大概如下: var http = require('http'), httpProxy = require('http-proxy'); var proxy = httpProxy.createProxyServer({}); var server = http.createServer(function(req, res) { proxy.