tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von spicelab
  • 1 Beitrag von spicelab
ERLEDIGT
JA
ANTWORTEN
11
ZUGRIFFE
340
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    anve anve ist offline Mitglied Bronze
    Registriert seit
    Apr 2007
    Beiträge
    28
    Hallo!

    Ich möchte dass oberhalb meines absolut positionierten Elternelements, das Kindelement ausgerichtet wird.

    Kindelement
    ____________
    | Elternelemnt |

    Das Kindelement soll genau am oberen Rand des Elternelement ausgerichtet werden.

    Code :
    1
    2
    3
    4
    5
    
    #Elternelement {
        margin-left:32px;
        position:absolute;
        top:281px;
    }

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    .Kindelement {
        width:1000px;
        height:auto;
        max-height:175px;
        position:absolute;
        bottom:0;
        left:0;
        padding:30px 10px;
    }

    Geht das? Da das ganze im Menü verschachtelt ist (ul li) kann ich das Kindelement nicht vorher positionieren. Momentan kann ich nur eine fixe Größe einstellen, ich möchte die Größe aber am Inhalt anpassen (height:auto).
     

  2. #2
    Avatar von spicelab
    spicelab spicelab ist offline ZENmechanic
    Registriert seit
    Feb 2010
    Beiträge
    1.744
    Grundsätzlich benötigt das nach oben zu verrückende Element entweder einen negativen margin-top- bzw. top-Wert < 0, oder positiven margin-bottom- bzw. bottom-Wert > 0, aber ohne bekannte (feste) Höhe, aus der der jeweilige benötigte Regelwert resultiert, lässt sich dein Vorhaben mit CSS nicht umsetzen, damit die (im Markup folgende) innere Box außerhalb ihrer Mutterbox passgenau auf deren oberen Rand ausgerichtet wird.

    Beispiele hierfür mit dieser CSS-Technik findest du z.B. hier:

    Ohne CSS-Regelung bzgl. einer festen Höhe liesse sich dein Wunsch mittels Javascript erfüllen; Stichwörter zur Foren- u. Google-Recherche: offsetHeight und offsetTop.

    JS-Referenz:
    Geändert von spicelab (10.08.11 um 15:33 Uhr) Grund: Links ergänzt
    anve bedankt sich. 

  3. #3
    anve anve ist offline Mitglied Bronze
    Registriert seit
    Apr 2007
    Beiträge
    28
    Verwirrt hat mich jetzt nur der zweite Link von dir (http://www.cssplay.co.uk/menus/anywidth-pullup.html). Denn da gibts genau das was ich suche, eine feste Höhenangabe habe ich auf die Schnelle nicht gesehen....

    Also wenn ich dich richtig verstehe, dann geht es mit CSS so nicht (also ohne Höhenangabe). Da der Inhalt noch nicht ganz definiert ist, kann ich die Höhe momentan nicht festlegen (außer die max. Höhe).

    Ansonsten werde ich es mal so lassen, außer es ist wirklich nötig JavaScript zu verwenden.
     

  4. #4
    Avatar von spicelab
    spicelab spicelab ist offline ZENmechanic
    Registriert seit
    Feb 2010
    Beiträge
    1.744
    Zitat Zitat von anve Beitrag anzeigen
    Verwirrt hat mich jetzt nur der zweite Link von dir (http://www.cssplay.co.uk/menus/anywidth-pullup.html). Denn da gibts genau das was ich suche, eine feste Höhenangabe habe ich auf die Schnelle nicht gesehen....
    Dabei findet sie sich gleich zu Beginn in der zweiten Regelmenge an zweiter Stelle:

    Code css:
    1
    2
    3
    4
    5
    
    #menu {width:744px; height:25px; background:#b07e4b; text-align:center; border:3px solid #000;}
     
     
    /* und im weiteren Verlauf erfolgt die entsprechende Positionierung der Submenüs */
    #menu ul li:hover > ul {left:-2px; bottom:25px;}

    Zitat Zitat von anve Beitrag anzeigen
    Also wenn ich dich richtig verstehe, dann geht es mit CSS so nicht (also ohne Höhenangabe). Da der Inhalt noch nicht ganz definiert ist, kann ich die Höhe momentan nicht festlegen (außer die max. Höhe).
    Die Höhe für #Elternelement lässt sich unabhängig vom Inhaltsumfang in .Kindelement festlegen, wie es das zweite Beispiel demonstriert, dessen Untermenüs eine variierende Anzahl von Links besitzt.
    Geändert von spicelab (11.08.11 um 07:17 Uhr) Grund: Tipp-Ex
    anve bedankt sich. 

  5. #5
    anve anve ist offline Mitglied Bronze
    Registriert seit
    Apr 2007
    Beiträge
    28
    D.h. das Elternelement hat eine feste Höhe und das Kindelement übernimmt diese. Dadurch dass mehrere Kindelemente übereinander gestapelt werden (bottom:25px) funktioniert das ganze. Bei mir sind aber die Inhalte nicht immer nur eine Zeile groß.

    Ansonsten werde ich es mal so lassen, außer es ist wirklich nötig JavaScript zu verwenden.
    Danke für deine Hilfe!
     

  6. #6
    Avatar von spicelab
    spicelab spicelab ist offline ZENmechanic
    Registriert seit
    Feb 2010
    Beiträge
    1.744
    Zitat Zitat von anve Beitrag anzeigen
    D.h. das Elternelement hat eine feste Höhe und das Kindelement übernimmt diese. Dadurch dass mehrere Kindelemente übereinander gestapelt werden (bottom:25px) funktioniert das ganze. Bei mir sind aber die Inhalte nicht immer nur eine Zeile groß.
    Das Kindelement erbt keineswegs die Höhe des Elternelements!

    Und wieviel Zeilen darin enthalten sind, spielt auch keine Rolle.

    Besser, du studierst besagtes Demo nochmal in aller Ruhe, und vergleichst die Höhe der Submenüs untereinander.
    Geändert von spicelab (11.08.11 um 09:08 Uhr)
     

  7. #7
    anve anve ist offline Mitglied Bronze
    Registriert seit
    Apr 2007
    Beiträge
    28
    Hallo spicelab!

    Es stimmt, die Höhe wird nicht vererbt. Es gibt nur die Info die du schon beschrieben hast:

    Code css:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    /* Höhe ist nur für Menüebene 1 */
    #menu {width:744px; height:25px; background:#b07e4b; text-align:center; border:3px solid #000;}
     
    /* jede neue Menübebene (ul li ul) wird um 25px nach oben geschoben */
    #menu ul li:hover > ul {left:-2px; bottom:25px;}
    /* Frage: gilt das nur für Menüebene 1? Es gibt ja noch ul ul li:hover ...
     
    /* Zeilenhöhe hat noch Einfluss auf die Höhe der Box */
    #menu a {display:block; font:normal 11px verdana,arial,sans-serif; color:#000; line-height:25px; text-decoration:none;padding:0 20px 0 10px;}

    So wie ich das sehe kommt die Höhe der Submenüs nur durch die line-height zustande. Je mehr list items da sind, desto größer wird so ein Submenü. Ist das richtig?
    Geändert von anve (11.08.11 um 21:00 Uhr) Grund: Tipp-Ex
     

  8. #8
    Avatar von spicelab
    spicelab spicelab ist offline ZENmechanic
    Registriert seit
    Feb 2010
    Beiträge
    1.744
    Die line-height-Eigenschaft regelt hier die Zeilenhöhe der Links, und sorgt für eine vertikale Zentrierung ihres Elementinhaltes.

    Ohne diese CSS-Regel fällt die Höhe der einzelnen Submenüs folglich geringer aus, sprich die Höhe ergibt sich dann durch Anzahl der Zeilen und der gesetzten Schriftgröße (reguläre Zeilenhöhe < 25px).
    Geändert von spicelab (11.08.11 um 20:02 Uhr)
     

  9. #9
    threadi threadi ist offline Mitglied Brokat
    Registriert seit
    Dec 2006
    Ort
    Leipzig
    Beiträge
    478
    Wieso nicht

    Code :
    1
    
    bottom: 100%;

    inkl. fester Höhe?
     

  10. #10
    Avatar von spicelab
    spicelab spicelab ist offline ZENmechanic
    Registriert seit
    Feb 2010
    Beiträge
    1.744
    Zitat Zitat von threadi Beitrag anzeigen
    Wieso nicht

    Code :
    1
    
    bottom: 100%;

    inkl. fester Höhe?
    In diesem Fall ist es Jacke wie Hose, ob "25px" oder "100%".
    Geändert von spicelab (11.08.11 um 20:18 Uhr)
     

  11. #11
    anve anve ist offline Mitglied Bronze
    Registriert seit
    Apr 2007
    Beiträge
    28
    Fragen:

    Kann ich nun mit CSS mein Vorhaben umsetzen oder nicht?
    Was ist das Ergebnis des Vergleichs der Höhe der Submenüs? Unterschiedlich groß? Was wolltest du mir damit sagen?
    In meinen geposteten Code-Stück habe ich Anmerkunge/Fragen gemacht. Sind meine Aussagen korrekt?
    Code css:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    /* Höhe ist nur für Menüebene 1 */
    #menu {width:744px; height:25px; background:#b07e4b; text-align:center; border:3px solid #000;}
     
    /* jede neue Menübebene (ul li ul) wird um 25px nach oben geschoben */
    #menu ul li:hover > ul {left:-2px; bottom:25px;}
    /* Frage: gilt das nur für Menüebene 1? Es gibt ja noch ul ul li:hover ...
     
    /* Zeilenhöhe hat noch Einfluss auf die Höhe der Box */
    #menu a {display:block; font:normal 11px verdana,arial,sans-serif; color:#000; line-height:25px; text-decoration:none;padding:0 20px 0 10px;}

    Wo liegt nun die Kernessenz dieses Beispiels? Wie funktioniert es nun wirklich? Mit bottom:25px wird nur das 1. Submenü positioniert. Wie ist es mit den anderen? Es gibt das Elternelement und das ist die Basis (Höhe) für die Submenüs. Woher weiß der Browser wo das 1. Element des Submenüs ist? Durch eine Addition der Zeilenhöhe/Schriftgröße aller Links im Submenü?

    Sag, wenn ich nerve.
     

  12. #12
    Avatar von spicelab
    spicelab spicelab ist offline ZENmechanic
    Registriert seit
    Feb 2010
    Beiträge
    1.744
    Ob und wie du deinen Plan mit CSS realisieren kannst, hatten wir hier doch schon ausgiebig erläutert.

    Und das Verständnis für die detailierte Funktionsweise des Menüs solltest du durch Experimentieren mit den einzelnen gesetzten bottom-Regeln selbst erlangen können.
     

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 15.06.11, 18:48
  2. Aktuelles Elternelement löschen.
    Von francosdad im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 03.06.09, 09:20
  3. FX.Slide auch für das Elternelement
    Von dezerver im Forum Javascript & Ajax
    Antworten: 0
    Letzter Beitrag: 25.10.07, 16:50
  4. img Position via Elternelement in Mozilla
    Von kaifreund im Forum CSS
    Antworten: 0
    Letzter Beitrag: 02.08.04, 18:21