HTML CSS SHOW/HIDE

Guten Tag !

Für meine Drupal Webseite möchte ich das folgende CSS show/hide Beispiel ( http://cssdeck.com/labs/css-only-showhide ) nutzen, jedoch musste ich schnell feststellen dass es in der Form nicht funktionieren wird, denn die Elemente usw. werden natürlich auf der Webseite bereits verwendet und besitzen auch CSS Eigenschaften mit denen dann ein Konflikt entsteht. Darum habe ich die Struktur in DIV’s umgeschrieben und mit Klassen versehen, denen ich dann die nötigen CSS Eigenschaften zugeordnet habe. Jetzt muss ich einen Denkfehler haben, denn in meiner Version funktioniert es nicht so wie es soll. Ich finde aber den Fehler nicht, kann mir da einer helfen ?

Meine Version (CSS und HTML in einer Datei):

[HTML]

Test /* css only show/hide

*/

div#figure {
margin: 0 0 1.3rem 0;
-webkit-transition: .125s linear;
-moz-transition: .125s linear;
-ms-transition: .125s linear;
-o-transition: .125s linear;
transition: .125s linear;
}

div#figure img {
max-width: 100%;
height: auto;
}

div#post {
max-width: 480px;
width: 90%;
margin: 3em auto;
font-size: 75%;
line-height: 1.3rem;
font-family: sans-serif;
position: relative;
*zoom: 1;
}

div#post {
margin-bottom: 3rem;
position: relative;
*zoom: 1;
}

div#post:before, div#post:after {
content: „“;
display: table;
}

div#post:after { clear: both }

div#post div#figure {
float: left;
width: 32.5%;
}

div#post div.content:first-of-type {
float: right;
width: 62.5%;
}

div#post div.content:last-of-type {
display: none;
visibility: hidden;
}

div.content {
-webkit-transition: .125s linear;
-moz-transition: .125s linear;
-ms-transition: .125s linear;
-o-transition: .125s linear;
transition: .125s linear;
}

input[type=checkbox] {
border: 0;
clip: rect(0 0 0 0);
height: 1px;
width: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
}

[for=„read_more“] {
position: absolute;
bottom: -3rem;
left: 0;
width: 100%;
text-align: center;
padding: .65rem;
box-shadow: inset 1px 1px rgba(0, 0, 0, 0.1), inset -1px -1px rgba(0, 0, 0, 0.1);
}

[for=„read_more“]:hover {
background: rgba(0,0,0,.5);
color: rgb(255,255,255);
}

[for=„read_more“] span:last-of-type {
display: none;
visibility: hidden;
}

input[type=checkbox]:checked ~ div.content {
display: block;
visibility: visible;
width: 100%;
}

input[type=checkbox]:checked ~ div#figure { width: 100% }

input[type=checkbox]:checked ~ [for=„read_more“] span:first-of-type {
display: none;
visibility: hidden;
}

input[type=checkbox]:checked ~ [for=„read_more“] span:last-of-type {
display: block;
visibility: visible;
}

<input type="checkbox" id="read_more" role="button">
<label for="read_more" onclick=""><span>Read More</span><span>Hide This Shit!</span></label>   

<div id="figure">
    <img src="http://cssdeck.com/uploads/media/items/8/8rDcElm.jpg" alt="I'm an owl" />
</div>

<div class="content">
<p>Owls are a group of birds that belong to the order Strigiformes, constituting 200 extant bird of prey species. Most are solitary and nocturnal, with some exceptions (e.g. the Northern Hawk Owl). </p>
</div>  

Owls hunt mostly small mammals, insects, and other birds, although a few species specialize in hunting fish. They are found in all regions of the Earth except Antarctica, most of Greenland and some remote islands. Though owls are typically solitary, the literary collective noun for a group of owls is a parliament. Owls are characterized by their small beaks and wide faces, and are divided into two families: the typical owls, Strigidae; and the barn-owls, Tytonidae.

Owls have large forward-facing eyes and ear-holes; a hawk-like beak; a flat face; and usually a conspicuous circle of feathers, a facial disc, around each eye. The feathers making up this disc can be adjusted in order to sharply focus sounds that come from varying distances onto the owls' asymmetrically placed ear cavities. Most birds of prey sport eyes on the sides of their heads, but the stereoscopic nature of the owl's forward-facing eyes permits the greater sense of depth perception necessary for low-light hunting. Although owls have binocular vision, their large eyes are fixed in their sockets — as are those of other birds — so they must turn their entire head to change views. Owls can rotate their heads and necks as much as 270 degrees in either direction. As owls are farsighted, they are unable to see clearly anything within a few centimeters of their eyes. Caught prey can be felt by owls with the use of filoplumes — like feathers on the beak and feet that act as "feelers". Their far vision, particularly in low light, is exceptionally good.

[/HTML]

MfG

Kann deinen Code zwar nicht wirklich inspizieren, da ich mit dem Handy online bin aber warum ersetzt du die HTML5 Elemente durch DIVs du kannst doch auch denen CSS-Attribute zuweisen bzw. die vorhandenen überschreiben.

Hallo !

Weil auf die Elemente bereits webseitenübergreifend attribute gesetzt sind, dh. zB. für
ist bereits

content { attributbeispiel:X;}

gesetzt. Wenn ich nun verwende wird trotzdem das Attribut X von content mit angewendet…
Da ist es doch einfacher den kurzen Code umzuändern so dass ich div’s habe, diesen dann Klassen zuweise und diese noch nicht „attributbehaftet“ sind =) Oder ich verstehe etwas total falsch !

MfG

Zum Eigentlichen Problem : Was willst du denn genau erreichen?

Oh ich entschuldige mich, ich habe den Link zum Original Code vergessen, denn genau das im Beispiel will ich auch erreichen: http://cssdeck.com/labs/css-only-showhide

Dafür gibt es passend zum Figure-Element das Figcapture-Element wenn ich mich nicht täusche.

Figcaption ist mir bekannt, zu Figcapture konnte ich nichts finden. Aber ich sehe da gerade auch nicht den Zusammenhang zu meinem Problem =)

So extrem schwer, wäre das anpassen des eh schon fertigen Codes nicht mehr gewesen, du musst nur alle
sections durch div.content ersetzen und es funktioniert :slight_smile:

Beispiel: http://codepen.io/Nitamud/pen/ZYjezg

Eigenartig, so ähnlich hatte ich das auch gemacht nur hats bei mir nicht funktioniert =)
Nun auch jetzt schaffe ich es nicht, dass es läuft. Den CSS Code habe ich in die CSS der Webseite (DRUPAL CMS) eingebunden, jedoch wird mein HTML Code nicht animiert. Nach dem Drücken auf den Knopf wechselt dieser zwar von „Read More“ zu „Hide“, sonst passiert aber nichts… Ich verstehe nicht wo ich anfangen soll den Fehler zu suchen.

Welchen Browser nutzt du denn zum Testen? http://caniuse.com/#search=transi http://caniuse.com/#search=sizing

Am Browser liegts nicht, sobald ich den code außerhalb des CMS ausführe (einfache html Datei) funktioniert alles…

Kennt einer vielleicht etwas ähnliches mit Hilfe von JQuery ? Ich glaube das wäre einfacher…

Du brauchst ein Click-Event auf dem Element, das sich vergrößern soll.

Der Link zu dem Beispiel funktioniert bei mir nicht. Poste lieber mal den Link zu deiner eigenen Seite.

Die checked Styles sind nicht stark genug, die davor zu überschreiben. Ersetze

input[type=checkbox]:checked ~ div.content {
  display: block;
  visibility: visible;
  width: 100%;
}

input[type=checkbox]:checked ~ div#figure { width: 100% }

input[type=checkbox]:checked ~ [for="read_more"] span:first-of-type {
  display: none;
  visibility: hidden;
}

input[type=checkbox]:checked ~ [for="read_more"] span:last-of-type {
  display: block;
  visibility: visible;
}

durch

div#post input[type=checkbox]:checked ~ div.content {
  display: block;
  visibility: visible;
  width: 100%;
}

div#post input[type=checkbox]:checked ~ div#figure { width: 100% }

div#post input[type=checkbox]:checked ~ [for="read_more"] span:first-of-type {
  display: none;
  visibility: hidden;
}

div#post input[type=checkbox]:checked ~ [for="read_more"] span:last-of-type {
  display: block;
  visibility: visible;
}

dann funktioniert es.

Grundsätzlich sollte man darauf achten, Selektoren beim Überschreiben immer gleich zu formulieren, egal ob bei pseudoklassen, silblings oder mediaquerrys.

:frowning: Crossposting :frowning:

Boar, so allmählich wirds hier wirklich unangenehm. Muss man ständig den Verteidiger des Forums spielen? Dutzende Beiträge dieser Art in letzter Zeit. Es ist doch scheißegal wenn jemand die gleiche Frage in verschiedenen Foren stellt. Wenn ein Thread nicht den eigenen Ansprüchen genügt, dann kan man den einfach ignorieren.

Ich fühl mich in so einer Community nicht wohl und werde das Forum verlassen.

Nein, ist es eben nicht. In einem anderen Forum gibt es dazu folgenden Kommentar:

Crossposting bedeutet, dass ein und dieselbe Frage in mehreren Foren oder Newsgroups gleichzeitig gestellt wird. Ein solches Verhalten wird von den meisten Helfern nicht toleriert, denn damit stellst Du einerseits die Kompetenz der Helfer jedes einzelnen Forums und Newsgroup in Frage und bewirkst zudem, dass ein zig-faches an Stunden aufgewendet wird, um nur ein einziges Problem zu lösen, denn überall werden sich die Helfer daran setzen, eine Lösung für Dich zu finden. Das ist ganz klar ein Missbrauch an dem kostenlosen und freiwilligen Support, der hier angeboten wird. Wenn Deine Frage klar und deutlich gestellt wurde, dann wirst Du ganz bestimmt innerhalb kürzester Zeit eine Antwort erhalten. Sollte dies auch nach mehreren Tagen nicht der Fall sein, dann versuche bitte die Frage besser zu formulieren. Falls Du dennoch in einem zweiten Forum posten solltest, erwähne bitte, dass Du die Frage schon woanders gestellt hast, und dass Du es tust, weil keine Lösung gefunden werden konnte.