On 2024-02-05 10:43, Arno Welzel <
use...@arnowelzel.de> wrote:
> Peter J. Holzer, 2024-02-04 22:57:
>> On 2024-02-04 17:58, Maik Koenig <
usene...@maikkoenig.de> wrote:
>>> Am 04.02.2024 um 17:59 schrieb Arno Welzel:
>>>> Ja, geht technisch - aber mit "Style" hat das wenig zu tun und CSS
>>>> scheint sich dahin zu entwickeln, wo man bei HTML eigentlich mit der
>>>> Einführung von CSS weg wollte.
>>
>> Richtig erkannt: Mit der Einführung von CSS wollte man Präsentation von
>> Semantik trennen. CSS enthält daher genau die Dinge, die man in HTML
>> nicht haben will. (Naja, von hysterischen Rosinen abgesehen.)
>
> Zusätzliche Attribute in HTML einfügen oder das Verhalten generell
> ändern (z.B. Abschalten von Click-Events) hat aber nichts mit
> "Präsentation" zu tun.
Davon war hier aber auch nicht die Rede.
Es ging darum, ein *vorhandenes* Attribut (konkret "href") abzufragen
und sichtbar zu machen. Z.B. so:
<style>
a.showurl::after { content: ' (' attr(href) ')'; }
</style>
[...]
<p>
Ein <a class="showurl" href="
https://www.hjp.at">Link mit URL</a>.
</p>
Das wird dann als
Ein Link mit URL (
https://www.hjp.at).
dargestellt, wobei "Link mit URL (
https://www.hjp.at)" ein aktiver Link
ist.
>>> Wohl eher wo man mit JavaScript hinwollte.
>>
>> Jein. Richtig ist, dass man heute mit CSS viele Dinge erledigen kann,
>> für die man früher JavaScript missbrauchen musste (und schon früher
>> viele Dinge mit JavaScript gemacht hat, die schon damal mit CSS auch
>> gegangen wären). Aber der Zweck von CSS und der Zweck von JavaScript
>> (Präsentation vs. Business-Logik) war immer ein anderer.
>
> Wieso "missbrauchen"? Wenn Attribute eines Elements verändert werden
> sollen - kann man das entweder im Server tun oder wenn das nicht geht,
> eben im Client. Aber wie auch immer - solche Änderungen haben nichts mit
> "Präsentation" zu tun.
Das meinte ich aber nicht. Ich meinte, dass es früher oft notwendig war,
Features, die es eigentlich in CSS hätte geben sollen (also solche, die
die Präsentation beeinflussen), in JavaScript zu implementieren. Ich
sehe das als "Missbrauch" an, ähnlich wie z.B. HTML-Tabellen zu
Layout-Zwecken. Wobei "Missbrauch" sicher ein zu starkes Wort ist. Es
ist halt ein Workaround um eine Schwäche von CSS.
Das ist heute seltener notwendig (jedenfalls für meine bescheidenen
Ansprüche), aber mir fallen immer noch ein paar Dinge ein, die meiner
Meinung nach mit CSS gehen sollten, aber eben nicht gehen (zumindest
weiß ich nicht, wie) und die ich im Fall es Falles in JavaScript
implementieren müsste.
>>> Das gilt auch für attr(). Der Unterschied ist die deutlich kürzere
>>> Formulierung. Um das zu erreichen was mit attr() im Beispiel gemacht
>>> wird braucht es drastisch mehr Aufwand in JavaScript.
>>
>> Vor allem aber ist CSS deklarativ, nicht prozedural. Das schreckt aber
>> offenbar manche Programmierer ab.
>
> Darum geht es nicht. CSS war ursprünglich dafür gedacht, das *Aussehen*
> von HTML-Elementen zu ändern und nicht deren Semantik.
>
> Mit attr() kann man z.B. ein INPUT-Element deaktivieren oder aus einem
> Link einen Anker machen oder bei anklickbaren Elementen dafür sorgen,
> dass sie Klicks ignorieren usw..
Du hast Du irgendwo einen Gedankensprung gemacht, den ich nicht
nachvollziehen kann. attr() fragt ausschließlich ein existierendes
Attribut eines Elements ab. Es tut nichts von den Dingen, die Du da
aufzählst. Bestenfalls kann man attr() in anderen CSS-Properties
verwenden, die das machen.
> Generated content ist auch schon grenzwertig, kann man aber noch als
> "Style" betrachten, da sich an der Semantik des Elements für den Browser
> auch mit zusätzlichem Inhalt nichts ändert.
Und genau darum ging es.
hp