`

不同浏览器上按钮的不同显示效果和解决方法

 
阅读更多

IE和FireFox在显示按钮时,具有不同的行为。这个行为在单独使用按钮时表现不太明显,但是当把一个很大的按钮放置到另外一个更小的包容元素时候,就表现的特别明显。比如放置到一个div元素当中,如下所示:

 

<html>
  <head>
    <style>
      .buttonContainer {
        position:absolute;
        overflow:visible;
      }
      
      .backbutton {
        font-size: 20px;
        font-family: Arial;
        font-weight: bold;
        font-style: normal;
        font-variant: normal;
      }
    </style>
  </head>
  <body>
    <div id="widget1" class="buttonContainer" style="left: 4px; top: 48px; width: 31px; height: 11px; z-index: 1; cursor: pointer; border: 1px solid red;">
      <div style="height: 100%; width: 100%; border: 1px solid green;">
        <button style="height: 100%; width: 100%;" class="backbutton">Back</button>
      </div>
    </div>
    
    <div id="widget2" class="buttonContainer" style="left: 4px; top: 100px; width: 31px; height: 11px; z-index: 1; cursor: pointer; border: 1px solid red;">
      <div style="height: 100%; width: 100%; border: 1px solid green;">
        <input type="button" value="Back" style="height: 100%; width: 100%;" class="backbutton"/>
      </div>
    </div>
  </body>
</html>

在FireFox和IE上分别执行上述代码后的结果如下:

 

     IE                                                   FireFox
                                                 

可以看到,虽然按钮的高度都设置为相对于包容元素的100%,但是在IE中按钮自动撑高了包容元素,而在Firefox中,按钮超出包容元素的部分被截断了。

为了解决上述问题,可以将按钮的高度设置为auto,如下所示:

 

<button style="height: auto; width: 100%;" class="backbutton">Back</button>
<input type="button" value="Back" style="height: auto; width: 100%;" class="backbutton"/>

在FireFox和IE上分别执行上述代码后的结果如下:

     IE                                        FireFox
                                     

此时,当包容元素没有设置边框时候,IE和FireFox的显示效果就比较类似了。

 

另外,FireFox中的按钮看起来总是比用其他方式模拟的按钮大(比如A标签),也比IE中的按钮大,原因是FireFox的按钮中有一个伪元素(Pseudo-elements),可能用来当按钮获得焦点时候,显示按钮的虚边框。而这个伪元素会占据额外的高度和宽度。如Fix Firefox Button Padding中描述的,我们可以通过设置特定于Firefox的css来解决这个问题。

 

      /* Used within FF chrome to target CSS to specific URLs: being FF-specific,
       it is also useful for targeting FF-only code */
      @-moz-document url-prefix(http://) {
        button::-moz-focus-inner, input[type="button"]::-moz-focus-inner, input[type="submit"]::-moz-focus-inner, input[type="reset"]::-moz-focus-inner {
          padding: 0 !important;
          border: 0 none !important;
        }
      }

有时候,上述设置过后,仍然会发现按钮比其他模拟元素大,此时可以像Firefox Button Height Fix中描述的一样,根据页面具体情况,设置按钮的margin属性如下:

 

 

input::-moz-focus-inner { 
	border: 0; 
	padding: 0; 
	margin-top:-2px; 
	margin-bottom: -2px; 
}

 

 

另外为了使各个浏览器中的按钮显示尽量一致,我们可以设置按钮的overflow属性为visible,width属性为auto,如Styling HTML Submit Buttons中描述的:

 

.submit {
  cursor:pointer;
  overflow:visible; /* ie6/7 width fix */
  width:auto; /* ie6/7 width fix */
  padding:1px 5px;
  background:#ddd;
  color:#333;
  font:10pt arial, sans-serif;
  border:1px solid #aaa;
  }

我们也可以全部使用图片按钮来代替普通按钮,如-moz-focus-inner中描述的。但是当需要国际化时候,则需要很多的图片来支持不同的语言,这个显然不太合适。

 

其他比较有意思的关于按钮和CSS的文章:

css3-patterned-buttons

15 css tricks that must be learned

 

 

 

 

 

  • 大小: 2.2 KB
  • 大小: 1.5 KB
  • 大小: 2.2 KB
  • 大小: 2.1 KB
0
0
分享到:
评论

相关推荐

    微信浏览器内显示遮罩层提示点击右上角

    5. **兼容性处理**:虽然大部分现代手机都支持这些特性,但为确保更广泛的设备兼容性,需要测试不同设备和浏览器的显示效果,并根据需要进行调整。 6. **Demo**:在提供的"Demo"文件中,应该包含了实现上述功能的...

    流行按钮兼容各浏览器

    "流行按钮兼容各浏览器"的主题着重于创建一种设计风格的按钮,它不仅美观,而且能在不同的浏览器之间保持一致的显示效果。这通常涉及到CSS(层叠样式表)技术的深入理解和跨浏览器兼容性问题的解决。 首先,CSS源码...

    web页在微信中访问增加遮罩层 右上角弹出在浏览器中打开

    在微信中访问Web页面时...综上所述,"web页在微信中访问增加遮罩层 右上角弹出在浏览器中打开"是解决微信内置浏览器限制的一种常见策略,它通过遮罩层和提示按钮,引导用户在更适合的环境下浏览Web页面,提升用户体验。

    IE浏览器访问管理系统部分按钮和组件显示不全解决办法

    在使用Internet Explorer(IE)浏览器访问某些管理系统时,可能会遇到一个问题:页面上的部分按钮和组件显示不完整。这种情况通常是由于浏览器兼容性问题、浏览器设置不当或系统插件冲突导致的。以下是一些解决此类...

    解决ie8按钮和文字变小问题。

    Internet Explorer 8(简称IE8)作为一款较老版本的浏览器,其对CSS的支持并不完善,经常会出现按钮和文字显示异常的问题,比如字体过小等。本文将详细介绍如何解决IE8环境下按钮和文字变小的问题,并提供相应的解决...

    手机浏览器 后退按钮强制刷新页面方法总结

    尽管这些标签在理论上应该阻止页面被缓存,但实际效果因浏览器而异,有些浏览器可能会忽略这些设置。 其次,针对服务器端的技术,例如在JSP中,我们可以设置响应头来禁止缓存。以下是一个JSP示例,它使用了`...

    最全透明图片浏览器不兼容问题解决方案

    这些方法旨在帮助开发者在不牺牲设计质量的情况下,确保网站在IE6上的正常显示。 首先,一种简单但可能不完美的解决方案是为IE6单独提供GIF格式的图片,其他现代浏览器则使用PNG。通过CSS私有属性(例如`_...

    QTabWidget+QToolBar实现浏览器标签页

    当标签数量过多,无法在主窗口内全部显示时,我们可以将多余的标签移至下拉菜单中,通过QToolBar的按钮触发下拉菜单的显示,从而提供一个优雅的解决方案。 在代码实现中,`tabworkspace.cpp`和`tabworkspace.h`可能...

    jquery 调用浏览器打印功能

    而“jQuery 调用浏览器打印功能”是利用 jQuery 实现的一种方法,允许用户通过点击按钮或执行特定操作来触发浏览器的打印功能,从而打印网页内容。在描述中提到了 jqPrint 插件,这是一个专门用于打印 jQuery 对象...

    CodeCopy浏览器扩展实现在每个代码块上添加一个复制至剪贴板的按钮

    这包括选择合适的颜色、大小、位置,以及响应式设计,确保按钮在不同设备和屏幕尺寸上都能正常显示。 6. **异步编程**:考虑到可能的延迟加载或动态生成的代码块,CodeCopy可能使用`MutationObserver`来监听DOM的...

    微信判断浏览器自动弹出遮罩层【完整代码】.zip

    8. **兼容性测试**:在实际应用中,需要确保这个解决方案在各种设备和浏览器上都能正常工作。这就需要进行跨平台和跨浏览器的兼容性测试。 总的来说,这个压缩包提供的代码是一个解决微信内打开网页时自动弹出遮罩...

    课程设计 网页浏览器 课程设计 网页浏览器

    8. **响应式设计**: 针对不同设备和屏幕尺寸设计网页,确保在手机、平板和桌面电脑上都能良好显示。 9. **安全与隐私**: 学习如何保护用户数据,避免跨站脚本攻击(XSS)、跨站请求伪造(CSRF)等网络安全问题。 ...

    极简单高效兼容jquery两个按钮点击隐藏或显示两个不同对象_jmjjp制作整理

    在本文中,我们将深入探讨如何使用jQuery实现两个按钮来控制两个不同对象的隐藏与显示,这一功能具有良好的浏览器兼容性,包括IE8及以上版本以及360等主流浏览器。这个功能由jmjjp制作整理,旨在提供一种简洁、高效...

    js简洁客服和返回顶部右侧漂浮代码,有动画效果,兼容主流浏览器

    在前端开发中,创建用户友好的交互体验是至关重要的,而"js简洁客服和返回顶部右侧漂浮代码,有动画效果,兼容主流浏览器"正是针对这一需求的解决方案。这个项目结合了JavaScript(js)、ECMAScript(ECMAScript是...

    网站首页全屏banner和滚动新闻代码(jQuery),自动滚动切换,也可点击按钮切换,适合网站首页使用,兼容主流浏览器

    4. **兼容性处理**:考虑到不同的浏览器可能对CSS3、JavaScript等支持程度不同,项目中可能包含了特定的浏览器检测和polyfill,以确保在IE、Firefox、Chrome、Safari等主流浏览器上的正常运行。 在实际应用这个代码...

    C#多标签浏览器

    在提供的压缩包文件中,"帮助说明.txt"可能是开发者为用户编写的使用指南,详细解释了软件的安装、配置和常见问题的解决方法。而"豹子浏览器"可能是实际的程序可执行文件,用户可以通过运行这个文件来启动和使用这款...

    日历控件(浏览器兼容)

    1. **JavaScript**:作为基础脚本语言,JavaScript负责处理用户的交互,如点击按钮显示或隐藏日历,以及选择日期后的逻辑处理。 2. **jQuery**:一个流行的JavaScript库,简化了DOM操作、事件处理和动画效果,使得...

    Extjs4 图片浏览器

    10. **Responsive Design(响应式设计)**:为了适应不同屏幕尺寸的设备,开发者可能还考虑了响应式设计,使图片浏览器在手机、平板电脑和桌面端都有良好的显示效果。 总之,ExtJS4图片浏览器是利用ExtJS4的组件、...

    IE9浏览器小图标变大图标的解决办法

    ### IE9浏览器小图标变大图标的解决办法 在日常使用IE9浏览器的过程中,部分用户可能会遇到这样一个问题:浏览器中的小图标(例如地址栏、标签页等处的图标)突然变大,这不仅影响美观,也可能导致操作不便。本文将...

Global site tag (gtag.js) - Google Analytics