【问题标题】:Button with rounded bottom border [closed]带有圆形底部边框的按钮[关闭]
【发布时间】:2014-12-16 10:09:26
【问题描述】:

我想知道是否可以创建如下所示的按钮:

仅使用 CSS(无附加图片)。

你怎么看?

【问题讨论】:

  • 只需在 Google 上发布问题即可找到更准确的结果。

标签: html css css-shapes


【解决方案1】:

您应该发布到目前为止尝试过的代码。随便试试这个。

body {
  background-color: #333;
  text-align: center;
  padding-top: 20px;
}
button {
  background: beige;
  border-radius: 3px;
  box-shadow: 0px 5px 0px maroon;
  border: 0;
  color: #333;
  font-size: 17px;
  padding: 10px 30px;
  display: inline-block;
  outline: 0;
}
button:hover {
  background: #eaeab4;
  box-shadow: 0px 5px 0px #4d0000;
}
button:active {
  box-shadow: none;
  margin-top: 5px;
}
<button type="button">Text hover</button>

【讨论】:

    【解决方案2】:

    是的,可以使用box-shadow。该示例使用锚 (a) 标签,但也可以很容易地适应 button

    a {
      background: beige;
      border-radius: 4px;
      text-decoration: none;
      display: block;
      padding: 4px;
      width: 100px;
      text-align: center;
      color: black;
      -webkit-box-shadow: 0px 3px 1px maroon;
      -moz-box-shadow: 0px 3px 1px maroon;
      box-shadow: 0px 3px 1px maroon;
    }
    <a href='#'>Text hover</a>

    应用于button 元素:(注意使用border: 0px,因为按钮有默认边框)。

    .shape {
      background: beige;
      border-radius: 4px;
      padding: 4px;
      width: 100px;
      text-align: center;
      -webkit-box-shadow: 0px 3px 1px maroon;
      -moz-box-shadow: 0px 3px 1px maroon;
      box-shadow: 0px 3px 1px maroon;
      border: 0px;
    }
    <button class='shape'>Text hover</button>

    【讨论】:

    • 是,或者边框:jsfiddle.net/webtiki/ymg7dp5y
    • @web-tiki:是的,伙计。边框也是一个不错的选择(实际上对于所讨论的形状更简单),但正如我在其他答案的评论中指出的那样,如果将来还需要单独的边框,我觉得基于box-shadow 的示例为 OP 提供了更多的影响力已添加。
    【解决方案3】:

    自己试试

    border-radius:20px;
    
    -moz-box-shadow:    3px 3px 5px 6px #ccc;
    -webkit-box-shadow: 3px 3px 5px 6px #ccc;
     box-shadow:         3px 3px 5px 6px #ccc;
    

    【讨论】:

      【解决方案4】:
      .example    {
          moz-border-radius:20px; 
          webkit-border-radius:20px;
          border-radius:20px;
      }
      

      您想确保半径在每个浏览器中都有效,因此使用此代码使半径在所有浏览器中都有效。

      【讨论】:

      • 确实没有必要继续使用前缀版本。例如,上一个不支持border-radius 的Firefox 版本是3.6 版。 Firefox 现在是第 33 版。请参阅:caniuse.com/#search=border-radius
      • 但您仍然需要webkit-border-radius 进行 safari
      • Safari 版本 4,当然。 Safari 已经 4 年没有在 Windows 上更新了,即使是在 5.1 版上。
      • 您还需要 webkit 用于 Tizen 的命令,这是三星的操作系统
      • 使用 Android 浏览器,该浏览器从 2.2 版开始就支持此功能 - 现在是 4.4 版。
      【解决方案5】:

      不知道为什么每个人都建议使用box-shadow,您可以使用border-radius 和单独的底部边框来做到这一点:

      body {
        background: #000;
      }
      
      button {
        background: #B6B694; /* Guesswork, you can find the actual colour yourself. */
        border: none;
        border-bottom: 2px solid #f00;
        border-radius: 5px;
        display: inline-block;
        font-size: 14px;
        padding: 10px 14px;
        text-align: left;
        width: 150px;
      }
      <button>Text hover</button>

      【讨论】:

      • 非常正确,但建议使用盒子阴影以防用户稍后想添加实际边框。
      • 别忘了使用'outline: none;'当您单击它时删除“边框/轮廓”。
      • @Nick OP 没有说明他们希望这种情况发生。
      • @JamesDonnelly 有些浏览器会在您单击它时给出一个轮廓,它看起来像一个 1px 点状边框,但它不是边框。 w3schools.com/cssref/pr_outline.asp
      • @Nick 我很清楚这一点。但 OP 并没有指定这是不需要的。
      【解决方案6】:

      来自http://www.css3.info/preview/box-shadow/

      Example Q shows a shadow offset to the bottom and right by 5px, with a border-radius of 5px applied to each corner:
      #Example_Q {
      -moz-border-radius: 5px;
      border-radius: 5px;
      -moz-box-shadow: 5px 5px black;
      -webkit-box-shadow: 5px 5px black;
      box-shadow: 5px 5px black;
      }
      
      Example R shows the same shadow with a blur distance of 5px:
      #Example_R {
      -moz-border-radius: 5px;
      border-radius: 5px;
      -moz-box-shadow: 5px 5px 5px black;
      -webkit-box-shadow: 5px 5px 5px black;
      box-shadow: 5px 5px 5px black;
      }
      

      【讨论】: