답변:
JavaScript 또는 jQuery로이를 선택하고 스타일을 지정할 수 있지만 CSS만으로는이를 수행 할 수 없습니다.
예를 들어, 사이트에 jQuery를 구현 한 경우 다음을 수행 할 수 있습니다.
var last_visible_element = $('div:visible:last');
희망하는 것은 선택한 div를 감싸는 클래스 / ID를 갖지만 코드의 모양은 다음과 같습니다.
var last_visible_element = $('#some-wrapper div:visible:last');
이 질문에 대한 진정한 대답은 할 수 없다는 것입니다. CSS 전용 답변의 대안은이 질문에 대한 정답은 아니지만 JS 솔루션을 수용 할 수있는 경우 여기에서 JS 또는 jQuery 답변 중 하나를 선택해야합니다. 그러나 위에서 말했듯이 진실하고 정확한 대답은 인라인 스타일에서만 작동하며 전반적으로 열악한 부정적 선택자를 사용 하여 연산자를 기꺼이 받아들이지 않으면 CSS 에서이 작업을 안정적으로 수행 할 수 없다는 것입니다 해결책.:not
[style*=display:none]
:not
당신이 언급 한대로 운영자 를 사용하면 특정 상황에서 작동 할 수 있다고 생각합니다 . 예를 들어, 내가 JS 조건부 :) 다음 인라인 스타일을 추가하고, 따라서 솔루션이 실제로 완벽하게 작동 요소가 숨어있는 곳 내 상황에 완벽하게 작동
인라인 스타일을 사용할 수 있다면 CSS만으로도 인라인 스타일을 사용할 수 있습니다.
이전 요소가 표시되면 다음 요소에서 CSS를 수행하는 데 이것을 사용하고 있습니다.
div [style = 'display : block;'] + 테이블 { 필터 : blur (3px); }
[style*='display: block']
그것을 가질 수 있기 때문에 display: block !important;
또는 그것으로 바꿀 것입니다 <div style="display: block">
:-)
.btn-group > .btn.d-none + .btn
"부트 스트랩의 입력 그룹에 사용 (
순수 JS 솔루션 (예 : jQuery 또는 다른 프레임 워크를 다른 용도로 사용하지 않고이 작업을 위해서만 다운로드하지 않으려는 경우) :
<div>A</div>
<div>B</div>
<div>C</div>
<div style="display:none">D</div>
<div style="display:none">E</div>
<script>
var divs = document.getElementsByTagName('div');
var last;
if (divs) {
for (var i = 0; i < divs.length; i++) {
if (divs[i].style.display != 'none') {
last = divs[i];
}
}
}
if (last) {
last.style.background = 'red';
}
</script>
CSS로는 불가능하지만 jQuery로도 가능합니다.
jQuery :
$('li').not(':hidden').last().addClass("red");
HTML :
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li class="hideme">Item 4</li>
</ul>
CSS :
.hideme {
display:none;
}
.red {
color: red;
}
jQuery (이전 솔루션) :
var $items = $($("li").get().reverse());
$items.each(function() {
if ($(this).css("display") != "none") {
$(this).addClass("red");
return false;
}
});
$('li:visible:last').addClass('red')
.
$('li').not(':hidden').last().addClass("red");
숨겨진 요소가 더 이상 필요하지 않으면 element.remove()
대신을 사용하십시오 element.style.display = 'none';
.