Изменение блоков при нажатии
Всем привет, у меня есть блоки. Я хочу при нажатии на него менять только его background-color, а при нажатии на другой блок, возвращать тот в исходное состояние, а на выбранный накидывать background-color.
Я использую JS, так что если можно через него, то подскажите, буду рад. Заранее спасибо |
Georgie0409,
ваши попытки где? Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [html run] ... минимальный код страницы с вашей проблемой [/html] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
<div id = 'main_container'>
<div id = 'container1>
<div id = 'container2>
<div id = 'container3>
<div id = 'container4>
</div>
#main_container{
positon: absolute;
height: 8vmax;
width: 8vmax;
}
#container1{
positon: absolute;
height: 2vmax;
width: 2vmax;
background-color : rgba(192,192,192, 0.5);
}
#container2{
positon: absolute;
height: 2vmax;
width: 2vmax;
left: 2vmax;
background-color : rgba(192,192,192, 0.5);
}
#container3{
positon: absolute;
height: 2vmax;
width: 2vmax;
left: 2vmax;
background-color : rgba(192,192,192, 0.5);
}
#container4{
positon: absolute;
height: 2vmax;
width: 2vmax;
left: 2vmax;
background-color : rgba(192,192,192, 0.5);
}
jQuery(document).ready(function() {
$("#container1").click(function() {
$("#container1").css({
'background-color' : 'rgba(192,192,192, 0.25)',
});
});
$("#container2").click(function() {
$("#container2").css({
'background-color' : 'rgba(192,192,192, 0.25)',
});
});
$("#container3").click(function() {
$("#container3").css({
'background-color' : 'rgba(192,192,192, 0.25)',
});
});
$("#container4").click(function() {
$("#container4").css({
'background-color' : 'rgba(192,192,192, 0.25)',
});
});
});
Я могу при нажатии на container1 делать изменения в container2, container3, container4, но у меня в основном коде очень много блоков и я просто изуродую код) Может можно как-то сделать по другому? |
Georgie0409,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.main_container{
display: flex;
height: 8vmax;
width: 8vmax;
}
.main_container > .container{
height: 2vmax;
width: 2vmax;
border: 1px solid #0000CD;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(function() {
var divs = $('.container');
$('.main_container').on('click', '.container', function() {
divs.css({'background-color' : ''});
$(this).css({'background-color' : 'rgba(192,192,192, 0.25)'});
})
});
</script>
</head>
<body>
<div class='main_container'>
<div class='container'></div>
<div class='container'></div>
<div class='container'></div>
<div class='container'></div>
</div>
</body>
</html>
|
Если без привлечения лишних сущностей, то можно, например, так...
<!doctype html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.main_container {
display: flex;
height: 8vmax;
width: 8vmax;
}
.main_container > .container {
height: 2vmax;
width: 2vmax;
border: 1px solid #0000CD;
box-sizing: border-box;
}
</style>
<script>
document.addEventListener("click", event => {
const container = event.target.closest(".main_container > .container");
if(container) {
const root = container.parentNode;
if(root._lastContainer)
root._lastContainer.style.backgroundColor = "";
container.style.backgroundColor = "rgba(192, 192, 192, 0.25)";
root._lastContainer = container;
}
});
</script>
</head>
<body>
<div class="main_container">
<div class="container"></div>
<div class="container"></div>
<div class="container"></div>
<div class="container"></div>
</div>
</body>
</html>
рони, можно ведь запомнить, какой был выбран? Проверьте, что будет, если добавить ещё один main_container |
Цитата:
|
Цитата:
|
| Часовой пояс GMT +3, время: 08:05. |