当我点击屏幕上的其他地方时,按钮的底部边框消失了
Button's bottom border disappears when i click somewhere else on the screen
这是我的 HTML 代码:
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
<button>
<i class="fa fa-5x fa-motorcycle gobumpr_icon"></i>
</button>
<button>
<i class="fa fa-car fa-5x gobumpr_icon"></i>
</button>
这是我的 CSS:
button:focus {
border-bottom: thick solid #FFA800;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
transition: width 2s;
-webkit-transition: width 2s;
outline: none;
box-shadow: none;
}
我希望边框底部保持不变,直到单击另一个按钮为止。
我该怎么做?
如果您在 button:focus
上应用 css,这意味着在按钮成为焦点之前应用 css,但是当您单击屏幕上的任意位置时,其焦点会消失。
在单击的按钮上添加 .active
class 并对其应用 css。
$('button').click(function() {
$('button').removeClass('active');
$(this).addClass('active');
})
button.active {
border-bottom:thick solid #FFA800;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
transition: width 2s;
-webkit-transition: width 2s;
outline:none;
box-shadow:none;
}
为此,您可以在单击的按钮上设置 class,同时从任何其他按钮上删除 class。试试这个:
$('button').click(function() {
$('button').not(this).removeClass('active');
$(this).toggleClass('active');
})
button.active {
border-bottom: thick solid #FFA800;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
transition: width 2s;
-webkit-transition: width 2s;
outline: none;
box-shadow: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
<button><i class="fa fa-5x fa-motorcycle gobumpr_icon"></i></button>
<button><i class="fa fa-car fa-5x gobumpr_icon"></i></button>
:focus
无济于事,因为只要您在外部单击,边框就会消失。为此,您需要在按钮的 click
上添加一个 class,除非单击同一页面内的其他按钮,否则该按钮将保留。
$(function() {
var buttons = $('.button');
buttons.click(function(e) {
e.preventDefault();
buttons.removeClass('focus');
$(this).addClass('focus');
});
});
.button.focus {
border-bottom:thick solid #FFA800;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
transition: width 2s;
-webkit-transition: width 2s;
outline:none;
box-shadow:none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
<button class="button"><i class="fa fa-5x fa-motorcycle gobumpr_icon"></i></button>
<button class="button"><i class="fa fa-car fa-5x gobumpr_icon"></i></button>
发生这种情况是因为如果元素失去焦点,您应用的 css 将不会产生任何效果。这就是当您单击其他任何地方时发生的情况。
通过添加和删除不同的 class 来解决问题。
单击按钮时向元素添加一个不同的 class。
.borderBottom
{
border-bottom:thick solid #FFA800;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
transition: width 2s;
-webkit-transition: width 2s;
outline:none;
box-shadow:none;
}
在点击另一个时删除已经存在的 class。
参考 javascript 的 add class。
你也可以在没有 javascript 的情况下执行此操作:
input:checked + i{
border-bottom:thick solid #FFA800;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
transition: width 2s;
-webkit-transition: width 2s;
outline:none;
box-shadow:none;
}
input{
display:none;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
<label><input type="radio" name="test"><i class="fa fa-5x fa-motorcycle gobumpr_icon"></i></label>
<label><input type="radio"name="test"><i class="fa fa-car fa-5x gobumpr_icon"></i></label>
这是我的 HTML 代码:
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
<button>
<i class="fa fa-5x fa-motorcycle gobumpr_icon"></i>
</button>
<button>
<i class="fa fa-car fa-5x gobumpr_icon"></i>
</button>
这是我的 CSS:
button:focus {
border-bottom: thick solid #FFA800;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
transition: width 2s;
-webkit-transition: width 2s;
outline: none;
box-shadow: none;
}
我希望边框底部保持不变,直到单击另一个按钮为止。 我该怎么做?
如果您在 button:focus
上应用 css,这意味着在按钮成为焦点之前应用 css,但是当您单击屏幕上的任意位置时,其焦点会消失。
在单击的按钮上添加 .active
class 并对其应用 css。
$('button').click(function() {
$('button').removeClass('active');
$(this).addClass('active');
})
button.active {
border-bottom:thick solid #FFA800;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
transition: width 2s;
-webkit-transition: width 2s;
outline:none;
box-shadow:none;
}
为此,您可以在单击的按钮上设置 class,同时从任何其他按钮上删除 class。试试这个:
$('button').click(function() {
$('button').not(this).removeClass('active');
$(this).toggleClass('active');
})
button.active {
border-bottom: thick solid #FFA800;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
transition: width 2s;
-webkit-transition: width 2s;
outline: none;
box-shadow: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
<button><i class="fa fa-5x fa-motorcycle gobumpr_icon"></i></button>
<button><i class="fa fa-car fa-5x gobumpr_icon"></i></button>
:focus
无济于事,因为只要您在外部单击,边框就会消失。为此,您需要在按钮的 click
上添加一个 class,除非单击同一页面内的其他按钮,否则该按钮将保留。
$(function() {
var buttons = $('.button');
buttons.click(function(e) {
e.preventDefault();
buttons.removeClass('focus');
$(this).addClass('focus');
});
});
.button.focus {
border-bottom:thick solid #FFA800;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
transition: width 2s;
-webkit-transition: width 2s;
outline:none;
box-shadow:none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
<button class="button"><i class="fa fa-5x fa-motorcycle gobumpr_icon"></i></button>
<button class="button"><i class="fa fa-car fa-5x gobumpr_icon"></i></button>
发生这种情况是因为如果元素失去焦点,您应用的 css 将不会产生任何效果。这就是当您单击其他任何地方时发生的情况。
通过添加和删除不同的 class 来解决问题。
单击按钮时向元素添加一个不同的 class。
.borderBottom
{
border-bottom:thick solid #FFA800;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
transition: width 2s;
-webkit-transition: width 2s;
outline:none;
box-shadow:none;
}
在点击另一个时删除已经存在的 class。
参考 javascript 的 add class。
你也可以在没有 javascript 的情况下执行此操作:
input:checked + i{
border-bottom:thick solid #FFA800;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
transition: width 2s;
-webkit-transition: width 2s;
outline:none;
box-shadow:none;
}
input{
display:none;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
<label><input type="radio" name="test"><i class="fa fa-5x fa-motorcycle gobumpr_icon"></i></label>
<label><input type="radio"name="test"><i class="fa fa-car fa-5x gobumpr_icon"></i></label>