How to create an HTML button that acts like a link?
我想创建一个HTML按钮,其作用类似于链接。所以,当你点击这个按钮时,它会重定向到一个页面。我希望它尽可能容易接近。
我也希望这样,在URL中没有任何额外的字符或参数。
我怎样才能做到这一点?
根据目前发布的答案,我目前正在进行以下操作:
1 2 3 | <form method="get" action="/page2"> <button type="submit">Continue</button> </form> |
但问题在于,在Safari和Internet Explorer中,它在URL的末尾添加了问号字符。我需要找到一个不在URL末尾添加任何字符的解决方案。
还有另外两种解决方案可以做到这一点:使用javascript或设计链接的样式,使其看起来像一个按钮。
使用javascript:
1 | <button onclick="window.location.href='/page2'">Continue</button> |
但这显然需要JavaScript,因此屏幕阅读器无法访问它。链接的目的是转到另一页。因此,试图让按钮像链接一样工作是错误的解决方案。我的建议是,您应该使用一个链接,并将其样式设置为一个按钮。
1 | Continue |
HTML
普通的HTML方法是将其放在
中使用链接时遇到了一个问题。
该按钮现在被视为提交按钮(HTML5)。我已经尝试了一种方法,并且找到了这个方法。
创建一个CSS样式按钮,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | .btn-style{ border : solid 1px #0088cc; border-radius : 6px; moz-border-radius : 6px; -webkit-box-shadow : 0px 0px 2px rgba(0,0,0,1.0); -moz-box-shadow : 0px 0px 2px rgba(0,0,0,1.0); box-shadow : 0px 0px 2px rgba(0,0,0,1.0); font-size : 18px; color : #696869; padding : 1px 17px; background : #eeeeee; background : -webkit-gradient(linear, left top, left bottom, color-stop(0%,#eeeeee), color-stop(49%,#eeeeee), color-stop(72%,#cccccc), color-stop(100%,#eeeeee)); background : -moz-linear-gradient(top, #eeeeee 0%, #eeeeee 49%, #cccccc 72%, #eeeeee 100%); background : -webkit-linear-gradient(top, #eeeeee 0%, #eeeeee 49%, #cccccc 72%, #eeeeee 100%); background : -o-linear-gradient(top, #eeeeee 0%, #eeeeee 49%, #cccccc 72%, #eeeeee 100%); background : -ms-linear-gradient(top, #eeeeee 0%, #eeeeee 49%, #cccccc 72%, #eeeeee 100%); background : linear-gradient(top, #eeeeee 0%, #eeeeee 49%, #cccccc 72%, #eeeeee 100%); filter : progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#eeeeee',GradientType=0 ); } |
或者在这里创建一个新的:css按钮生成器
然后用一个以所做的CSS样式命名的类标记创建链接:
1 | Link |
这是一把小提琴:
JS小提琴
您还可以将按钮
这样,您可以在同一表单中使用另一个按钮来提交表单,以备需要。我也认为在大多数情况下,这比将表单方法和操作设置为链接更可取(除非它是搜索表单,我猜…)
例子:
1 2 3 4 5 | <form method="POST" action="/SomePath"> <input type="text" name="somefield" /> <button type="button">Go to Target!</button> <button type="submit">submit form</button> </form> |
这样,第一个按钮重定向用户,而第二个按钮提交表单。
注意确保按钮不会触发任何操作,因为这将导致冲突。同样正如艾利乌所指出的,你应该知道,由于上述原因,根据标准,严格来说,这并不是有效的HTML。不过,它在Firefox和Chrome中确实如预期般工作,但我还没有在Internet Explorer中测试过它。
您可以使用javascript:
1 2 3 4 5 6 | <html> <button onclick='window.location ="http://www.google.com"'> </button> </html> |
将
在JavaScript中
1 2 3 | setLocation(base: string) { window.location.href = base; } |
在HTML中
1 | <button onclick="setLocation('/<whatever>')>GO</button>" |
如果你想重定向你网站上的网页,那么这里是我的方法-我已经将属性href添加到按钮中,然后onclick将此.getattribute('href')分配给document.location.href。
**如果您引用的URL超出了您的域,这将不起作用,因为"x-frame-options"指向"sameorigin"。
样例代码:
1 | <button onclick="document.location.href=this.getAttribute('href');" href="/">Home</button> |
如果你需要的是它看起来像一个按钮,强调梯度图像,你可以这样做:
1 | <i class="fa fa-home"> Button Text |