Changeset 47366 in spip-zone for _plugins_/css_imbriques


Ignore:
Timestamp:
May 3, 2011, 10:50:29 AM (9 years ago)
Author:
arno@…
Message:

Compatibilité avec les @media queries. Subtilité: on peut définir des @media _à l'intérieur_ d'une hiérarchie imbriquée de classes, et le plugin remettra l'ensemble dans le bon ordre.

Location:
_plugins_/css_imbriques
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/css_imbriques/css_imbriques_fonctions.php

    r47000 r47366  
    11<?php
     2
     3$GLOBALS["css_imbriques_medias_queries"] = array();
    24
    35// filtre couleur_rgba converti une mention de couleur hexadecimale
     
    3234function css_contruire($css, $niveau, $chemin, $classe, $enfants, $definition) {
    3335
    34        
    3536        $intitule = trim($classe[$niveau]);
    3637        if (substr($intitule, 0, 2) == ". ") {
     
    6667
    6768function css_imbriques_couleurs_ie ($coul) {
    68        
    6969        if (preg_match(",^\#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])$,", $coul, $conv)) {
    7070                $coul = "#".$conv[1].$conv[1].$conv[2].$conv[2].$conv[3].$conv[3];
     
    281281               
    282282                        $intitule = trim($regs[1]);
     283
     284                        if (preg_match(",^@media,", $intitule)) $intitule .= " media@";
     285
    283286                                               
    284287                        $def = trim($regs[2]);
     
    288291                        $debut = substr($css, 0, $pos);
    289292                        $fin = substr($css, $pos + strlen($chaine), strlen($css));
     293
     294
     295
     296//                                      echo "<li>$intitule</li>";
    290297
    291298                        if (preg_match("#\,#", $intitule)) {
     
    310317                        } else {
    311318                       
    312                
     319                               
    313320               
    314321                                $compteur ++;
    315322                       
    316                                 $classe[$compteur] = trim($regs[1]);
     323                                $classe[$compteur] = $intitule;
    317324                                $definition[$compteur] = trim($regs[2]);
    318325                               
     
    324331                                        $enfants[$compteur][] = $enfant;
    325332                                }
    326                         //      $classe = css_imbriques_enfants($compteur, $classe[$compteur], $classe, $enfants);
    327333       
    328334                                $definition[$compteur] = preg_replace("#[\ \n]*\[\[[0-9]*\]\][\ \n]*#", "", $definition[$compteur]);
     335//                              echo "<li>".$definition[$compteur];
    329336       
    330337                               
     
    342349       
    343350        $css = "";
     351       
    344352        $css = css_contruire($css, $compteur, "", $classe, $enfants, $definition);
    345353
    346354
     355       
    347356       
    348357        // Derniere passe: "minifier" les CSS
     
    351360        $css = preg_replace(",\},", "}\n", $css);
    352361
     362        // Rechercher les media_queries
     363        $css = preg_replace_callback(",(.*(@media .* media@).*)\{(.*)\}\n?,", "css_imbriques_traiter_media", $css);
     364        if (count($GLOBALS["css_imbriques_medias_queries"]) > 0) {
     365                foreach($GLOBALS["css_imbriques_medias_queries"] as $k=>$val) {
     366                        $css .= $k ."{\n". $val . "}\n";
     367                }
     368        }
     369
     370
    353371        return $css;
    354 //      echo "<hr>$css<hr>";
    355 
     372}
     373
     374
     375function css_imbriques_traiter_media($reg) {
     376        $query = $reg[2];
     377        $query = trim(substr(trim($query), 0, strlen($query) - 6));
     378       
     379        $intitule = str_replace($reg[2], "", $reg[1]);
     380        $intitule = trim(preg_replace(",\ +,", " ", $intitule));
     381       
     382       
     383        $definition = $reg[3];
     384
     385        $GLOBALS["css_imbriques_medias_queries"]["$query"] .= $intitule."{".$definition."}\n";
     386        return;
    356387}
    357388
  • _plugins_/css_imbriques/plugin.xml

    r47000 r47366  
    22        <nom>CSS imbriqu&eacute;s</nom>
    33        <auteur>ARNO*</auteur>
    4         <version>1.7</version>
     4        <version>1.8</version>
    55        <etat>stable</etat>
    66        <description>
    77                Ce plugin permet de traiter des CSS imbriqu&eacute;s.
    8                
     8
    99                Par ailleurs, il introduit des pseudo-styles permettant de coder
    1010                rapidement des comportements qui demandent des notations
    1111                diffŽrentes pour viser diffŽrents navigateurs.
     12
     13                Il permet Žgalement d'insŽrer des @media queries {ˆ l'intŽrieur} des classes elles-mmes.
    1214        </description>
    1315        <lien>http://plugins.spip.net/css-imbriques</lien>
Note: See TracChangeset for help on using the changeset viewer.