Notation von Textankern
GE.ORG
- html
0 Tim Tepaße0 GE.ORG0 Ingo0 Tim Tepaße0 Ingo
0 YoLaTengo0 Heiner0 Guillermo
Hi!
Da die Frage der XHTML-Konformität von leeren Tags sehr bedeutend ist, stellt sich bei mir eine neue Frage:
Macht es einen Unterschied, ob ich Anker so notiere:
<a name="ankername">Text</a>
Oder so:
<a name="ankername"></a>Text
Beide Arten funktionieren ja ... aber gibt es vielleicht Bedenken in Bezug auf W3C-Konformität? ... oder ist die Frage überflüssig? :-)
Schönen Tag,
GE.ORG
Hallo Georg,
Macht es einen Unterschied, ob ich Anker so notiere:
<a name="ankername">Text</a>
Oder so:
<a name="ankername"></a>Text
Die DTD von XHTML 1.0 äußert sich nicht dazu, auch der Standard nicht.
Es ist also erlaubt, aber im Sinne einer Auszeichnungssprache unschön.
Beide Arten funktionieren ja ... aber gibt es vielleicht Bedenken in Bezug
auf W3C-Konformität?
Gibt es. Aber aus einer ganz anderen Richtung, als Du denkst.
Für das Anspringen bestimmter Teile eines Dokumentes mit »#beispiel« ist
im Zuge der XMLisierung von HTML nicht mehr das Attribut »name« im Element
»a« sondern das Attribut »id«, das in praktisch jedem Element verfügbar
ist, vorgesehen.
Im XHTML 1.0 Standard heißt es ganz genau:
»In order to ensure that XHTML 1.0 documents are well-structured XML
documents, XHTML 1.0 documents MUST use the id attribute when defining
fragment identifiers on the elements listed above.«
(http://www.w3.org/TR/xhtml1/#h-4.10)
Und in der Modularisierung von XHTML bzw. XHTML 1.1 gibt es das Attribut
»name« nicht mehr. D.h. Du solltest in XHTML immer id einsetzen. Einen
Vorteil hast Du dadurch: Du kannst dieses Attribut in praktisch jedem
Element, von h1 über p bis div einsetzen und diese direkt anspringen,
mußt also nicht mehr mit dem a-Element rumhantieren.
Bei älteren Browsern geht das eventuell nicht, die wollen dann name.
Dann kannst Du beide Attribute im a-Element einsetzen, wie es auch
die HTML Kompabilitätsrichtlinien des XHTML 1.0 Standard empfehlen.
http://www.w3.org/TR/xhtml1/#C_8
(Vorsicht: Nur in XHTML 1.0, nicht mehr in XHTML 1.1! Ich habe mit diesem
Thema mal eine Stunde meines Lebenszeit verschwendet.)
Tim
Hi Tim!
Danke für die wiedermal rasche & ausführliche Antwort!
Die id/name-Thematik in Bezug auf XHTML ist mir bekannt, also muss ich nun leider Dein Zitat wiederholen: "Ich habe mit diesem
Thema mal eine Stunde meines Lebenszeit verschwendet." -- nur hoffentlich war es diesmal keine Stunde, sondern nur ein paar Minuten! ... ODER aber, diese Antwort konnte anderen helfen und sie auf dieses Thema sensibilisieren! ;-)
Vielen Dank jedoch für Dein Reply!
Schönen Tag noch ... aber vielleicht fallen mir ja heute doch noch ein paar Fargen ein? *g*
LG,
GE.ORG
Hi,
Vorteil hast Du dadurch: Du kannst dieses Attribut in praktisch jedem
Element, von h1 über p bis div einsetzen und diese direkt anspringen,
das hatte ich zuerst auch gedacht... inzwischen nutze ich hierzu aber nur noch kurze absätze oder überschriften.
wenn ich nämlich ein (durch viel inhalt) recht hohes div anspringe, scrollt mozilla die seite so weit, bis das _ende_ des divs am unteren rand angezeigt wird...
freundliche Grüße
Ingo
Hallo Ingo,
wenn ich nämlich ein (durch viel inhalt) recht hohes div anspringe, scrollt
mozilla die seite so weit, bis das _ende_ des divs am unteren rand angezeigt
wird...
Diese Erfahrung habe ich in meinen diversen Mozillen noch nicht gemacht. Da
wird so gesprungen, daß die obere Kante der Elementbox mit dem Anker oben
im Viewport ist. Ausnahme natürlich, wenn die Seite zu Ende ist.
Um was für eine Mozillaversion handelt es sich denn hier?
Tim
Hi,
Um was für eine Mozillaversion handelt es sich denn hier?
Mozilla 1.4b Mozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.4b) Gecko/20030507
vielleicht liegt's aber daran, daß es floatende divs sind?
freundliche Grüße
Ingo
Macht es einen Unterschied, ob ich Anker so notiere:
<a name="ankername">Text</a>
Oder so:
<a name="ankername"></a>Text
hi GE.ORG,
ja macht es, ältere Browser ignorieren gern mal einen Verweis zu einem leeren Anker.
mfg. YLT
ja macht es, ältere Browser ignorieren gern mal einen Verweis zu einem leeren Anker.
Hi YLT,
Etwas philosophische Frage:
"Ist ' ' ein Inhalt oder nicht, also wäre der Anker dann leer?" :-)
greetingz,
GE.ORG
"Ist ' ' ein Inhalt oder nicht, also wäre der Anker dann leer?" :-)
hi GE.ORG,
da würd ich mal behaupten ja, ist ein Inhalt, wie es die benannten Browser sehen, weiss ich allerdings nicht.
mfg. YLT
hi,
Etwas philosophische Frage:
"Ist ' ' ein Inhalt oder nicht, also wäre der Anker dann leer?" :-)
es ist ein inhalt; ein element welches ein enthält ist defintiv _nicht_ leer.
gruss,
wahsaga
Hallo,
<a name="ankername"></a>Text
ja macht es, ältere Browser ignorieren gern mal einen Verweis zu einem leeren Anker.
Das ist ein uraltes Geruecht bzw. ein alter Aberglaube,
das offenbar immernoch weit verbreitet ist.
Tatsache ist: Selbst Netscape 2.02 (aus dem Jahr 1995!)
kommt mit leeren Ankern zurecht.
Wegen dem unerwuenschten Hover-Effekt bei Ankern
schreibe ich meine Anker konsequent leer.
Es gibt aber auch ein paar CSS-Ansaetze, um diesen Effekt zu
verhindern, z.B.
a:link:hover, a:visited:hover { }
statt
a:hover { }
Gruesse,
Thomas
a:link:hover, a:visited:hover { }
statt
a:hover { }
Wie genau funktioniert der Ansatz?
Hallo,
Wie genau funktioniert der Ansatz?
Oft schreibt man die Angaben fuer das A-Element so:
a:link {}
a:visited {}
a:hover {}
a:focus {}
a:active {}
und moechte eigentlich nur die Links damit formatieren,
nicht aber die (reinen) Anker.
Mozilla wendet dann aber die Angaben in a:hover (korrekterweise!)
auch fuer einen reinen Anker an, d.h. wenn man z.B. mit der
Maus ueber dieses Element geht:
<h3><a name="thema2">Zwischentitel</a></h3>
kriegt der Text voruebergehend das Aussehen,
das man fuer Links vorgesehen hat.
Das ist der "nervige Hover-Effekt", der fuer die
Benutzer ziemlich verwirrend sein kann (sie klicken
dann auf den Text, aber nichts passiert).
Um diesen Effekt zu vermeiden, kann man entweder
die Anker "leer" machen:
<h3><a name="thema2"></a>Zwischentitel</h3>
Oder man schreibt das CSS um, z.B. eben so:
a:link {}
a:visited {}
a:link:hover, a:visited:hover {}
a:focus {}
a:active {}
Ich hoffe, das war verstaendlich.
Gruesse,
Thomas
hi Thomas,
Das ist ein uraltes Geruecht bzw. ein alter Aberglaube,
das offenbar immernoch weit verbreitet ist.
Tatsache ist: Selbst Netscape 2.02 (aus dem Jahr 1995!)
kommt mit leeren Ankern zurecht.
Welche älteren Browser hast du denn alle getestet ??? Ein Gegenbeispiel entkräftet einige nicht. Dieser alte "Aberglaube" wird übr. auch von Selfhtml dann gefördert ;-).
Wegen dem unerwuenschten Hover-Effekt bei Ankern
schreibe ich meine Anker konsequent leer.
Welcher Hover-Effekt ??? Dies ist mir neu und hab ich noch nie gesehen.
mfg. YLT
Hallo YLT,
Welcher Hover-Effekt ??? Dies ist mir neu und hab ich noch nie gesehen.
In CSS wird häufig der Selektor a:hover gebraucht. Dieser wirkt auf
a-Elemente, wenn der Mauszeiger darüber schwebt. Eigentlich meint
man dieses meist nur für Links, also a-Elemente mit einem href-Attribut.
Das Pseudoelement :hover läßt sich jedoch auf so ziemlich jedes beliebige
Element anwenden, also auch auf a-Elemente, die kein Link sondern ein
Anker sind. Neuere Browser (also nicht der IE) zeigen dieses auch brav
an. Dies ist der unerwünschte Hover-Effekt bei Ankern.
Man will natürlich diesen Hover-Effekt nur bei a-Elementen, die auch
ein Link sind anwenden. Thomas' Variante, nämlich der Selektor a:link:hover
ist eine Methode. Eine andere ist der attributbedingte Selektor a[href]:hover,
der nur auf a-Elemente, die auch das Attribut href besitzen, wirkt.
Dummerweise verstehen ältere Browser wie z.B. der IE diesen Selektor nicht,
für diese müßte man wieder mit a:hover und der Ausnutzung bestimmter
browserspezifischer Bugs rumhantieren. Und das ist ziemlich lästig.
Mit id als fragment identifier wäre das nicht passiert. ;-)
Tim
hi Tim,
dann hab ich eben erst Mist gepostet *g*. Bei welchen Browsern tritt dieser Effekt denn genau auf, hät gern ein Beispiel, damit ich weiss mit welchen Browser ich testen sollte.
mfg. YLT
Hallo,
Bei welchen Browsern tritt dieser Effekt denn genau auf, hät gern ein Beispiel, damit ich weiss mit welchen Browser ich testen sollte.
Bei Geckos, also bei Mozilla, Netscape 6/7 u.s.w.
Die koennen :hover auf beliebige Elemente anwenden, also auch
auf Tabellenzellen ( td:hover {}) u.s.w.
(So wie es eben in der Spec. vorgesehen ist...)
Eine (etwas alte) Seite von mir zu Thema "Anker":
http://www.tiptom.ch/tests/css/a_name.html
Ich muss die Seite bei Gelegenheit noch um die
a:link:hover, a:visited:hover {}
Variante und die uebrigen im Thread genannten
Methoden ergaenzen...
Gruesse,
Thomas
hi Thomas,
danke fein, werd wohl Mozilla in meine Testliste aufnehmen.
mfg. YLT
Hallo,
Mit html will man ja Text auszeichnen. Mit einem Anker willst Du ja eine Stelle makieren, auf die gesprungen werden soll. Du musst Dir also überlegen, auf welche Stelle Du springen willst. Nach meiner Auffassung sollte das ein repräsentativer Text sein, etwa eine Überschrift. Daher müsste man wenn man es sauber machen will, einen Text anspringen.
Weitere Probleme haben YoLaTengo und Tim ja angesprochen.
Heiner
Hallo,
<a name="ankername">Text</a>
Oder so:
<a name="ankername"></a>Text
Das Problem bei der ersten Variante ist aber, dass mir dann der Text so wie ein Link formatiert wird. Wie muss ich eine Klasse anker (habt Ihr einen griffigeren Namen, z. B. auf Englisch?) gestalten, damit ich das umgehe, bzw. gibt es eine andere Lösung zur Vermeidung?
Guillermo
Wie muss ich eine Klasse anker (habt Ihr einen griffigeren Namen, z. B. auf Englisch?)
Wie wär's mit "anchor"?
Und genau das von Dir, Guillermo, angesprochen Problem hat mich eben dazu veranlasst, den Tag <a name=""></a> *vor* den Text zu ziehen, da dadurch die Formatierung von 'a' genommen wurde!
GE.ORG
hi,
Das Problem bei der ersten Variante ist aber, dass mir dann der Text so wie ein Link formatiert wird. Wie muss ich eine Klasse anker (habt Ihr einen griffigeren Namen, z. B. auf Englisch?) gestalten, damit ich das umgehe, bzw. gibt es eine andere Lösung zur Vermeidung?
wenn du eine klasse verwendest, dann musst du in dieser halt alle eigenschaften, die einen link bei dir als solchen kennzeichnen, durch (standard-)werte überschreiben.
also text-decoration:none z.b.
statt einer klasse würde sich allerdings m.e. ein attribut-selektor viel eher anbieten, der von vorneherein nur die links formatiert, die ein href-attribut haben.
(leider gibt's da einen browser, der dafür zu blöd ist ...)
gruss,
wahsaga
hi Guillermo,
durch Pseudoformate tritt dieses erst gar nicht auf, nutz ich gern und mir war dieses Problem nicht einmal bekannt ;-), ansonsten siehe wahsaga.
mfg. YLT