molily: Themenbereich: IE;

Beitrag lesen

	.addClass~#foo,  
  div {  
  	height:0;  
  	overflow:hidden;  
  }  
  #foo,  
  div.addClass {  
  	height:auto;  
  }
  
Ich versteh nicht, was das werden soll.  
Okay, du willst, dass standardmäßig foo sichtbar ist. Einfache Lösung: Gib ihm die Klasse, um die Sichtbarkeit anzuschalten.  
  
Dieses Gefummel mit dem adjacent sibling selector löst einerseits einen Bug im IE8 aus. Andererseits nutzt du einen Bug des IE8 aus.  
Der adjacent sibling selector bezieht sich auf direkt aneinandergrenzende Elemente. Das heißt, wenn »bar« sichtbar ist (erstes div), dann trifft .addClass ~ #foo NICHT auf »foo« zu, denn es ist das dritte div. Es ist nämlich nicht direktes Geschwisterelement, sondern folgt an zweiter Stelle nach »baz«.  
  

> Wenn ich hier erst auf "foo" klicke, dann auf "bar" wird [id=foo] immer noch angezeigt.  
> Der Selektor ".addClass~#foo" der dann greifen müsste tut das nicht.  
  
Nein, der Selektor sollte nicht greifen. Er sollte nur in dem Falle greifen, wo »baz« (das zweite Div) die Klasse hat.  
  
Mathias