suchen
HeimBackend-EntwicklungPHP-TutorialAutomatischer CSS3 -Präfixer und Kompressor

Automatischer CSS3 -Präfixer und Kompressor

Key Takeaways

  • Das im Text gezeigte PHP-Skript ermöglicht die automatische Erzeugung von CSS3-Eigenschaften mit Browserspezifischen Präfixen und die Komprimierung von CSS-Dateien für verbesserte Ladezeiten der Seiten, ohne dass zusätzliche Tools erforderlich sind.
  • Das Skript funktioniert, indem er unterstrichene Eigenschaften in CSS-Dateien durch einen Satz von browserspezifischen vorangestellten Eigenschaften ersetzt und dann die CSS-Dateien verkettet und komprimiert, um Serveranforderungen und unnötiger Weißraum zu reduzieren.
  • Das Skript kann mit anderen CSS -Präprozessoren wie SASS oder weniger verwendet werden, und seine Vorteile umfassen eine verbesserte Leistung der Website und die Kompatibilität für verschiedene Browser sowie die Zeit und Aufwand, um Anbieter -Präfixe und CSS -Dateien manuell hinzuzufügen und CSS -Dateien zu komprimieren.
Es gibt viele Möglichkeiten, CSS-Dateien zu komprimieren oder automatisch browserspezifische CSS3-Präfixe zu generieren, aber normalerweise werden zusätzliche Tools verwendet, was sehr ärgerlich ist. Ich möchte Ihnen zeigen, wie solche Aufgaben nur mit PHP erledigt werden können. In diesem Artikel sehen wir:
  • CSS3-Eigenschaften mit browserspezifischen Präfixen erzeugen, damit wir sie nicht alle von Hand haben
  • Verkettieren Sie alle CSS -Dateien und streifen Sie Kommentare und unnötiger Weißraum aus, um die Anzahl der Serveranforderungen zu reduzieren und die Ladezeit der Seite zu verkürzen
  • Führen Sie den Prozess im Fliege durch, wenn die Webseite angefordert wird
Hier ist ein Beispiel, das zeigt, wie einfach das Endergebnis zu verwenden ist. In der CSS wird das Browserspezifische Präfix durch einen solchen Unterstrich ersetzt:
<span>_border-radius: 10px;</span>
Der Code generiert eine vollständige Liste von Eigenschaften wie folgt:
<span>-o-border-radius: 10px;
</span><span>-moz-border-radius: 10px;
</span><span>-webkit-border-radius: 10px;
</span><span>border-radius: 10px;</span>
In der HTML wird dann ein Link so geschrieben, um die Stile zu importieren:
<span><span><span><link> rel<span>="stylesheet"</span> href<span>="css/css.php?f=css_file1|css_file2|css_file3"</span>></span></span></span>
Mit dem einzelnen Linkelement werden drei CSS -Dateien als eins geladen. Das CSS.PHP -Skript wird in den aufgeführten Dateien (CSS_File1.css, CSS_File2.css und CSS_File3.css) gelesen, kombinieren und geben Sie sie als eine einzelne Datei zurück. Es sieht ziemlich einfach zu bedienen, oder? Lassen Sie uns also ohne weiteres Code schreiben!

Schreiben des Codes

Erstellen Sie die Datei CSS.php mit dem folgenden Code:
<?php $files = explode("|", $_GET["f"]);

$contents = "";
foreach ($files as $file) {
    $contents .= file_get_contents($file . ".css");
}

preg_match_all('/_[a-zA-Z-]+:s.+;|[a-zA-Z-]+:s_[a-zA-Z].+;/',
    $contents, $matches, PREG_PATTERN_ORDER);

$prefixes = array("-o-", "-moz-", "-webkit-", "");
foreach ($matches[0] as $property) {
    $result = "";
    foreach ($prefixes as $prefix) {
        $result .= str_replace("_", $prefix, $property);
    }
    $contents = str_replace($property, $result, $contents);
}

$contents = preg_replace('/(/*).*?(*/)/s', '', $contents);
$contents = preg_replace(array('/s+([^w'"]+)s+/', '/([^w'"])s+/'), '', $contents);

header("Content-Type: text/css");
header("Expires: " . gmdate('D, d M Y H:i:s GMT', time() + 3600));
echo $contents;
Der Code empfängt zunächst die Liste der CSS -Dateien, die als Zeichenfolge aus dem URL -Parameter verarbeitet werden soll (in PHP als $ _get ["f"] zugänglich). Jede Datei ist mit einem Rohrcharakter getrennt. Die Funktion explode () teilt die Zeichenfolge auf die Rohre, die ein Array von Dateinamen zurückgeben. Die Funktionsdatei_get_Contents () Ruft den Inhalt jeder Datei ein, die nacheinander angehängt wird, an den Variablen -$ -Inhalt. Nachdem der Inhalt der CSS-Dateien abgerufen wurde, besteht der nächste Schritt darin, alle CSS-Eigenschaften zu finden, die mit einem Unterstrich beginnen und sie durch die browserspezifischen vorangestellten Eigenschaften ersetzen. Die Funktion preg_match_all () findet alle Teile im Text, die mit dem regulären Ausdruck übereinstimmen, und stellt die Übereinstimmungen in $ Matches [0] als Array ein. Ich werde nicht erklären, warum $ Matches den Array Index 0 hat, da Sie eine klare Erklärung zur Funktion im PHP -Handbuch lesen können. Vielmehr möchte ich mich darauf konzentrieren, den Fluss unseres Programms zu erklären. Dieses Bild erklärt das Muster des regulären Ausdrucks:

Automatischer CSS3 -Präfixer und Kompressor

Das Array $ Präfixen enthält ein Array von Browser-spezifischen Präfixen. Sie können mehr Präfixe hinzufügen oder je nach Ihren Anforderungen einige entfernen. Jede Eigenschaftsdefinition in $ Matches [0] wird in eine Reihe von CSS3-Eigenschaften mit browserspezifischen Präfixen umgewandelt. Der Code iteriert jede Eigenschaft und erstellt einen Ergebnispuffer, ersetzt den Unterstrich in der Eigenschaft durch das Browserspezifische Präfix und drückt das Ergebnis im Puffer und ersetzt dann die ursprüngliche Eigenschaft im Text durch den Inhalt des Puffer. Nachdem die browserspezifischen Präfixe erweitert wurden, erfolgt sie und sie wurden wieder in $ Inhalt verschmolzen, stellt das Skript alle Kommentare im Inhalt auf, um seine Größe zu verringern. Dieses Bild erklärt den relevanten regulären Ausdruck:

Automatischer CSS3 -Präfixer und Kompressor

Anschließend beseitigt ein weiterer regulärer Ausdruck unnötige Whitespace und neue Linien, um die Größe des Inhalts weiter zu verringern.

Automatischer CSS3 -Präfixer und Kompressor

Teile, die mit regulärem Ausdruck übereinstimmen, werden beispielsweise durch Zeichen in der Klammer ersetzt:

Automatischer CSS3 -Präfixer und Kompressor

Schließlich ist das CSS, das in $ Inhalt gespeichert ist, gesendet werden. Der erste Header () -Anruf informiert den Browser darüber, dass die Ausgabe als CSS -Datei behandelt werden sollte. Der zweite Header () teilt dem Browser mit, dass diese Datei in einer Stunde abläuft, sodass der Browser ihn eine Stunde lang zwischenspeichert und die zwischengespeicherte Kopie verwendet, anstatt ihn erneut vom Server anzufordern.

Verwenden des Skripts

Ich möchte Ihnen ein einfaches Nutzungsbeispiel für das Skript geben, das wir gerade gemacht haben. Setzen Sie die CSS.php ein In Ihr CSS -Verzeichnis zusammen mit diesen drei CSS -Dateien. Die erste Datei ist Header.css:
<span>_border-radius: 10px;</span>
Die zweite Datei ist Center.css:
<span>-o-border-radius: 10px;
</span><span>-moz-border-radius: 10px;
</span><span>-webkit-border-radius: 10px;
</span><span>border-radius: 10px;</span>
Die dritte Datei ist Fußzeile.css:
<span><span><span><link> rel<span>="stylesheet"</span> href<span>="css/css.php?f=css_file1|css_file2|css_file3"</span>></span></span></span>
Schauen Sie sich an, wie die CSS3 -Eigenschaften geschrieben wurden. Diejenigen, die ein browserspezifisches Präfix hätten, werden nur einmal angegeben und haben einen Unterstrich vor sich. Erstellen Sie als nächstes den Datei index.html, der die Stile verwendet.
<?php $files = explode("|", $_GET["f"]);

$contents = "";
foreach ($files as $file) {
    $contents .= file_get_contents($file . ".css");
}

preg_match_all('/_[a-zA-Z-]+:s.+;|[a-zA-Z-]+:s_[a-zA-Z].+;/',
    $contents, $matches, PREG_PATTERN_ORDER);

$prefixes = array("-o-", "-moz-", "-webkit-", "");
foreach ($matches[0] as $property) {
    $result = "";
    foreach ($prefixes as $prefix) {
        $result .= str_replace("_", $prefix, $property);
    }
    $contents = str_replace($property, $result, $contents);
}

$contents = preg_replace('/(/*).*?(*/)/s', '', $contents);
$contents = preg_replace(array('/s+([^w'"]+)s+/', '/([^w'"])s+/'), '', $contents);

header("Content-Type: text/css");
header("Expires: " . gmdate('D, d M Y H:i:s GMT', time() + 3600));
echo $contents;
Schauen Sie sich das HREF -Attribut im Link -Tag an. Jeder CSS -Dateiname wird durch ein Rohr getrennt.

Schlussfolgerung

In diesem Artikel habe ich Ihnen gezeigt, wie man einige gemeinsame Manipulationen von CSS mit PHP automatisiert. Das Skript stützt sich stark auf reguläre Ausdrücke, eine sehr leistungsstarke Sprache, die es uns ermöglicht, die Zeichenfolge zu manipulieren, wie wir sie sehen. Insgesamt ist das Skript sehr einfach, bietet aber viele Vorteile. Verwenden Sie es in Ihrem nächsten Projekt. Bild über 1xpert / Shutterstock

häufig gestellte Fragen zu CSS3 Prefixer und Kompressor

Was ist der Zweck eines CSS3 -Präfixers und Kompressors? Es fügt automatisch Anbieter -Präfixe zu CSS -Eigenschaften hinzu, um sicherzustellen, dass sie über verschiedene Browser hinweg funktionieren. Die Kompressorfunktion reduziert die Größe der CSS -Dateien, indem sie unnötige Zeichen beseitigt und so die Ladegeschwindigkeit Ihrer Website verbessert.

Wie funktioniert ein CSS3 -Präfixer und Kompressor? Anschließend werden diese Präfixe automatisch hinzugefügt und Sie die Zeit und Mühe sparen, es manuell zu tun. Die Kompressorfunktion funktioniert, indem unnötige Zeichen wie Leerzeichen, Kommentare und Zeilenpausen aus Ihren CSS -Dateien entfernt werden, wodurch ihre Größe verringert wird. Es stellt sicher, dass Ihre CSS -Eigenschaften in verschiedenen Browsern funktionieren und die Größe Ihrer CSS -Dateien reduzieren und so die Ladegeschwindigkeit Ihrer Website verbessern. Es spart Ihnen auch die Zeit und Mühe, die Präfixe von Anbietern manuell hinzuzufügen und Ihre CSS -Dateien zu komprimieren.

Gibt es Nachteile für die Verwendung eines CSS3 -Präfixers und Kompressors? Einige moderne Browser benötigen keine Anbieter -Präfixe mehr für bestimmte CSS -Eigenschaften. Wenn Sie Ihre CSS-Dateien überarbeiten, können sie auch schwer zu lesen und zu pflegen. Anschließend werden die erforderlichen Anbieter -Präfixe automatisch hinzugefügt und Ihre Dateien komprimiert. Einige Tools bieten auch zusätzliche Funktionen wie Minifikation und Optimierung. Das Tool fügt einfach die erforderlichen Anbieter -Präfixe hinzu und komprimiert die ausgegebenen CSS -Dateien. Diese Tools bieten eine Reihe von Funktionen und können mit verschiedenen CSS -Präprozessoren verwendet werden. Sie sollten auch die Leistung und Zuverlässigkeit des Tools berücksichtigen.

Kann ich einen CSS3 -Präfixer und einen Kompressor für große CSS -Dateien verwenden? Beachten Sie jedoch, dass die Verarbeitungszeit für größere Dateien länger sein kann. Wenn Browserkompatibilität und Leistung wichtige Überlegungen sind, kann die Verwendung eines CSS3 -Präfixers und des Kompressors vorteilhaft sein.

Das obige ist der detaillierte Inhalt vonAutomatischer CSS3 -Präfixer und Kompressor. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Was ist der Unterschied zwischen UnSet () und Session_Destroy ()?Was ist der Unterschied zwischen UnSet () und Session_Destroy ()?May 04, 2025 am 12:19 AM

ThedifferencebetweenUnset () undsesion_destroy () isHatunset () clearsSesionSessionVariables whilepingTheSessionActive, whire eassession_destroy () terminatesthectheentireSession.1) UseUnset () toremovespecificSessionvariables ohnemacht

Was sind klebrige Sitzungen (Sitzungsaffinität) im Kontext des Lastausgleichs?Was sind klebrige Sitzungen (Sitzungsaffinität) im Kontext des Lastausgleichs?May 04, 2025 am 12:16 AM

StickySessionSesionSureSerRequestSareroutedTothesamerverForSessionDataconsistency.1) SessionidentificationSignSuServerSuSuSuSingCookieSorUrlmodificificificifications.2) KonsistentroutingDirectsSubsequestRequestTothSameServer.3) LastbalancedistributeNeNewuser

Was sind die verschiedenen Sitzungsspeicher -Handler in PHP verfügbar?Was sind die verschiedenen Sitzungsspeicher -Handler in PHP verfügbar?May 04, 2025 am 12:14 AM

PhpoffersVariousSsionsAVEHandlers: 1) Dateien: Standard, SimpleButMayBottleneckonHigh-Trafficsites.2) Memcached: Hochleistungs-Ideforspeed-kritische Anpassungen.3) Redis: Similartomemez, withaddedPersi.

Was ist eine Sitzung in PHP und warum werden sie verwendet?Was ist eine Sitzung in PHP und warum werden sie verwendet?May 04, 2025 am 12:12 AM

Die Sitzung in PHP ist ein Mechanismus zum Speichern von Benutzerdaten auf der Serverseite, um den Status zwischen mehreren Anforderungen aufrechtzuerhalten. Insbesondere 1) Die Sitzung wird von der Session_start () -Funktion gestartet, und die Daten werden gespeichert und durch das Super Global Array $ _Session Super Global gelesen. 2) Die Sitzungsdaten werden standardmäßig in den temporären Dateien des Servers gespeichert, können jedoch über Datenbank oder Speicherspeicher optimiert werden. 3) Die Sitzung kann verwendet werden, um die Verfolgung und Einkaufswagenverwaltungsfunktionen zu realisieren. 4) Achten Sie auf die sichere Übertragungs- und Leistungsoptimierung der Sitzung, um die Sicherheit und Effizienz des Antrags zu gewährleisten.

Erklären Sie den Lebenszyklus einer PHP -Sitzung.Erklären Sie den Lebenszyklus einer PHP -Sitzung.May 04, 2025 am 12:04 AM

PHPSSIONSSTARTWITHSession_Start (), was generatesauniquidandcreateSaServerfile;

Was ist der Unterschied zwischen absoluten und müßigen Sitzungszeitüberschreitungen?Was ist der Unterschied zwischen absoluten und müßigen Sitzungszeitüberschreitungen?May 03, 2025 am 12:21 AM

Die Absolute -Sitzungs -Zeitlimit startet zum Zeitpunkt der Erstellung der Sitzung, während eine Zeitlimit in der Leerlaufsitzung zum Zeitpunkt der No -Operation des Benutzers beginnt. Das Absolute -Sitzungs -Zeitlimit ist für Szenarien geeignet, in denen eine strenge Kontrolle des Sitzungslebenszyklus erforderlich ist, z. B. finanzielle Anwendungen. Das Timeout der Leerlaufsitzung eignet sich für Anwendungen, die die Benutzer für lange Zeit aktiv halten, z. B. soziale Medien.

Welche Schritte würden Sie unternehmen, wenn Sitzungen nicht auf Ihrem Server funktionieren?Welche Schritte würden Sie unternehmen, wenn Sitzungen nicht auf Ihrem Server funktionieren?May 03, 2025 am 12:19 AM

Der Serversitzungsausfall kann durch Befolgen der Schritte gelöst werden: 1. Überprüfen Sie die Serverkonfiguration, um sicherzustellen, dass die Sitzung korrekt festgelegt wird. 2. Überprüfen Sie die Client -Cookies, bestätigen Sie, dass der Browser es unterstützt und korrekt senden. 3. Überprüfen Sie die Speicherdienste wie Redis, um sicherzustellen, dass sie normal arbeiten. 4. Überprüfen Sie den Anwendungscode, um die korrekte Sitzungslogik sicherzustellen. Durch diese Schritte können Konversationsprobleme effektiv diagnostiziert und repariert werden und die Benutzererfahrung verbessert werden.

Welche Bedeutung hat die Funktion Session_start ()?Welche Bedeutung hat die Funktion Session_start ()?May 03, 2025 am 12:18 AM

Session_Start () iscrucialinphPFormAnagingUSSERSIONS.1) ItinitiatesanewSessionifnoneExists, 2) Wiederaufnahmen und 3) setaSessionCookieforContinuityAcrossRequests, aktivierende Anwendungen wie

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

SecLists

SecLists

SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.