【问题标题】:Making a <button> that's a link in HTML制作一个 <button> ,它是 HTML 中的链接
【发布时间】:2011-03-21 10:32:44
【问题描述】:

基本上,我喜欢 &lt;input type="submit"&gt; 的样式,当你添加一点 CSS 时,它带有可点击的按钮。但是,常规按钮没有这样的样式,没有一些主要的 CSS 或 JS,它们没有这样的可点击性,并且您必须使用图像。

我通过使用表单操作将提交按钮制作成链接,但这需要我为每个按钮制作一个新表单。我怎样才能找到一个快乐的媒介?使用多个表单会导致我的样式出现问题,除非我找到另一种方法来制作 HTML 中的链接按钮,这些按钮具有使它们具有按下状态的默认样式(我不是说浏览器默认设置)。

有什么想法吗?

【问题讨论】:

    标签: html css button


    【解决方案1】:
    <a href="#"><button>Link Text</button></a>
    

    您要求的链接看起来像一个按钮,所以使用一个链接和一个按钮 :-) 这将保留默认的浏览器按钮样式。该按钮本身什么也不做,但单击它会激活其父链接。

    演示:

    &lt;a href="http://stackoverflow.com"&gt;&lt;button&gt;Link Text&lt;/button&gt;&lt;/a&gt;

    【讨论】:

    【解决方案2】:

    重要提示: &lt;button&gt; 绝不应该是 &lt;a&gt; 的后代。

    在像https://validator.w3.org 这样的任何html 验证器中尝试&lt;a href="http://stackoverflow.com"&gt;&lt;button&gt;Link Text&lt;/button&gt;&lt;/a&gt;,你会得到一个错误。如果您使用按钮,那么使用按钮确实没有意义。只需使用 css 设置 &lt;a&gt; 的样式,使其看起来像一个按钮。如果您使用的是 Bootstrap 之类的框架,则可以应用按钮样式 btnbtn-primary 等。

    jsfiddle:button styled link

    .btnStack {
      font-family: Oswald;
      background-color: orange;
      color: white;
      text-decoration: none;
      display: inline-block;
      padding: 6px 12px;
      margin-bottom: 0;
      font-size: 14px;
      font-weight: normal;
      line-height: 1.428571429;
      text-align: center;
      white-space: nowrap;
      vertical-align: middle;
      cursor: pointer;
      border: 1px solid transparent;
      border-radius: 4px;
      -webkit-user-select: none;
      -moz-user-select: none;
      -ms-user-select: none;
      -o-user-select: none;
      user-select: none;
    }
    
    a.btnStack:hover {
      background-color: #000;
    }
    <link href='https://fonts.googleapis.com/css?family=Oswald:400' rel='stylesheet' type='text/css'>
    <a href="http://stackoverflow.com" class="btnStack">stackoverflow.com</a>

    【讨论】:

      【解决方案3】:

      使用javascript:

      <button onclick="window.location.href='/css_page.html'">CSS page</button>
      

      无论如何,您都可以在 css 中设置按钮的样式。希望对您有所帮助!

      祝你好运!

      【讨论】:

        【解决方案4】:

        您有三个选择:

        • 使用 CSS 将链接设置为看起来像按钮。

          只需查看问题下方的浅蓝色“标签”即可。

          在没有任何脚本的情况下,甚至可以在单击时给它们一个沮丧的外观(使用 :active 之类的伪类)。无论如何,现在很多主要网站(例如 Google)都开始使用 CSS 样式制作按钮,无论是否编写脚本。

        • 在每个元素周围放置一个单独的

          元素。

          正如你在问题中提到的那样。很简单,并且肯定可以在没有 Javascript(甚至 CSS)的情况下工作。但它添加了一些额外的代码,可能看起来不整洁。

        • 依赖 Javascript。

          这是你说你不想做的。

        【讨论】:

        • 制作单独的
          元素会导致任何间距吗?我试图让我的两个按钮并排显示,但我使用的样式表(我没有写它们)非常多,并且必须在某处有某种边距或填充,使它们位于顶部彼此的。有什么方法可以覆盖它或找出这个特定元素的样式保存在哪里?
        • 您将使用 CSS 来删除间距。安装 Firebug 并使用“检查元素”找出现有间距的来源。
        【解决方案5】:

        简单一点,它看起来就像表单中的按钮。只需使用输入并将锚标记包裹在其周围即可。

        <a href="#"><input type="button" value="Button Text"></a>
        

        【讨论】:

          【解决方案6】:

          &lt;a id="reset-authenticator" asp-page="./ResetAuthenticator"&gt;&lt;input type="button" class="btn btn-primary" value="Reset app" /&gt;&lt;/a&gt;

          【讨论】:

            【解决方案7】:

            恕我直言,三种最简单的方法

            1:您创建一个按钮的图像并在其周围放置一个 href。 (不是好办法,会失去灵活性,会带来很多困难和问题。)

            2(最简单的一个)-> JQuery

            <input type="submit" someattribute="http://yoururl/index.php">
            
              $('button[type=submit] .default').click(function(){
                 window.location = $(this).attr("someattribute");
                 return false; //otherwise it will send a button submit to the server
            
               });  
            

            3(也很简单,但我更喜欢上一个):

            <INPUT TYPE=BUTTON OnClick="somefunction("http://yoururl");return false" VALUE="somevalue">
            
            $fn.somefunction= function(url) {
                window.location = url;
            };
            

            【讨论】:

            • 图片选项不会有普通浏览器按钮的行为(根据文本内容展开、压抑等) Javascript 选项是多余的,如果 Javascript 失败,页面中会留下一个无用的按钮加载或关闭。
            • 如果您知道一些 css 并剪切图像按钮将拉伸并且将具有 normak 浏览器按钮的行为。
            • 对于我的罪过,我过去做过很多这样的事情,但是处理文本缩放和不同浏览器的默认按钮样式等问题使得将链接设置为假按钮是一个耗时的妥协。它可以在有限的情况下工作,但我不建议这样做。
            • 我也不会推荐它,它只是一种替代方案 :) 但好吧,我会留下它
            猜你喜欢
            • 2018-11-15
            • 1970-01-01
            • 2014-05-17
            • 2011-07-14
            • 1970-01-01
            • 2019-01-20
            • 1970-01-01
            • 2014-04-14
            • 1970-01-01
            相关资源
            最近更新 更多