Die Story:Wie Klassennamen aus einem CSS-Selektor extrahiert werden?
ich zur Zeit eine ESLint Regel bauen über die Verwendung von Bootstrap layoutorientierte und Winkel technische Klassen innerhalb CSS-Selektor-Locators zu warnen. Zur Zeit verwende ich eine einfache Teilzeichenkette in einer Zeichenkettenmethode:
Aber es hat sich nicht als zuverlässig erwiesen. Zum Beispiel gibt es einen Fehler 2 Mal auf .col-sm-offset-11
CSS-Selektor Berichterstattung sowohl und col-sm-offset-11
zu verwenden. Ich kann mir vorstellen, dass es bei komplexeren Selektoren mit mehreren verwendeten Pseudoklassen leicht brechen kann.
Die Frage:
Was ist die zuverlässigste Weise Klassennamen von einem CSS-Selektor zu extrahieren?
Hier ist eine Probe-Test Liste, die wir (zu verbessern) abdecken sollte:
.col-sm-push-4 // -> ['col-sm-push-4']
.myclass.col-lg-pull-8 // -> ['myclass', 'col-lg-pull-8']
[class*='col-md-offset-4'] // -> []
[class$=col-md-offset-11] // -> []
[class~="col-md-10"] .myclass // -> ['col-md-10', 'myclass']
.col-md-10,.col-md-11 // -> ['col-md-10', 'col-md-11']
Beachten Sie, dass wir die die ~=
(dank verlassen ^=
, $=
und *=
Teilklasse Filterwerte müssen überspringen für die Kommentare).
Ich stimme mit @adeneo überein. Es ist eine interessante Frage, aber * "benutze diese Bibliothek" * ist keine große Antwort. Es geht nicht direkt um die Frage "wie". –
@squint guter Punkt. Ich bin völlig offen für Antworten auf das "Wie". Ich wollte nur das interessante Problem und die Art, wie ich es angegangen bin, teilen. Vielen Dank! – alecxe
Es ist nicht zuverlässig, Klassennamen aus den Attributen * = und $ = zu extrahieren, es sei denn, Sie nehmen an, dass sie niemals Elementen mit Klassennamen entsprechen, die diese Teilzeichenfolgen enthalten, aber nicht mit ihnen übereinstimmen. – BoltClock