如何消除“按下按钮”效果并使按钮在点击时变平

Posted

技术标签:

【中文标题】如何消除“按下按钮”效果并使按钮在点击时变平【英文标题】:How to remove 'press button' effect and make button flat even on click 【发布时间】:2015-10-06 23:00:39 【问题描述】:

我有以下样式的按钮

button 
  background: none;
  border-color: #87db41;
  color: #87db41;
  padding: 5px 5px;
  width: 30%;
  text-align: center;
  &: active 
    border-color: @aviata-color;

  
<button>Subscribe</button>

我想移除“按下按钮”的 3D 效果。我怎样才能做到这一点? 如果有帮助,我也在我的网站上使用引导程序

【问题讨论】:

border-style: outset; Remove the complete styling of an html button/submit的可能重复 您标记引导程序...为什么不使用引导程序中的“btn”类...它更有效且可自定义... 【参考方案1】:

你可以添加这个 CSS 属性:

button outline: none !important;

【讨论】:

【参考方案2】:

使用以下 CSS 规则:

:active  border-style: outset;

button 
  background: none;
  border-color: #87db41;
  color: #87db41;
  padding: 5px 5px;
  width: 30%;
  text-align: center;
  outline: none;

button:active 
  border-style: outset;
<button>Subscribe</button>

我还从激活的按钮中删除了轮廓。

【讨论】:

【参考方案3】:

只需将border-style 设置为solid 并包含一些active/focus 状态

button 
  background: none;
  border-style: solid;
  border-color: #87db41;
  color: #87db41;
  padding: 5px 5px;
  width: 30%;
  text-align: center;
  &: active 
    border-color: @aviata-color;

  


button.active.focus, button.active:focus,
button.focus, button:active.focus, 
button:active:focus, button:focus 
  outline: none;
  box-shadow: none;
  background-color: white;
<button>Subscribe</button>

【讨论】:

box-shadow:none 为我解决了问题(一些应用 box-shadow:inset 的样式表导致了我无法摆脱的按钮效果)。谢谢。【参考方案4】:

只是一个建议。

当你使用 bootstrap 时,你可以在 bootstrap.css 代码中看到:

.btn 
  display: inline-block;
  padding: 6px 12px;
  margin-bottom: 0;
  font-size: 14px;
  font-weight: normal;
  line-height: 1.42857143;
  text-align: center;
  white-space: nowrap;
  vertical-align: middle;
  -ms-touch-action: manipulation;
      touch-action: manipulation;
  cursor: pointer;
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
  background-image: none;
  border: 1px solid transparent;
  border-radius: 4px;

.btn:focus,
.btn:active:focus,
.btn.active:focus,
.btn.focus,
.btn:active.focus,
.btn.active.focus 
  outline: thin dotted;
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;

.btn:hover,
.btn:focus,
.btn.focus 
  color: #333;
  text-decoration: none;

.btn:active,
.btn.active 
  background-image: none;
  outline: 0;
  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);

.btn.disabled,
.btn[disabled],
fieldset[disabled] .btn 
  cursor: not-allowed;
  filter: alpha(opacity=65);
  -webkit-box-shadow: none;
          box-shadow: none;
  opacity: .65;

a.btn.disabled,
fieldset[disabled] a.btn 
  pointer-events: none;

.btn-default 
  color: #333;
  background-color: #fff;
  border-color: #ccc;

.btn-default:focus,
.btn-default.focus 
  color: #333;
  background-color: #e6e6e6;
  border-color: #8c8c8c;

.btn-default:hover 
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;

.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default 
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;

.btn-default:active:hover,
.btn-default.active:hover,
.open > .dropdown-toggle.btn-default:hover,
.btn-default:active:focus,
.btn-default.active:focus,
.open > .dropdown-toggle.btn-default:focus,
.btn-default:active.focus,
.btn-default.active.focus,
.open > .dropdown-toggle.btn-default.focus 
  color: #333;
  background-color: #d4d4d4;
  border-color: #8c8c8c;

.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default 
  background-image: none;

.btn-default.disabled,
.btn-default[disabled],
fieldset[disabled] .btn-default,
.btn-default.disabled:hover,
.btn-default[disabled]:hover,
fieldset[disabled] .btn-default:hover,
.btn-default.disabled:focus,
.btn-default[disabled]:focus,
fieldset[disabled] .btn-default:focus,
.btn-default.disabled.focus,
.btn-default[disabled].focus,
fieldset[disabled] .btn-default.focus,
.btn-default.disabled:active,
.btn-default[disabled]:active,
fieldset[disabled] .btn-default:active,
.btn-default.disabled.active,
.btn-default[disabled].active,
fieldset[disabled] .btn-default.active 
  background-color: #fff;
  border-color: #ccc;

.btn-default .badge 
  color: #fff;
  background-color: #333;
<button class="btn btn-default">BTN DEFAULT</button>

第一部分只是定义了所有“btn”类项目的显示属性。 第二部分为“btn-default”项目定义了更具体的显示设置(还有btn-success btn-warning等等……)。

如果您想自定义它,只需复制代码并将名称更改为“btnCustom”并编辑设置。或者只是添加一些自定义的特定 btn-* 显示,如 btn-pink 或任何东西。我经常用它来制作几个按钮颜色主题,在我的项目中有时我有 btn-black、btn-purple 之类的东西......

下面的代码作为“btnCustom btnCustom-default”的示例,一个不会移动的按钮,只是用引导程序“默认”颜色主题保持静态:

.btnCustom 
  display: inline-block;
  padding: 6px 12px;
  margin-bottom: 0;
  font-size: 14px;
  font-weight: normal;
  line-height: 1.42857143;
  text-align: center;
  white-space: nowrap;
  vertical-align: middle;
  cursor: pointer;
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
  background-image: none;
  border: 1px solid transparent;
  border-radius: 4px;

.btnCustom:hover,
.btnCustom:focus,
.btnCustom.focus 
  text-decoration: none;

.btnCustom:active,
.btnCustom.active 
  background-image: none;

.btnCustom.disabled,
.btnCustom[disabled],
fieldset[disabled] .btnCustom
  cursor: not-allowed;
  filter: alpha(opacity=65);
  opacity: .65;

a.btnCustom.disabled,
fieldset[disabled] a.btnCustom
  pointer-events: none;

.btnCustom-default 
  color: #333;
  background-color: #fff;
  border-color: #ccc;

.btnCustom-default:focus,
.btnCustom-default.focus 
  color: #333;

.btnCustom-default:hover 
  color: #333;

.btnCustom-default:active,
.btnCustom-default.active,
.open > .dropdown-toggle.btnCustom-default 
  color: #333;

.btnCustom-default:active:hover,
.btnCustom-default.active:hover,
.open > .dropdown-toggle.btnCustom-default:hover,
.btnCustom-default:active:focus,
.btnCustom-default.active:focus,
.open > .dropdown-toggle.btnCustom-default:focus,
.btnCustom-default:active.focus,
.btnCustom-default.active.focus,
.open > .dropdown-toggle.btnCustom-default.focus 
  color: #333;

.btnCustom-default:active,
.btnCustom-default.active,
.open > .dropdown-toggle.btnCustom-default 
  background-image: none;

.btnCustom-default.disabled,
.btnCustom-default[disabled],
fieldset[disabled] .btnCustom-default,
.btnCustom-default.disabled:hover,
.btnCustom-default[disabled]:hover,
fieldset[disabled] .btnCustom-default:hover,
.btnCustom-default.disabled:focus,
.btnCustom-default[disabled]:focus,
fieldset[disabled] .btnCustom-default:focus,
.btnCustom-default.disabled.focus,
.btnCustom-default[disabled].focus,
fieldset[disabled] .btnCustom-default.focus,
.btnCustom-default.disabled:active,
.btnCustom-default[disabled]:active,
fieldset[disabled] .btnCustom-default:active,
.btnCustom-default.disabled.active,
.btnCustom-default[disabled].active,
fieldset[disabled] .btnCustom-default.active 

.btnCustom-default .badge 
  color: #fff;
  background-color: #333;
<button class="btnCustom btnCustom-default">BTNCUSTOM DEFAULT</button>

这看起来有点复杂,或者很长。 但这允许您构建自己的 css“类引导”类样式,然后可以轻松重复使用,将您的编辑保存在“customBootstrap.css”文件中并将其添加到您的项目中。

希望这会有所帮助;)

【讨论】:

【参考方案5】:

如果您正在使用引导程序,请使用引导程序类 btnbtn-primary,然后在您的 css 中输入此代码。希望对你有帮助。

.btn 
    -webkit-border-radius: 0px;
    -moz-border-radius: 0px;
    -ms-border-radius: 0px;
    -o-border-radius: 0px;
    border-radius: 0px;
    outline: none;
    border: none;


.btn:active 
  border-style: outset;
  border: none;



<button class="btn btn-primary">Subscribe</button>

【讨论】:

【参考方案6】:

默认情况下button 获取属性-webkit-appearance: button 或其他任何取决于浏览器的属性。

您可以通过不同方式重置该样式。

使用border: none; 甚至border-style: outset;,因为它会将appearance 变成none

【讨论】:

以上是关于如何消除“按下按钮”效果并使按钮在点击时变平的主要内容,如果未能解决你的问题,请参考以下文章

如何在按钮按下时通过动画进行文本转换?

【Android开发】如何 使得 android长按按钮=多次按下按钮

在 reactJS 中,如何通过按下按钮来调用链接点击?

通过滑动手指按下按钮(用于钢琴效果)

如何防止触摸设备上按钮的粘滞悬停效果

如何防止活动在按下按钮时加载两次