删除HTML按钮/提交的完整样式

May*_*yur 21 html css

我在所有浏览器中为所有浏览器设置一个提交按钮,它在所有浏览器中工作正常除了ie7当我点击提交按钮时它会移动到顶部一点点.它使它看起来变形.我使用了一个特定的CSS.

这是我使用的代码:

.button
{
    width   : 80px;
    background  : none;
    cursor  : pointer;
    font-family : 'voltaeftu-regular',Times New Roman;
    font-size   : 16px;
    color   : #fff;
    border  : none;
    margin      : 0px;
    padding     : 0px;
}
Run Code Online (Sandbox Code Playgroud)

bob*_*nce 18

是的,我担心样式按钮是一个不可避免的问题,IE(和Opera)会在点击时将按钮的内容向下移动一个像素.

你在这里有一堆可能的方法:

  1. 使用<button><span>内部的它,而不是一个<input type="button">.将按钮relative和范围定位absolutetop/ left 0,以便按钮内容的移动不会影响范围.丑陋,并将在其他浏览器中破解,因此您只希望这种样式适用于IE-and-maybe-Opera.

  2. 使用设置为按钮的链接而不是实际按钮,并将脚本应用于其click事件.与按钮不同,您可以完全控制链接的一致样式.我会建议不要这样做,因为你拖动了大量对按钮无意义的链接行为,如中键单击,右键单击书签,拖放等等.很多人都使用链接做按钮任务,但IMO非常不受欢迎.(特别是当他们使用javascript:链接时......可怕.)

  3. 使用非活动元素(例如,<span>而不是实际按钮),并将脚本应用于其click事件.再次,您可以获得完整的样式控制.这就是SO用于"添加评论"等操作的内容.麻烦的是你打破键盘导航; 您无法使用制表符,空格等来导航和激活控件.您可以通过为元素提供tabindex属性来在大多数浏览器中启用键盘导航,但是将tabindex非活动元素置为无效HTML.您也可以从脚本中编写它,并添加脚本以允许空格或返回以激活faux按钮.但是你永远不会完全重现浏览器表单字段的行为.

  4. 用一个替换整个东西<input type="image">.当然,您可以对图像进行像素完美控制!但是,尝试匹配渲染样式,并为每个按钮生成新图像,通常会让人感到痛苦.

选项2和3也存在引入JavaScript依赖关系的问题,因此当JS不可用时,您的表单将会中断.您可以通过<button>在标记中使用法线并将其替换为脚本中的其他控件来缓解这种情况,或者如果您从脚本创建它们也没问题.但最后,我通常的结论是,这是太多的努力和过于脆弱的结果,最好的事情是选择0:

  • 和它一起生活.单击按钮内容时,按钮内容移动的程度通常不是那么糟糕.


Mar*_*rks 2

我不知道这是否是问题所在,但您也可以尝试设置活动状态:

.button, .button:active{
...
}
Run Code Online (Sandbox Code Playgroud)

编辑:在 IE7 中使用以下迷你示例,看不到按钮移动:

<html>
<head>
<style type="text/css">
.button
{
width   : 80px;
background  : none;
cursor  : pointer;
font-family : 'voltaeftu-regular',Times New Roman;
font-size   : 16px;
color   : #fff;
border  : 1px solid #0f0;
margin      : 0px;
padding     : 0px;
}
</style>
</head>
<body style="background:#f00;">
    <input class="button" type="submit"/>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

只需设置一个边框即可查看按钮周围的情况。代码对我有用。