Bootstrap 单选切换按钮开关 css
Bootstrap radio toggle buttons switch css
我使用的是 Bootstrap 版本 3.37,我有两个切换按钮,用户可以从中 select。
我想做的是一旦点击蓝色按钮,它应该是深色的“活动”,如果点击绿色按钮,那么绿色应该是“活动”。我怎么做?现在,无论我点击哪个切换按钮,绿色始终是“活动”按钮。我是否必须编写任何 javascript 代码来手动执行此操作,或者是否有可以在我可以使用的 boostrap 中使用的内置函数?谢谢
<div class="btn-group" data-toggle="buttons">
<label class="btn btn-default active" >
<input type="radio" name="green" id="green" value="green"> Green
</label>
<label class="btn btn-default" >
<input type="radio" name="blue" id="blue" value="blue"> Blue
</label>
</div>
这不是 Bootstrap 或 jQuery 问题;它与 Javascript 或 CSS 无关;只是 HTML.
HTML 在单选按钮上使用“名称”属性来定义一组单选按钮(因此它知道当您 select 集合中的另一个单选按钮时要关闭哪些单选按钮).
因此,您的两个单选按钮都需要具有相同的名称属性。在下面的示例中,我将它们命名为“颜色”。
<div class="btn-group" data-toggle="buttons">
<label class="btn btn-default active" >
<input type="radio" name="colour" id="green" value="green"> Green
</label>
<label class="btn btn-default" >
<input type="radio" name="colour" id="blue" value="blue"> Blue
</label>
</div>
除了 @Dave Cross
提到的内容之外,您不能只切换活动 class 而没有 javascript。但是你可以通过简单的 HTML 和 CSS 通过稍微重新构建你的 HTML 模板来实现它,如下所示
.btn-default {
color: #333;
background-color: #fff;
border-color: #ccc;
padding: 6px 12px;
border-style: solid;
border-width: 1px;
}
input {
display: none;
}
input:checked + label{
color: #fff;
background-color: #dc3545;
border-color: #dc3545;
}
<div class="btn-group" data-toggle="buttons">
<input type="radio" name="color" id="green" value="green" />
<label for="green" class="btn btn-default"> Green </label>
<input type="radio" name="color" id="blue" value="blue" />
<label for="blue" class="btn btn-default"> Blue </label>
</div>
使用 jQuery,您可以通过监听更改事件来切换活动 class,如下所示。
$('#color-switch').on('change', 'input', function() {
const container = $(this).closest('.btn-group');
container.find('.active').removeClass('active');
container.find('input:checked').parent().addClass('active');
});
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="color-switch" class="btn-group" data-toggle="buttons">
<label class="btn btn-default active">
<input type="radio" name="color" id="green" value="green"/> Green
</label>
<label class="btn btn-default">
<input type="radio" name="color" id="blue" value="blue"/> Blue
</label>
</div>
我使用的是 Bootstrap 版本 3.37,我有两个切换按钮,用户可以从中 select。
我想做的是一旦点击蓝色按钮,它应该是深色的“活动”,如果点击绿色按钮,那么绿色应该是“活动”。我怎么做?现在,无论我点击哪个切换按钮,绿色始终是“活动”按钮。我是否必须编写任何 javascript 代码来手动执行此操作,或者是否有可以在我可以使用的 boostrap 中使用的内置函数?谢谢
<div class="btn-group" data-toggle="buttons">
<label class="btn btn-default active" >
<input type="radio" name="green" id="green" value="green"> Green
</label>
<label class="btn btn-default" >
<input type="radio" name="blue" id="blue" value="blue"> Blue
</label>
</div>
这不是 Bootstrap 或 jQuery 问题;它与 Javascript 或 CSS 无关;只是 HTML.
HTML 在单选按钮上使用“名称”属性来定义一组单选按钮(因此它知道当您 select 集合中的另一个单选按钮时要关闭哪些单选按钮).
因此,您的两个单选按钮都需要具有相同的名称属性。在下面的示例中,我将它们命名为“颜色”。
<div class="btn-group" data-toggle="buttons">
<label class="btn btn-default active" >
<input type="radio" name="colour" id="green" value="green"> Green
</label>
<label class="btn btn-default" >
<input type="radio" name="colour" id="blue" value="blue"> Blue
</label>
</div>
除了 @Dave Cross
提到的内容之外,您不能只切换活动 class 而没有 javascript。但是你可以通过简单的 HTML 和 CSS 通过稍微重新构建你的 HTML 模板来实现它,如下所示
.btn-default {
color: #333;
background-color: #fff;
border-color: #ccc;
padding: 6px 12px;
border-style: solid;
border-width: 1px;
}
input {
display: none;
}
input:checked + label{
color: #fff;
background-color: #dc3545;
border-color: #dc3545;
}
<div class="btn-group" data-toggle="buttons">
<input type="radio" name="color" id="green" value="green" />
<label for="green" class="btn btn-default"> Green </label>
<input type="radio" name="color" id="blue" value="blue" />
<label for="blue" class="btn btn-default"> Blue </label>
</div>
使用 jQuery,您可以通过监听更改事件来切换活动 class,如下所示。
$('#color-switch').on('change', 'input', function() {
const container = $(this).closest('.btn-group');
container.find('.active').removeClass('active');
container.find('input:checked').parent().addClass('active');
});
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="color-switch" class="btn-group" data-toggle="buttons">
<label class="btn btn-default active">
<input type="radio" name="color" id="green" value="green"/> Green
</label>
<label class="btn btn-default">
<input type="radio" name="color" id="blue" value="blue"/> Blue
</label>
</div>