Я не совсем продается с использованием javascript, чтобы обеспечить визуальный эффект от того, что вы пытаетесь сделать; однако я бы использовал javascript - в этом случае jquery - для применения состояний класса к элементам. Дайте мне знать, если этот пример поможет, http://output.jsbin.com/kuxefunibi/.
Все, что я делаю, применяет класс .active
к оболочке, а затем применяет класс .current
к текущему щелчку по блоку. При этом в любое время, когда присутствует .active
, все из .blocks
внутри него полупрозрачны, если только класс .current
не применяется к классу .block
. Тогда и только тогда этот конкретный .block.current
будет твердым.
$(function() {
$('.block').on('click', function() {
$(this)
.siblings().removeClass('current').end()
.addClass('current')
.parent().addClass('active');
return false;
});
});
* {
box-sizing: border-box;
}
.block-list.active .block {
transition: opacity 0.2s;
opacity: 0.25;
}
.block-list.active .current {
opacity: 1;
}
.block {
width: 25%;
padding: 30px 15px;
float: left;
background-color: #333333;
cursor: pointer;
color: #ffffff;
text-align: center;
}
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<meta charset="utf-8">
<title>Testing</title>
</head>
<body>
<div class="block-list">
<div class="block block-1">some text here</div>
<div class="block block-2">some text here</div>
<div class="block block-3">some text here</div>
<div class="block block-4">some text here</div>
<div class="block block-5">some text here</div>
<div class="block block-6">some text here</div>
<div class="block block-7">some text here</div>
<div class="block block-8">some text here</div>
</div>
</body>
</html>
Вы можете добавить свой HTML. Лучше использовать обход DOM, чтобы найти дочерние/дочерние элементы, связанные с тем, который поднял событие, вместо предоставления всех идентификаторов. –
Использовать классы и исчезать на классе, а не на id. – Andy