Bootstrap контурные кнопки - сохранить цвет фона при нажатии - PullRequest
0 голосов
/ 25 марта 2020

Я использую Bootstrap контурные кнопки.

Как сохранить "активную" кнопку С ФОНОВЫМ ЦВЕТОМ при нажатии?

Прямо сейчас, это происходит только при наведении мыши.

HTML

<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet"/>
<div class="btn-group-vertical btn-group-toggle d-flex align-items-center justify-content-center" data-toggle="buttons">
	<button type="button" class="btn btn-outline-dark btn-sm btn-block m-1 p-1" id="btn1" data-toggle="button" aria-pressed="false">
		btn1
	</button>

	<button type="button" class="btn btn-outline-dark btn-sm btn-block m-0 p-1" id="btn2" data-toggle="button" aria-pressed="false">
		btn2
	</button>

	<button type="button" class="btn btn-outline-dark btn-sm btn-block m-1 p-1" id="btn3" data-toggle="button" aria-pressed="false">
		btn3
	</button>

	<button type="button" class="btn btn-outline-dark btn-sm btn-block m-0 p-1" id="btn4" data-toggle="button" aria-pressed="false">
		btn4
	</button>
</div>

JSFidle

https://jsfiddle.net/28c0g5Lf/

Ответы [ 2 ]

0 голосов
/ 26 марта 2020

На случай, если кому-то понадобится ...

Я последовал совету Цимпо вместе с этим уроком для части JavaScript и получил работу ...

HTML

<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet"/>
<div class="btn-group-vertical btn-group-toggle d-flex align-items-center justify-content-center" id="buttonsDiv" data-toggle="buttons">
    <button type="button" class="btn btn-outline-dark btn-sm btn-block m-1 p-1" id="btn1" data-toggle="button" aria-pressed="false">
        btn1
    </button>

    <button type="button" class="btn btn-outline-dark btn-sm btn-block m-0 p-1" id="btn2" data-toggle="button" aria-pressed="false">
        btn2
    </button>

    <button type="button" class="btn btn-outline-dark btn-sm btn-block m-1 p-1" id="btn3" data-toggle="button" aria-pressed="false">
        btn3
    </button>

    <button type="button" class="btn btn-outline-dark btn-sm btn-block m-0 p-1" id="btn4" data-toggle="button" aria-pressed="false">
        btn4
    </button>
</div>

CSS

button:focus{
  color: #fff;
    background-color: #343a40;
    border-color: #343a40;
}

JS

// Get the container element
var btnContainer = document.getElementById("buttonsDiv");

// Get all buttons with class="btn" inside the container
var btns = btnContainer.getElementsByClassName("btn");

// Loop through the buttons and add the active class to the current/clicked button
for (var i = 0; i < btns.length; i++) {
  btns[i].addEventListener("click", function() {
    var current = document.getElementsByClassName("active");

    // If there's no active class
    if (current.length > 0) {
      current[0].className = current[0].className.replace(" active", "");
    }

    // Add the active class to the current/clicked button
    this.className += " active";
  });
}

Рабочий пример

0 голосов
/ 25 марта 2020

Добавьте этот код для кнопок с нажатой фокусировкой

button:focus{
  color: #fff;
    background-color: #343a40;
    border-color: #343a40;
}
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet"/>
<div class="btn-group-vertical btn-group-toggle d-flex align-items-center justify-content-center" data-toggle="buttons">
	<button type="button" class="btn btn-outline-dark btn-sm btn-block m-1 p-1" id="btn1" data-toggle="button" aria-pressed="false">
		btn1
	</button>

	<button type="button" class="btn btn-outline-dark btn-sm btn-block m-0 p-1" id="btn2" data-toggle="button" aria-pressed="false">
		btn2
	</button>

	<button type="button" class="btn btn-outline-dark btn-sm btn-block m-1 p-1" id="btn3" data-toggle="button" aria-pressed="false">
		btn3
	</button>

	<button type="button" class="btn btn-outline-dark btn-sm btn-block m-0 p-1" id="btn4" data-toggle="button" aria-pressed="false">
		btn4
	</button>
</div>

Рабочий пример

...