问题描述
我有一个表单,其中有一个”Submit” 按钮和一个”Cancel” 锚点。 HTML 是这样的:
<input type="submit" value="Submit" />
<a href="some_url">Cancel</a>
我想让这两个人看起来和行为一样。没什么奇怪的,只是类似于”Ask Question” 的锚点在 StackOverflow 上看起来。
我可以得到两个看起来有点相似,有边框,背景颜色和悬停的背景颜色,但我不能很好地获得高度和垂直对齐来相互玩得很好。我会发布我的 CSS,但这是一个混乱,在这一点上,我认为可能会更容易从头开始,获得一个准系统的 CSS 布局工作,然后继续从那里。
附:我知道我可以使用一个而不是一个锚点,并连接 onClick 事件来做重定向。现在几乎是一个原则问题,现在要使用一个锚点来获得这个权利 (另外还有网络蜘蛛考虑在这里考虑) 。
最佳解决方案
你可以用简单的风格获得最好的东西就像:
.likeabutton {
text-decoration: none; font: menu;
display: inline-block; padding: 2px 8px;
background: ButtonFace; color: ButtonText;
border-style: solid; border-width: 2px;
border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
}
.likeabutton:active {
border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
}
(可能有一些修复,以阻止 IE6-IE7 处理聚焦按钮为 「活动」 。)
虽然这不一定看起来像本机桌面上的按钮; 事实上,对于许多桌面主题,将无法在简单的 CSS 中重现按钮的外观。
但是,您可以要求浏览器使用本机渲染,这是最好的:
.likeabutton {
appearance: button;
-moz-appearance: button;
-webkit-appearance: button;
text-decoration: none; font: menu; color: ButtonText;
display: inline-block; padding: 2px 8px;
}
不幸的是,正如你可能从 browser-specific 前缀猜到的,这是一个 CSS3 feature,并没有被支持到处。特别是 IE 和 Opera 会忽略它。但是,如果您将其他样式作为备份,支持 appearance
的浏览器会删除该属性,更喜欢显式的背景和边框!
您可以做的是默认使用 appearance
样式,并根据需要进行 JavaScript 修复,例如:
<script type="text/javascript">
var r= document.documentElement;
if (!('appearance' in r || 'MozAppearance' in r || 'WebkitAppearance' in r)) {
// add styles for background and border colours
if (/* IE6 or IE7 */)
// add mousedown, mouseup handlers to push the button in, if you can be bothered
else
// add styles for 'active' button
}
</script>
次佳解决方案
我希望这将有所帮助。
<a href="url"><button>SomeText</button></a>
第三种解决方案
我建议您使用输入提交/按钮而不是锚点,并将这行代码 onClick="javascript:location.href = 'http://stackoverflow.com';"
放在您要作为链接工作的输入提交/按钮中。
提交举例
<input type="submit" value="Submit" onClick="javascript:location.href = 'some_url';" />
按钮示例
<button type="button" onClick="javascript:location.href = 'some_url';" />Submit</button>
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。