CSS: Elternelement bei Links "überschreiben"

  • Hallo Zusammen,


    kaum angemeldet und auch schon der erste Hilfeschrei :) Vorweg: Ich bin nicht sehr bewandert im Bereich Webdesign, bemühe mich aber, durch praktische Anwendung mein Wissen auf dem Gebiet zu erweitern. Daher ist die Frage vielleicht für die "alten Hasen" zum Augenrollen, ich hab allerdings bei Google&Co bisher keine Lösung gefunden.


    Folgendes Problem:
    Die Einträge meiner Menüleiste sind mit CSS formatiert. Einzelne Themenbereiche sind durch Überschriften unterteilt. Diese Überschrift ist folgendermaßen formatiert (reduziert auf's Wesentliche):



    CSS
    .menu_kopf {		color: blue; border-bottom: 1px blue solid;		border-left: 4px blue solid;		padding-left: 5px;}
    .menu_kopf a {	 color: blue;}
    .menu_kopf a:hover {	 background-color: blue;	 color: white;	 display: block;}


    Eigentlich soll die Überschrift "nur" eine Überschrift sein, jetzt hat sich die Notwendigkeit ergeben, aus der Überschrift einen anklickbaren Link zu machen. Beim Hovern wird die ganze Zeile in der gleichen Farbe wie die Überschrift markiert, die Schrift wird weiß. Durch den Rahmen links und den Abstand dazu (paddin-left: 5px) wird aber nur der reine Text nach rechts hin unterlegt, nicht die ganze Zeile.


    Ist es möglich, und wenn ja, wie, beim Hover-Effekt den gesamten Eintrag quasi neu zu formatieren. Sprich, in diesem Fall: Einfacher Link: Rahmen 4px, Padding 5px - Text ... Hover-Effekt: Kein Rahmen, Padding 9px. ? Oder ist man definitiv an die Hierarchie gebunden und kann Link-Effekte nur teilweise verändern bzw. ergänzen?


    Vielen Dank für Eure Antworten!
    Frank

  • wird aber nur der reine Text nach rechts hin unterlegt, nicht die ganze Zeile.



    Hallo,


    Wie meinst du denn das?
    Ich habe deine Stylesheet getestet und bei mir wird der text + rechts liegendem bereich farbig hinterlegt:


    [Blockierte Grafik: http://img5.fotos-hochladen.net/uploads/menuos17a02zb3.png]


    Oder willst du auch den Bereich links vom Text farblich kennzeichnen?
    Könntest du mir das genau Ziel bitte nochmal genauer beschreiben, ich kann
    dem ganzen heute nicht so ganz folgen :S


    Um den Threadtitel nochmal aufzugreifen, dies ist derzeit in CSS nicht möglich,
    soll aber angeblich für CSS 4 geplant sein. Es gibt hierfür aber auch bereits eine
    jQuery Lösung um die Elternelemente anzusprechen.
    Parent-Selector


    mfg Nita

  • Das kommt wahrscheinlich daher, daß ich das CSS aufs Wesentliche beschränkt habe - und formatiert werden soll auch nur eine Zeile.
    Hier mal ein Screenshot wie das Ganze aussehen sollte - und wo auch das Problem erkennbar ist:
    [Blockierte Grafik: http://www.grafikaustausch.bplaced.net/css_beispiel.jpg]


    Oben ist der "normale" Link, unten das Hover-Element. Der Textbereich wird hinterlegt dargestellt, er ist aber über das "Elternelement" ja 5px vom linken Rand abgesetzt, also entsteht da ein weißer Zwischenraum, der weg soll. Da der Rahmen hier die gleiche Farbe wie der Hover-Hintergrund hat würde das schon reichen, wäre da eine andere Farbe, müsste natürlich auch der Rand "verschwinden". Da
    .kopf a {} aber den Abstand vorgibt, ist der auch bei .kopf a:hover vorhanden . Kann ich also das Ganze so programmieren, daß bei "a" und "a:hover" Rahmen und Abstand unterschiedlich dargestellt werden? Ich kann ja bei hover eine weitere Instanz "padding" dazugeben, dann rückt der ganze Text weiter nach rechts - aber kann ich das padding auch reduzieren?

  • Falls es das Ganze nicht beeinträchtigt durch irgendwelche sonstigen Komplikationen,
    definier den padding-left für das a-Element und nicht für die Navigation, dann tritt das Problem
    mit der Lücke beim hover nicht mehr auf :)



    mfg Nita

  • Hallo,


    erst mal frohe Weihnachten @all :)


    @nita: Danke für die Antwort, aber ich glaube, so funktioniert das nicht.
    Ich hol mal weiter aus: Meine Menuleiste (Vertikal) sieht folgendermaßen aus:


    Überschrift <formatiert wie im Screenshot oben>
    Thema 1 <unformatierter Text, Hover: farbig hinterlegt>
    Thema 2
    Thema 3


    Überschrift
    Thema 4
    Thema 5


    Überschrift


    Überschrift
    Thema 6
    ... usw ...


    Das Ganze ist nicht als Liste sondern als Hintereinanderreihung von Links (Thema) oder Text (Überschrift) realisiert, die mittels div-tags formatiert sind:


    HTML
    <div class="kopf">Überschrift</div><div class="link">Thema 1</div><div class="link">Thema 2</div>


    Jetzt soll allerdings zusätzlich, da es da keine zusätzlichen "Themen" gibt, die "Überschrift" zwischen Thema 5 und 6 im Beispiel oben ebenfalls als Link clickbar sein. Ich benutze beim Menu also kein nav-Element, und selbst wenn: Da gäbe es ja verschieden zu formatierende Listeneinträge - Überschrift, Überschrift als Link, und Thema (immer als Link).


    Oder ist das Ganze zu kompliziert aufgebaut? Ich dachte eigentlich, nav, li, ul usw. durch div-tags zu "ersetzen" das Ganze zu vereinfachen...

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!