Analyse der Situation, in der js die Unterstützung von CSS-Attributen (Werten) bestimmt und informiert

Analyse der Situation, in der js die Unterstützung von CSS-Attributen (Werten) bestimmt und informiert

Wenn wir eine neue CSS-Funktion verwenden möchten, achten wir immer auf ihre Kompatibilität. Vielleicht suchen wir nach ihrer Kompatibilität, welche Browser geeignet sind und welche nicht, und entscheiden dann, ob wir sie verwenden oder wie wir sie unter diesen bekannten Umständen verwenden. Diese Entscheidung wird unter dem bekannten Browser getroffen, den wir verwenden werden.

Allerdings wissen wir oft nicht, welchen Browser die Benutzer zum Öffnen der von uns entwickelten Seiten verwenden. In diesem Fall müssen wir anhand der tatsächlichen Browsernutzung bestimmen, welche Strategie wir anwenden. Zu diesem Zeitpunkt müssen wir mithilfe von JS bestimmen, ob die CSS-Attribute, die wir verwenden möchten, effektiv sind.

Es gibt zwei Arten der CSS-Attributkompatibilität: eine ist das CSS-Attribut selbst, z. B. „Position“, die andere ist der CSS-Attributwert, z. B. der Sticky-Wert für das Positionsattribut.

Ziel

Wir möchten wissen, ob eine bestimmte CSS-Eigenschaft (Wert) wirksam ist, und bekommen in der Regel als Antwort, dass das Ergebnis „wirksam“ oder „unwirksam“ ist. Es gibt jedoch browserprivate CSS-Eigenschaften, d. h. es gibt CSS-Eigenschaften, die erst nach dem Hinzufügen von Browserpräfixen wirksam werden.

Daher müssen Sie wissen, welche CSS-Eigenschaften mit oder ohne Präfix für aktuelle Browser wirksam werden, und nicht nur, ob sie wirksam werden oder nicht (es ist mühsam, jedes Präfix selbst als Eingabewert zu überprüfen! In vielen Materialien im Internet erfahren Sie häufig, ob das von Ihnen angegebene CSS unterstützt wird und welcher Boolesche Wert zurückgegeben wird).

Die folgende Methode erfordert also nur, dass Sie als Eingabewert das CSS-Attribut (Wert) ohne Präfix verwenden, und kann Ihnen mitteilen, welches Präfix der aktuelle Browser unterstützt oder ob überhaupt kein Präfix erforderlich ist.

Überprüfen Sie den CSS-Eigenschaftsnamen

Diese Methode überprüft das CSS-Attribut selbst, also den Attributnamen, der beim Schreiben von CSS auf der linken Seite von : steht. Wenn der Rückgabewert leer ist, bedeutet dies, dass der Browser die Eigenschaft nicht unterstützt.

/**
 * Teilen Sie dem Browser mit, welche spezifischen CSS-Eigenschaften unterstützt werden. * @param {String} key - CSS-Eigenschaft, das ist der Name der Eigenschaft, es ist kein Präfix erforderlich. * @returns {String} - Unterstützte Eigenschaften * /
Funktion validateCssKey(Schlüssel) {
    const jsKey = toCamelCase(key); // Einige CSS-Eigenschaften werden mit Bindestrich versehen if (jsKey in document.documentElement.style) {
        Eingabetaste;
    }
    lassen Sie validKey = '';
    // Der Attributname hat die Form des Präfixes in js und der Attributwert hat die Form des Präfixes in css // Nach dem Ausprobieren kann Webkit auch der erste Buchstabe von webkit in Kleinbuchstaben sein
    const PräfixMap = {
        Webkit: „-webkit-“,
        Moz: '-moz-',
        ms: '-ms-',
        O: '-o-'
    };
    für (const jsPrefix in prefixMap) {
        const styleKey = toCamelCase(`${jsPrefix}-${jsKey}`);
        wenn (Stilschlüssel in Dokument.Dokumentelement.Stil) {
            gültiger Schlüssel = PräfixMap[jsPrefix] + Schlüssel;
            brechen;
        }
    }
    gibt gültigen Schlüssel zurück;
}

/**
 * Konvertieren Sie Zeichenfolgen mit Bindestrich in Zeichenfolgen in CamelCase-Format*/
Funktion toCamelCase(Wert) {
    Rückgabewert.replace(/-(\w)/g, (übereinstimmend, Buchstabe) => {
       returniere letter.toUpperCase();
   });
}

Überprüfen von CSS-Eigenschaftswerten

Diese Methode überprüft den Wert des CSS-Attributs, also die rechte Seite von : beim Schreiben von CSS. Wenn der Rückgabewert leer ist, beweist dies, dass der Browser den Attributwert nicht unterstützt.

Es gibt hier zwei Versionen, eine ist die es6-Version und die andere ist die grundlegende JS-Version.

Ich habe aus reiner Trotz zwei Versionen geschrieben.

/**
 * Überprüfen Sie, ob der Browser einen bestimmten CSS-Attributwert unterstützt (ES6-Version).
 * @param {String} key – der Name der CSS-Eigenschaft, zu der der zu prüfende Eigenschaftswert gehört * @param {String} value – der zu prüfende CSS-Eigenschaftswert (ohne Präfix)
 * @returns {String} – Gibt den vom Browser unterstützten Eigenschaftswert zurück */
Funktion validateCssValue (Schlüssel, Wert) {
    const Präfix = ['-o-', '-ms-', '-moz-', '-webkit-', ''];
    const Präfixwert = Präfix.map(item => {
        Artikel + Wert zurückgeben;
    });
    const element = document.createElement('div');
    const eleStyle = element.style;
    // Wenden Sie jedes Präfix an und wenden Sie zum Schluss die Groß-/Kleinschreibung ohne Präfix an, um zu sehen, welche für den Browser funktioniert. // Aus diesem Grund ist es am besten, wenn das letzte Element im Präfix '' ist.
    Präfixwert.fürJeden(Element => {
        eleStyle[Schlüssel] = Element;
    });
    returniere eleStyle[Schlüssel];
}

/**
 * Prüfen, ob der Browser einen bestimmten CSS-Eigenschaftswert unterstützt * @param {String} key – der CSS-Eigenschaftsname, zu dem der zu prüfende Eigenschaftswert gehört * @param {String} value – der zu prüfende CSS-Eigenschaftswert (ohne Präfix)
 * @returns {String} – Gibt den vom Browser unterstützten Eigenschaftswert zurück */
Funktion validateCssValue (Schlüssel, Wert) {
    var Präfix = ['-o-', '-ms-', '-moz-', '-webkit-', ''];
    var Präfixwert = [];
    für (var i = 0; i < Präfix.Länge; i++) {
        Präfixwert.push(Präfix[i] + Wert)
    }
    var Element = Dokument.ErstellenElement('div');
    var eleStyle = element.stil;
    für (var j = 0; j < Präfixwert.Länge; j++) {
         eleStyle[Schlüssel] = Präfixwert[j];
    }
    returniere eleStyle[Schlüssel];
}

Zusammenfassen

Wir können die beiden oben genannten Formen der CSS-Kompatibilität einfach zusammenführen, ohne die Methode zum Überprüfen des Attributnamens oder des Attributwerts explizit aufzurufen, und das CSS direkt übergeben, um den Browser über die Unterstützungssituation zu informieren.

Funktion validCss (Schlüssel, Wert) {
    const validCss = validateCssKey(Schlüssel);
    wenn (validCss) {
        gibt valides CSS zurück;
    }
    returniere validateCssValue(Schlüssel, Wert);
}

Dies ist das Ende dieses Artikels über die Analyse, wie js die unterstützten CSS-Attribute (Werte) bestimmt und informiert. Weitere relevante Inhalte dazu, wie js die CSS-Attributwerte bestimmt, finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder durchsuchen Sie die verwandten Artikel weiter unten. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

<<:  So verwenden Sie Cron-Jobs, um PHP regelmäßig unter Cpanel auszuführen

>>:  So nutzen Sie Partitionierung, um die MySQL-Datenverarbeitung für Milliarden von Daten zu optimieren

Artikel empfehlen

Detaillierte Erläuterung der Pipeline und des Ventils im Tomcat-Pipeline-Modus

Vorwort Wenn in einem relativ komplexen großen Sy...

Beispiel für die MySQL-Methode zum Löschen von Daten und Datentabellen

Es ist sehr einfach, Daten und Tabellen in MySQL ...

So implementieren Sie die King of Glory-Personal-Ladeseite mit CSS3

Wer King of Glory gespielt hat, sollte mit der Wi...

W3C Tutorial (10): W3C XQuery Aktivitäten

XQuery ist eine Sprache zum Extrahieren von Daten...

So berechnen Sie mit Linux den von zeitgesteuerten Dateien belegten Speicherplatz

Öffnen Sie den Editor für geplante Aufgaben. Cent...

Vue implementiert eine einfache Timer-Komponente

Bei der Durchführung eines Projekts stößt man unw...

So verwenden Sie einen Docker-Container für den Zugriff auf das Host-Netzwerk

Vor Kurzem wurde ein System bereitgestellt, das n...

Implementierung einer nicht geheimen SSH-Kommunikation in Linux

Was ist SSH? Administratoren können sich remote a...

Mysql-Timeline-Daten, um die ersten drei Daten desselben Tages zu erhalten

Erstellen von Tabellendaten CREATE TABLE `praise_...

Vue-Handschrift-Ladeanimationsprojekt

Wenn die Seite nicht reagiert, ist die Anzeige de...

Lösen Sie das Problem der Angabe der UDP-Portnummer im Docker

Wenn Docker einen Container startet, gibt es den ...