Как сделать div выбранным в HTML?
Я попытался сделать div как выбранный, а не зависать.
Мне нужно изменить цвет контура, когда выбран div. Я пробовал то же самое, что и наведение. Но мне нужна помощь в селекторе. Возможно ли это с помощью JavaScript или CSS 3 достаточно?
Вот что я пробовал:
div {
background: #ccc;
margin: 20px;
}
div:hover {
outline: 1px solid blue;
}
<div>1</div>
<div>2</div>
<div>3</div>
Ответы
Ответ 1
Вы можете попробовать :focus
псевдокласс. Обратите внимание, что вам понадобится tabindex
, чтобы сделать ваш div
доступным.
div {
background: #ccc;
margin: 20px;
}
div:focus {
outline: 1px solid blue;
}
<div tabindex="-1">1</div>
<div tabindex="-1">2</div>
<div tabindex="-1">3</div>
Ответ 2
Как я уже сказал в своем другом ответе, вы можете использовать :focus
псевдокласс.
Но есть проблема: он не будет работать, если элементы содержат другие настраиваемые элементы.
Однако он может быть исправлен с использованием событий JS:
var els = document.body.children;
for(var i=0; i<els.length; ++i) {
els[i].addEventListener('focus', focus, true);
els[i].addEventListener('blur', blur, true);
}
function focus() {
this.classList.add('focus');
}
function blur() {
this.classList.remove('focus');
}
div {
background: #ccc;
margin: 20px;
}
div:focus, div.focus { /* :focus is a fallback in case JS is disabled */
outline: 1px solid blue;
}
<div tabindex="-1">
1
<input />
</div>
<div tabindex="-1">2</div>
<div tabindex="-1">3</div>
Ответ 3
Другой подход с использованием CSS:
input:active,
input:focus,
textarea:active,
textarea:focus,
select:active,
select:focus {
outline: 1px solid blue;
}
Ответ 4
Пробовали ли вы использовать события?
function selected(pDiv) {
$("#div" + pDiv).attr("style", "border-style: solid");
// Here write a For Loop to put "border-style: none" to everyone else
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="div1" onclick="selected(1)">1</div>
<div id="div2" onclick="selected(2)">2</div>
<div id="div3" onclick="selected(3)">3</div>
Ответ 5
все, что вам нужно использовать focus
вместо hover
. Селектор: селектор фокусировки используется для выбора элемента с фокусом. Это разрешено для элементов, которые принимают события клавиатуры или другие пользовательские входы.
Разница между этими двумя элементами заключается в том, что событие hover
прослушивает позицию мыши относительно веб-страницы, в то время как событие focus
прослушивает выбранный элемент на странице.
Итак, ваш код может выглядеть примерно так:
div {
background: #ccc;
margin: 20px;
}
div:focus {
outline: 1px solid blue;
}
<div tabindex="-1">1</div>
<div tabindex="-1">2</div>
<div tabindex="-1">3</div>
Ответ 6
var valuesOld = new Array();
var num = 0;
function selected(pDiv) {
num = num +1;
valuesOld[num] = pDiv;
console.log("Key"+num+"Value="+valuesOld[num]);
$("#div" + pDiv).css("outline", " 1px solid rgb(133, 189, 147)");
if(valuesOld[2] > 0 && valuesOld[1]> 0){
$("#div" + valuesOld[num-1]).css("outline", " 1px solid rgba(133, 189, 147, 0)");
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js">
</script>
<div onclick="selected(1)" id="div1">1</div>
<div onclick="selected(2)" id="div2">2</div>
<div onclick="selected(3)" id="div3">3</div>