Button со скриптом
Есть вот такой код.
<!doctype html>
<html lang="ru">
<head>
<meta charset="utf-8">
<title>index</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="index">
<meta name="Keywords" content="index">
<style>
.blok{
width: 400px;
height: 100px;
margin: 10px auto;
display: flex;
justify-content: space-around;
}
.kvadrat{
width: 100px;
height: 100px;
border: 3px solid #000;
}
#aktiv{
border: 3px solid #0504aa;
}
</style>
</head>
<body>
<div class="blok">
<button class="kvadrat k1" id="aktiv"></button>
<button class="kvadrat k2"></button>
<button class="kvadrat k3"></button>
</div>
<script>
let k1 = document.querySelector(".k1");
let k2 = document.querySelector(".k2");
let k3 = document.querySelector(".k3");
let aktiv_kvadrat1 = () => {
document.querySelector(".k1").id = "aktiv";
k2.removeAttribute("id");
k3.removeAttribute("id");
}
k1.addEventListener("click", aktiv_kvadrat1);
let aktiv_kvadrat2 = () => {
document.querySelector(".k2").id = "aktiv";
k1.removeAttribute("id");
k3.removeAttribute("id");
}
k2.addEventListener("click", aktiv_kvadrat2);
let aktiv_kvadrat3 = () => {
document.querySelector(".k3").id = "aktiv";
k2.removeAttribute("id");
k1.removeAttribute("id");
}
k3.addEventListener("click", aktiv_kvadrat3);
</script>
</body>
</html>
И он отрабатывает как нужно, НО когда кликаю, почему border каким то не понятным светом накладывается. И это именно с button если сделать с div то все будет хорошо работать. |
Цитата:
.kvadrat:focus{
outline: none;
}
|
Цитата:
|
рони,
А почему не использовать? |
Цитата:
<!doctype html>
<html lang="ru">
<head>
<meta charset="utf-8">
<title>index</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="index">
<meta name="Keywords" content="index">
<style>
.blok{
width: 400px;
height: 100px;
margin: 10px auto;
display: flex;
justify-content: space-around;
}
.kvadrat{
width: 100px;
height: 100px;
border: 3px solid #000;
}
.kvadrat.aktiv{
border: 3px solid #0504aa;
}
.kvadrat:focus{
outline: none;
}
</style>
</head>
<body>
<div class="blok">
<button class="kvadrat aktiv"></button>
<button class="kvadrat"></button>
<button class="kvadrat"></button>
</div>
<script>
let blok = document.querySelector(".blok");
let buttons = blok.querySelectorAll(".kvadrat");
let aktiv = ({target}) => {
target = target.closest(".kvadrat");
if(!target) return;
buttons.forEach(button => button.classList.toggle("aktiv", button === target))
}
blok.addEventListener("click", aktiv);
</script>
</body>
</html>
|
Id это имя конкретного элемента, что бы обращаться именно к нему.
Ну это как людям менять имена, что бы обращаться к любому из них только по определенному имени. В вашем случае вполне подойдет класс .aktiv{ border: 3px solid #0504aa; } |
Сергей Ракипов,
или ещё проще ...
<!doctype html>
<html lang="ru">
<head>
<meta charset="utf-8">
<title>index</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="index">
<meta name="Keywords" content="index">
<style>
.blok{
width: 400px;
height: 100px;
margin: 10px auto;
display: flex;
justify-content: space-around;
}
.kvadrat{
width: 100px;
height: 100px;
border: 3px solid #000;
}
.kvadrat.aktiv{
border: 3px solid #0504aa;
}
.kvadrat:focus{
outline: none;
}
</style>
</head>
<body>
<div class="blok">
<button class="kvadrat aktiv"></button>
<button class="kvadrat"></button>
<button class="kvadrat"></button>
</div>
<script>
let blok = document.querySelector(".blok");
let current = document.querySelector(".blok .kvadrat.aktiv");
let aktiv = ({target}) => {
target = target.closest(".kvadrat");
if(!target) return;
current && current.classList.remove("aktiv");
current = target;
current.classList.add("aktiv")
}
blok.addEventListener("click", aktiv);
</script>
</body>
</html>
|
А так было бы еще проще
<!doctype html>
<html lang="ru">
<head>
<meta charset="utf-8">
<title>index</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="index">
<meta name="Keywords" content="index">
<style>
.blok{
width: 400px;
height: 100px;
margin: 10px auto;
display: flex;
justify-content: space-around;
}
.kvadrat{
width: 100px;
height: 100px;
border: 3px solid #000;
}
.kvadrat.aktiv{
border: 3px solid #0504aa;
}
.kvadrat:focus{
outline: none;
}
</style>
</head>
<body>
<div class="blok">
<button class="kvadrat aktiv"></button>
<button class="kvadrat"></button>
<button class="kvadrat"></button>
</div>
<script>
let blok = document.querySelector(".blok");
let aktiv = function ({target}) {
target = target.closest(".kvadrat");
if(!target) return;
this.querySelector(".aktiv").classList.remove("aktiv");
target.classList.add("aktiv")
}
blok.addEventListener("click", aktiv);
</script>
</body>
</html>
|
рони,
voraa, Спасибо за ответы |
voraa,
:) |
| Часовой пояс GMT +3, время: 17:21. |