Problem mit CSS -> links
am 13.10.2008 - 04:42 Uhr in
Hi an alle!
damit ich das theming bei drupal besser kennen lerne, dachte ich mir ich erstelle mein eigenes theme.
Ich will eigenltich nur die linkfarben ändern, das klappt auch soweit. nur bei den aktiven links hauts nicht hin.
a:active {
color: #ff0000;
}
So nun sollte der momentan aktive link rot sein! bei mir ist er aber schwartz!
mit den andern zuständen
a:link {
color: #33334C;
}
a:visited {
color: #7F667F;
}
a:focus {
color: #FFBF00;
}
a:hover {
color: #FFBF00;
}
funktionierts alles einwandfrei.
Mit FireBug bin ich der sache mal nachgegangen.
ausgelöst wird die falsche farbe von system-menus.css
li a.active {
color:#000000;
}
kann mir jemand erklären wie das hier zusammen hängt ?
klar habe ich dann das aus der system-menus.css kopiert und in meine style.css eingefügt, und der farbwert lies sich dann auch abändern. aber das ist ja irgendwie inkonsequent! warum kann ich einen link komplett durchformatieren mit dem zugehörigen css und ausgerechnet den active link muss ich mit irgend einem li davor ansprechen ?
Ist das vielleicht ein Bug ?
danke für eure hilfe.
PS. habe das mit dem li noch nie gesehn und weiss auch nicht was das bedeutet. weiss nur in HTML hat das was mit auflistungen zu tun. aber in css ???
- Anmelden oder Registrieren um Kommentare zu schreiben
class active
am 13.10.2008 - 08:39 Uhr
... Ist das vielleicht ein Bug ? ...
NEIN, ganz bestimmt NICHT. Es ist (X)HTML mit CSS.
Den Links wurde eine Klasse zugewiesen und zwar active. Wie du wahrscheinlich nicht bemerkt hast, befindet sich ein Punkt zwischen a und active (a.active), dies ist die Zuweisung der Klasse.
... habe das mit dem li noch nie gesehn und weiss auch nicht was das bedeutet. weiss nur in HTML hat das was mit auflistungen zu tun. aber in css ???
Perfekte Antwort. LI beinhaltet die einzelnen Auflistungspunkte und wird eingeleitet mit UL für eine ungeordnete Liste, oder OL für eine geordnete Liste.
Um CSS-Anweisungen genauer zu spezifizieren, schreibt man z.B. li a.active { color: #ff0000; }. Dies bedeutet: Alle aktiven Links die sich in eine Liste befinden, egal ob geordnet oder ungeordnet, werden rot dargestellt.
... kann mir jemand erklären wie das hier zusammen hängt ?
Nicht jeder möchte alle aktiven Links rot haben, sondern es detaillierter darstellen können. td a.active { color: #0000ff; } würde z.B. alle aktiven Links in einer Tabelle blau darstellen. Beide Anweisungen zusammen beißen sich dabei NICHT, da mit LI und TD gearbeitet wurde.
# Alle aktiven Links in einer geordneten Liste grün
ol li a.active { color: #00ff00; }
# Alle aktiven Links in einer ungeordneten Liste rot
ul li a.active { color: #ff0000; }
# Alle aktiven Links in einer Tabelle blau
td a.active { color: #0000ff; }
Wir sind hier in einem Drupal- und nicht in einem CSS-Forum.
am 13.10.2008 - 10:20 Uhr
Hallo @G,
ich empfehle Dir die grundsaetzliche Einarbeitung in CSS. Hilfreich kann Dir dabei beispielsweise http://wwwe.css4you.de sein.
Wir sind hier in einem Drupal- und nicht in einem CSS-Forum.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
ich glaub ich verstehe!
am 14.10.2008 - 16:15 Uhr
ich glaub ich verstehe! sobald ich einen zusatz anfüge (also genauer spezifiziere welche aktiven links jetzt die farbe ändern sollen, in meinem fall active links die sich in einer geordneteten auflistung befinden) dann wird die standard einstellung für active links (die ich in der style.css getroffen habe)
a:active {
color: #ff0000;
}
überschrieben. is das richtig soweit?
und @ quiptime
naja irgendwo hat das schon was mit drupal zu tun, ich behaupte jetzt einfach mal "unsauber" gecoded.
jede linkfarbe kann über den standard weg
a:link {
color: #33334C;
}
a:visited {
color: #7F667F;
}
a:focus {
color: #FFBF00;
}
a:hover {
color: #FFBF00;
}
geändert werden nur ausgerechnet für active links muss man li davor setzten und klasse definieren, sonst overrided die system-menus.css die normale style.css. Also entweder werden alle links im menü über die system-menus.css und den zusatz LI angesprochen (würde ich bevorzugen da konsequent behandelt und mehr einstellungsmöglichkeiten(linkfarbe im menü anders als im content z.B.) oder es soll ganz raus gelassen werden. meiner meinung nach ist das inkonsequent. und vermekt ist es auch nirgends!
aber noch eins, was ist denn jetzt die saubere lösung für das problem ? einfach mit der style.css die system-menus.css overriden mit
li a.active {
color:#000000;
}
oder soll ich eine system-menus.css in meinem theme erstellen?
ich tippe jetzt mal vorsichtig das das erstellen der datei "system-menus.css" in meinem themeordner wohl die saubere lösung wäre? was meint ihr ? gibt es noch eine ?
Pseudo und Klassen
am 14.10.2008 - 17:35 Uhr
Wie quiptime schon schrieb, solltest du dich dringendst mit CSS beschäftigen. In Drupal sind die Pseudoklassen, die du benutzen möchtest nicht vergeben. Einzig und alleine gibt es die Klasse active für einen gerade aktiven Link.
Unsauber gecodet, wie du es ausdrückst, ist es ganz und gar nicht, sondern so, wie es sich gehört. Da deine Meinung hier vom Standard abweicht, solltest Du Deine Sichtweise erweitern, sprich, dich fortbilden.
... sobald ich einen zusatz anfüge (also genauer spezifiziere welche aktiven links jetzt die farbe ändern sollen, in meinem fall active links die sich in einer geordneteten auflistung befinden) dann wird die standard einstellung für active links (die ich in der style.css getroffen habe) ... überschrieben. is das richtig soweit?
Nein, die Pseudoklasse :active wird nur überschrieben, wenn du sie auch mit :active überschreibst. Die Klasse active steht über der Pseudoklasse :active und ist deswegen gewichtiger. Ein anderes Wort für Pseudo wäre auch vorgetäuscht.
Die Pseudoklassen als Standardweg zu bezeichnen, halte ich für sehr flach. Die von dir benannten Pseudoklassen wurden im Cascading Style Sheet Level 1 1996 festgelegt. Mittlerweile sind wir aber schon einen Schritt weiter.
Die Hauptsache ist wohl, dass du den Lösungsweg jetzt weißt. Ich finde es etwas ... blöd ... das du die Worte "unsauber gecodet" und "inkonsequent" benutzt, obwohl dir das Thema nicht so vertraut ist.
... ich tippe jetzt mal vorsichtig das das erstellen der datei "system-menus.css" in meinem themeordner wohl die saubere lösung wäre? ...
Auch da liegst du wieder falsch, du solltest die style.css nutzen.
Aber deshalb müsst ihr doch
am 14.10.2008 - 17:48 Uhr
Aber deshalb müsst ihr doch nicht den armen G so ANFAHREN mit GROß und FETT. War doch nur eine normale Frage und dabei kann es sich hier auch durchaus um CSS handeln. Ist nicht ganz unwichtig.
vg
--
md - DrupalCenter
mdwp* :: Drupal Services
hm schon klar das das die
am 14.10.2008 - 22:18 Uhr
hm schon klar das das die liebhaber anpflaumt. hier mal ein kleines beispiel füt unsauber
auschnitt aus style.css von garland
a:link, a:visited {
color: #027AC6;
text-decoration: none;
}
a:hover {
color: #0062A0;
text-decoration: underline;
}
a:active, a.active {
color: #5895be;
}
naja da wollte sicher jemand das die aktiven links irgendwie blau sind, sie sind aber trotzdem schwarz. in IE und FF.
In Drupal sind die Pseudoklassen, die du benutzen möchtest nicht vergeben. Einzig und alleine gibt es die Klasse active für einen gerade aktiven Link.
wie meinst du das ? sie sind nicht in der system-menus.css definiert ?
Die Pseudoklassen als Standardweg zu bezeichnen, halte ich für sehr flach. Die von dir benannten Pseudoklassen wurden im Cascading Style Sheet Level 1 1996 festgelegt. Mittlerweile sind wir aber schon einen Schritt weiter.
ja des kann ich halt net riechen ich dachte ich kann die style.css der beigelegten! themes als referenz nutzen und da wird das halt durchgehend so gemacht.
ober der garland ausschnitt
ausschnitt aus bluemarine
a:link {
color: #39c;
}
a:visited {
color: #369;
}
a:hover {
color: #39c;
text-decoration: underline;
}
ausschnitt aus chameleon
a, a:link, a:active {
color: #930;
}
a:visited {
color: #630;
}
ausschnitt aus pushbutton
a:link {
text-decoration: none;
font-weight: bold;
color: #ff8c00;
}
a:visited {
text-decoration: none;
font-weight: bold;
color: #c96;
}
a:hover, a:active {
font-weight: bold;
color: #ff4500;
text-decoration: underline;
also irgendwo sehe ich es aber als inkonsequent an das ich einerseits die linkfarben aller zustände mit den obigen mitteln ändern kann und andererseits in einer andern .css datei (wo man ja erst mal durch nachforschung drauf kommen muss!) schon eine farbe für einen einzigen zustand definiert ist und man diesen "extra" behandeln muss (durch das li) in seinen eigenen theme dateien.
das "li :active" stärker gewichtet ist als ":active" macht völlig sinn und ist auch nachvollziehbar aber eben das versteckspiel in der system-menus.css find ich halt weng doof und das es sich ja quasi von vorne herein auf jedes theme auswirkt wenn man es nicht extra mit einbezieht in seine theme gestaltung. wie gesagt es ist nicht offensichtlich und ich bin nur durch die nutzung von firebug dahinter gekommen. ( es soll nutzer ohne firebug geben )
ich find drupal ja super sonst würd ich mich ja net durchwälzen. das ist aber eine ungereimtheit die mir eben aufgefallen ist und ein bisschen zeit gekostet hat.
P.S. mit unsauber und inkonsequent mein ich ja nur das hier betreffend, drupal an sich läuft super da gibtz nichts zu meckern.
Entschuldigung
am 15.10.2008 - 12:37 Uhr
Aber deshalb müsst ihr doch nicht den armen G so ANFAHREN ...
Entschuldigung, da hast du natürlich recht, ich werde mich ein wenig zurücknehmen. Mit Beispielen und erklärend geantwortet habe ich aber doch, oder ...?
... hier mal ein kleines beispiel für unsauber ...
Du beschreibst andere Themes. Manche davon sind schon seit den Anfängen von Drupal dabei und wurden von Benutzern wie dir und mir entwickelt.
Meine Sichtweise ist da eventuell ein wenig anders als deine. Ich sehe Drupal als eigenständiges Projekt und die Themes als nette Dreingabe, so wie Third Party Module.
Als du schriebst, du entwickelst ein eigenes Theme, ging ich nicht davon aus, das du die "alten Kamellen" als Referenz nutzen möchtest. Wenn du Referenzen zum Erstellen nutzen möchtest, so sei dir das Theme zen empfohlen. In dem Themeordner Starterkit gibt es auch eine CSS-Datei Namens drupal6-reference.css. Dort sind alle CSS-Anweisungen aufgelistet, die das System Drupal nutzt.
In Drupal sind die Pseudoklassen, die du benutzen möchtest nicht vergeben. Einzig und alleine gibt es die Klasse active für einen gerade aktiven Link.
---
wie meinst du das ? sie sind nicht in der system-menus.css definiert ?
Richtig, ich meine damit, das diese Pseudoklassen im Drupalsystem nicht definiert sind. Bei den Themes sieht das anders aus. Mit deinem zu erstellenden Theme werden aber die CSS-Dateien des Drupalsystems überschrieben und nicht die Angaben in einem anderen Theme.
auschnitt aus style.css von garland
a:active, a.active {
color: #5895be;
}
naja da wollte sicher jemand das die aktiven links irgendwie blau sind, sie sind aber trotzdem schwarz. in IE und FF.
Das siehst du richtig. Entwickelt wurde das Theme Garland von Stefan Nagtegaal (Niederlande) und Steven Wittens (Belgien). Auch ihnen sei ein kleiner Fehler, wenn es denn einer war, zugestanden.
... also irgendwo sehe ich es aber als inkonsequent an das ich einerseits die linkfarben aller zustände mit den obigen mitteln ändern kann und andererseits in einer andern .css datei ... schon eine farbe für einen einzigen zustand definiert ist und man diesen "extra" behandeln muss (durch das li) in seinen eigenen theme dateien ...
Ich verstehe dich aus deiner Sichtweise gut, habe aber, wie oben geschrieben, eine andere. Ich sehe die Themes nicht als Bestandteil der Aufgabe, da du selber ein Theme entwickeln willst.
Das heisst, Drupal ist "nackt" und wird von dir gekleidet. Da kommt dann wieder meine Aussage: In Drupal sind die Pseudoklassen, die du benutzen möchtest nicht vergeben. Einzig und alleine gibt es die Klasse active für einen gerade aktiven Link. Und genau davon musst du ausgehen.
a:link, a:visited, a:hover kannst du also problemlos nutzen, a:active muss du durch li a.active ersetzen.
... ja des kann ich halt net riechen ich dachte ich kann die style.css der beigelegten! themes als referenz nutzen und da wird das halt durchgehend so gemacht ...
Das ist natürlich ein guter Einwand, aber ...
... ich find drupal ja super sonst würd ich mich ja net durchwälzen. das ist aber eine ungereimtheit die mir eben aufgefallen ist und ein bisschen zeit gekostet hat.
Deine Meinung ist akzeptiert und nicht ganz unberechtigt. Das Wort Ungereimtheit gefällt mir persönlich viel besser als "Bug", "unsauber", oder "inkonsequent" ;-)
... drupal an sich läuft super da gibtz nichts zu meckern.
Da haben wir dann doch endlich unseren gemeinsamen Nenner gefunden.
RainMan@drupal.org
am 15.10.2008 - 14:18 Uhr
Aber deshalb müsst ihr doch nicht den armen G so ANFAHREN ...
Entschuldigung, da hast du natürlich recht, ich werde mich ein wenig zurücknehmen. Mit Beispielen und erklärend geantwortet habe ich aber doch, oder ...?
Angenommen :-)
Ja das hast du sehr ausführlich.
vg
--
md - DrupalCenter
mdwp* :: Drupal Services
Ja Danke @ Rainman! Durch
am 15.10.2008 - 19:34 Uhr
Ja Danke @ Rainman!
Durch deine erklärung hab ich jetzt viel mehr einblick in das ganze! da muss ich auch so mal nebenbei die ganze community hier auf drupalcenter loben, ich hab schon die ein oder andere frage gepostet und immer recht schnell antworten und funktionierende lösung bekommen. hab auch sogar schon mal mein bisheriges wissen anbringen können ^^
wo kann man denn am besten sehen wie mans dann "heute" macht? also ich hab meine sachen von der selfhtml seite, dachte eigentlich die is recht gut. vielleicht war ich auch nur in den falschen sektionen?
Stichwort ZEN: lol ja das hab ich vor 2-3 tagen runtergeladen und wollt mir das mal anschauen weil das irgendwo empfohlen wurde als das "ultimative" lern-theme. ist das nicht mehr so? welches sollte man denn jetzt nehemen?
Leg los
am 15.10.2008 - 21:53 Uhr
Stichwort ZEN: ... vor 2-3 tagen runtergeladen und wollt mir das mal anschauen weil das irgendwo empfohlen wurde als das "ultimative" lern-theme. ist das nicht mehr so? ...
Doch natürlich, mache das ruhig. Es ist aber nicht einfach, aus dem Theme etwas besonderes zu zaubern. Nehme es komplett auseinander und lerne aus den Kommentaren im Quelltext. Wenn man lernen möchte, ist das Zen-Theme eine sehr gute Wahl.
... wo kann man denn am besten sehen wie mans dann "heute" macht? ...
Sorry, bei diesem Punkt habe ich wohl etwas übertrieben. Natürlich ist SELFHTML eine gute Seite. Ein paar Anregungen für dich, einige davon schon älter, aber immer noch gültig und oft faszinierend: