ilch Forum » Allgemein » HTML, PHP, SQL,... » CSS Guru Frage

Geschlossen
  1. #1
    User Pic
    lordrepha Mitglied
    Registriert seit
    11.03.2006
    Beiträge
    1.362
    Beitragswertungen
    22 Beitragspunkte
    ich habe folgenden code

    <ul>
      <li>Link1</li>
      <li>Link2</li>
      <li>Link3
        <ul>
          <li>Sublink1</li>
          <li>Sublink2</li>
          <li>Sublink3</li>
        </ul>
      </li>
    </ul>


    beim klicken auf die einzelnen Links bekommen die links die classe active NUR der jeweils aktive Link besitzt die klasse active.

    Ist es nu möglich per css auf Link3 zuzugreifen wenn die klasse aktive in Sublink1, Sublink2 oder Sublink3 durch anklicken vergeben wird?

    Ziel ist es das das Link3 seinen active stile beibehält auch wenn ein Sublink markiert wurde.

    Das ganze basiert auf diesem code von mairu

    externer Link
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    annemarie gelöschter User
    es gibt keine parent css selektoren.

    also die antwort auf deine frage: nein, das ist nicht möglich.

    du kannst dafür sorgen das das parent li und das sub li beide die active klasse haben. dafür sind klassen da, um mehrfach benutzt zu werden.
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    lordrepha Mitglied
    Registriert seit
    11.03.2006
    Beiträge
    1.362
    Beitragswertungen
    22 Beitragspunkte
    Ok verstehe danke annemarie

    Nur weiss ich beim besten willen nicht wie ich das anstellen soll... laut mairu ist dieser code dafür verantwortlich

    list ($wmpA, $wmpE, $wmpTE, $wmpTEE) = explode ('|', $tpl->list_get ($hovmenup, array ($menuTarget, ($subhauptx == 8 ? '' : 'index.php?') . $row['path'], $row['name'], ((($row['pos'] == $act_pos) or ($row['pos'] == $todel_before and $row['ebene'] == 0)) ? 'active' : 'inactive'))));


    jetzt hörts bei mir aber auch schon auf
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    annemarie gelöschter User
    gut ich müsst mir dafür nochmal die template klasse anschauen und wissen welche struktur die übergebenen argumente haben und so pullerkram

    aber um dir vielleicht aus deiner verwirrung zu helfen

    explode ('|',$string)

    erzeugt aus einem string der durch "|" getrennt ist einen array.
    z.b. "bla|blu|ble|bli" erzeugt dir einen array mit 4 werten.

    dadurch das sie list() zugewiesen werden werden die schlüssel in der reihenfolge in der sie im array liegen den werten $wmpA, $wmpE, $wmpTE und $wmpTEE zugewiesen

    so wäre $wmpa mit dem wert "bla" gefüllt
    so wäre $wmpE mit dem wert "blu" gefüllt
    so wäre $wmpTE mit dem wert "ble" gefüllt
    so wäre $wmpTEE mit dem wert "bli" gefüllt

    so, nun zum argument von explode, $tpl->list_get().
    schau dir die funktion mal in der template klasse an (glaube die ist da drin)

    nun nehme ich mal das zweite argument der funktion auseinander.

    array ($menuTarget, ($subhauptx == 8 ? '' : 'index.php?') . $row['path'], $row['name'], ((($row['pos'] == $act_pos) or ($row['pos'] == $todel_before and $row['ebene'] == 0)) ? 'active' : 'inactive'))


    hier wird einfach ein array mit werten gefüllt, der zweite wert des arrays ist nichts weiter als eine gekürzte if abfrage.

    ($subhauptx == 8 ? '' : 'index.php?')

    ist identisch mit
    if($subhauptx == 8){ ''; }else{ 'index.php?'; }


    heißt der zweite wert des arrays ist entweder leer oder "index.php?"

    danach wird der pfad an den string gehangen mithilf des verbindungsoperators "." (konkentenation).

    der vierte array schlüssel ist analog zu dem zweiten schlüssel zu interpretieren, er ist entweder active oder inactive.

    so, nachdem ich das hier gelesen habe glaube ich das du für deine ziele (übergeordneten und untergeordneten punkt mit der active klasse zu versehen) die $tpl->list_get() funktion erweitern.

    das solltest du aber seien lassen da vielleicht noch andere dateien diese funktion benutzen.
    kopiere diese funktion am besten und passe eine kopie davon an und verwende diese an entsprechender stelle, das sollte dir weniger kaputtmachen.


    ansatz 2 ist mittels javascript framework sich vom active child zum parent hochzuhangeln und dann den parent per dom inject mit der active klasse zu versehen.
    in jQuery wäre das z.b.
    $('li.active').parent().parent().addClass('active');

    ... das der code in dieser form geht, garantiere ich nicht!

    aber dies ist der ansatz den parent mittels JS nachträglich zu manipulieren ohne den PHP/HTML code anfassen zu müssen.


    MfG annemarie

    P.S.: wenn manche sätze nicht beendet sind, sorry, ich fall jetzt ins bett!

    Zuletzt modifiziert von annemarie am 17.02.2010 - 00:32:51
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    lordrepha Mitglied
    Registriert seit
    11.03.2006
    Beiträge
    1.362
    Beitragswertungen
    22 Beitragspunkte
    tausend dank werd mich durchfummeln... kriege das schon hin hast mir sehr geholfen...
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten