制作按钮 - <按钮>或<div>?

use*_*114 43 html

我想知道在网页上使用什么html元素用于按钮 - 我想像twitter那样设置我的'按钮'.例如:

http://twitter.com/twitter

推文列表底部的"更多"按钮 - 是<button>元素还是<div>元素?我想知道使用哪个.我认为,<button>或者<div>我们可以提供翻转状态和所有这些东西,使它看起来愉快?

mea*_*gar 106

不要使用<div>标签来制作可点击元素.使用<a><button>元素.这使得禁用JavaScript的浏览器可以按预期与它们进行交互.即使您的功能需要JavaScript并且没有合理的默认行为,您也可以分配给<a>它,无论如何都使用它 - 它传达了"可点击"的语义.

一般情况下,选择最能描述其内容功能的标签,而不是其内容的外观,并避免使用不必要的<div>标签,以免文件遭受遗传.

  • @UpTheCreek A` <div>`不会将可点击性传达给屏幕阅读器,也不会为文档添加语义值.它们从根本上是无法访问的.至少你应该使用`<a>`标签,它们像`<div>`标签一样可以设置样式,但带有可点击的语义.对于可点击的UI元素,选择"<div>"和"<a>"是没有充分理由的. (26认同)
  • 众所周知,按钮在跨浏览器方式中比div更难以设置/定位.此外,如果'按钮'只是触发一些JS,那么我没有看到它是div的问题. (5认同)
  • @UpTheCreek我使用[vimium](https://chrome.google.com/webstore/detail/vimium/dbepggeogbaibhgnhhndojpepiihcmeb?hl=en)来"点击"链接.它不适用于div-clicks.拥有一个锚并没有摆脱任何风格的可能性(`display:block`,它的行为就像一个div),它增加了语义. (3认同)

bch*_*rry 8

Twitter上的"更多"按钮是<a>一个背景图像,CSS3圆角和边框.这是完整的CSS(elem is <a class="more round">):

 .more {
      outline: none;
      display: block;
      width: 100%;
      padding: 6px 0;
      text-align: center;
      border: 1px solid #ddd;
      border-bottom: 1px solid #aaa;
      border-right: 1px solid #aaa;
      background-color: #fff;
      background-repeat: repeat-x;
      background-position: left top;
      font-size: 14px;
      text-shadow: 1px 1px 1px #fff;
      font-weight: bold;
      height: 22px;
      line-height: 1.5em;
      margin-bottom: 6px;
      background-image: url('/images/more.gif');
    }
    
    .more:hover {
      border: 1px solid #bbb;
      text-decoration: none;
      background-position: left -78px;
    }
    
    .more:active {
      color: #666;
      background-position: left -38px;
    }
    
    .round {
      -moz-border-radius: 5px;
      -webkit-border-radius: 5px;
    }
Run Code Online (Sandbox Code Playgroud)
<a href="#" class="more round">Sample Button</a>
Run Code Online (Sandbox Code Playgroud)

你应该使用<a><button>不使用<div>.