Heim >Backend-Entwicklung >PHP-Tutorial >Automatischer CSS3 -Präfixer und Kompressor
<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</span> rel<span>="stylesheet"</span> href<span>="css/css.php?f=css_file1|css_file2|css_file3"</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!
<?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:
<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</span> rel<span>="stylesheet"</span> href<span>="css/css.php?f=css_file1|css_file2|css_file3"</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.
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.
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!