2011-10-17 4 views
2

CSS 만 사용하고 "error"클래스의 내부 div가 있다는 사실을 사용하여 외부 div에 스타일을 적용 할 수 있습니까?일부 div의 div를 포함하는 div에 스타일 적용

<div> 
    <div class = "error"> 
    </div> 
</div> 

나는 자바 스크립트에서이를 수행 할 수 있습니다. 순수한 CSS에서 불가능하기 때문에

편집

,이 같은 뭔가를 정말 비효율적이다? 더 깨끗한 방법이 있습니까? 나는 쉽게 돔을 바꿀 수 없다. 배경에 대해, 에러 클래스는 자동으로 레일의 레이블/입력을 감싸고 있지만 포함하고있는 DIV의 스타일을 지정하고 싶습니다.

$(".error").parent().addClass("error-wrapper"); 
+0

아니요. CSS에는 부모에게 버블 링하는 방법이 없습니다. 그것은 하향식 시스템입니다. –

+0

가능한 [CSS 상위 분류 자 ​​없습니까?] (http://stackoverflow.com/questions/1014861/is-there-a-css-parent-selector) – zzzzBov

+0

@spike, 만약 당신이 새로운 질문입니다. 새 질문을 만드십시오. – zzzzBov

답변

2

CSS 만 사용하는 것은 불가능합니다. DOM 트리에서 요소 부모를 찾는 방법은 없습니다.

jQuery와 같은 것을 사용하는 것은 꽤 쉽습니다.

+0

고마워, 제 편집 참조 – spike

+0

순수 JS를 사용하고 jQuery에서 벗어나는 것이 더 효율적입니다. 또는 오류 랩퍼 클래스가 id/클래스가있는 다른 div 안에 있으면 해당 div를 스타일을 자식으로 추가 할 수 있습니다. – 472084

+0

미안하지만 내 질문에 하나 추가하기 전에 JS 스 니펫을 보지 못했습니다. 나를위한 최선의 방법 같아. – spike

1

JavaScript를 사용할 때 문제가되는 것은 JavaScript를 사용 설정 한 사람들 만 외관상의 변화를 볼 수 있다는 것입니다. 이것이 페이지가 어떻게 보이는지에 대한 사소한 수정 일 뿐이라면 그것을 찾으십시오. JavaScript를 사용하지 않는 일반 사용자는 스타일이 누락되었음을 알지 못합니다. JavaScript가 비활성화 된 경우 요소가 페이지 주위에 무작위로 나타나는 주요 수정 인 경우 매우 좋은 대안은 아닙니다.

궁극적으로 이러한 방식으로 JavaScript를 사용하는 것은 나쁜 습관입니다. 실제로 다른 부서를 추가하는 것은 백엔드에서 수행하는 것이 더 나을 때 유용합니다. 서버가 사용자가 아니라 서버가되도록하십시오. 이는 고객이 선반에 직접 가서 재고를 보관하는 것이 아니라 일부 품목의 추가 수량을 찾기 위해 백스트록 (backstock) 영역으로 이동하라는 의미입니다.

+0

나는 그것이 이상하지 않다는 것에 동의하지만, 서버에서 그것을 고칠 때 커다란 고통이 될 것이고, JS가없는 사용자가 보지 않아도되는 wrapping div의 순수한 코스메틱 배경 스타일이다. – spike

+0

@ spike : 필자는 프로그래머에게 지금 변경을 지시했습니다. 왜냐하면 나중에 변경해야 할 것이 더 많기 때문입니다. 그러나 추가하는 배경 일 뿐이라면 JavaScript로 적용 할 때 큰 문제는 없습니다. – animuson

관련 문제