Chiunque è in realtà utilizzando i css spazi dei nomi?

Quali sono le ragioni per cui la gente sembra preferire tecniche come SMACSS per una sorta di spazio di nomi, oltre effettivo css spazi dei nomi?

Ho cercato su google questo per un po’, ma sono stato in grado di trovare buone risorse. (Mi fa preoccupato che il mio google-fu è una schifezza (molto probabile) o il css spazio dei nomi spec è inutile (meno probabile))

  • Non ho nemmeno vedere su Quando posso Usare? e non credo che tutti I browser, anche solo parzialmente, la supporta…
  • È alla Raccomandazione di stato, che significa che ci devono essere almeno due indipendenti implementazioni di esso.
  • Barnes: in Realtà, tutti i moderni browser supporta, tra cui IE9+. Di recente ho risposto ad una domanda su CSS spazi dei nomi, che contiene il codice che è possibile utilizzare per verificare che funziona: stackoverflow.com/questions/9490155/… Il motivo principale per cui ho il sospetto che per i CSS spazi dei nomi non compaiono su questo sito è perché non ci sono molti dei casi reali di utilizzo per esso nel Web di oggi l’industria, dal momento che HTML5 è il nuovo fresco cosa, che non fa uso di spazi dei nomi in alcun modo.
  • Beh, xmlns a quanto pare non ha molto senso in html5. @Quentin risposta mi portano per la parte di spec (sezione 3.2.3, a cura di una sua risposta ad includere questo) che spiega che l’attributo è essenzialmente solo per la compatibilità con XHTML parser.
  • oic, il mio male. 😛

 

2 Replies
  1. 24

    Coprono completamente diversi casi di utilizzo.

    CSS spazi dei nomi sono per applicare i CSS per i documenti XML che mescolare elementi diversi spazi dei nomi XML. ad esempio, in modo da poter indirizzare <foo:p> e <bar:p> senza confusione.

    SMACSS comprende tecniche per la scrittura robusta CSS che non interferisca con le altre parti della pagina. ad esempio, in modo che .title nella rubrica HTML non ottiene confuso con .title nell’elenco delle pubblicazioni HTML.


    Ulteriori dettagli dal spec:

    Nota: In HTML, l’attributo xmlns non ha assolutamente alcun effetto. Si tratta fondamentalmente di un talismano. È consentito solo per fare la migrazione da e per XHTML leggermente più facile. Quando analizzato da un parser HTML, l’attributo finisce in nessuno spazio dei nomi, e non la “http://www.w3.org/2000/xmlns/” spazio dei nomi come dichiarazione dello spazio dei nomi degli attributi in XML.

    • non solo l’xml, ma anche html
    • HTML non dispone di spazi dei nomi.
    • HTML non hanno spazi dei nomi. Come l’utilizzo di incorporare svg, e altri casi d’uso.
    • No, HTML non dispone di spazi dei nomi, perché il formato HTML non è XML. Probabilmente stai parlando di XHTML, che è basato su XML.
    • HTML 5 regole per l’incorporamento di SVG non utilizzare gli spazi dei nomi. Un misto di XHTML / SVG documento tratta solo in XML.
    • Ma quando interagiscono con incorporare SVG, devi utilizzare .createElementNS, .setAttributeNS, con esplicito impostazioni dello spazio dei nomi. altrimenti non funzionerà.
    • Grazie per la risposta @Quentin, che mi ha guidato le parti pertinenti della spec che spiega che xmlns è praticamente inutile in html. Ho modificato la tua risposta per includere questo, e l’ha accettata.

  2. 4

    Spazi dei nomi piuttosto brutto della sintassi CSS, perché i “:” spazio dei nomi carattere deve essere preceduto da una barra rovesciata iniziale per distinguere da una pseudo-classe:

    html\:img {
      border: 2px solid black;
    }
    html\:a:visited html\:img {
      border-color: grey;
    }

    Questo è realmente utile solo quando l’incorporamento HTML all’interno di un documento XML. Quando si aggiunge il codice html dello spazio dei nomi, elementi HTML namespace vengono correttamente visualizzati come appaiono in HTML, consentito l’accesso a funzioni che non sono ancora state fornite da CSS.

    <story xmlns:HTML="http://www.w3.org/Profiles/XHTML-transitional">
      ...
      <restaurant>
        <name>Red Apple Inn</name>
        <logo>
          <HTML:A href="javascript:alert('Visit the Red Apple Inn!')">
            <HTML:IMG src="red-apple.gif" height="50" width="200"/>
          </HTML:A>
        </logo>
        ...

    In HTML5 contesto, non riesco a pensare a tutti i casi in cui si avrebbe bisogno di questo. L’unico posto dove ho visto gli spazi dei nomi in CSS, finora, è Webkit CSS predefinito per SVG o MathML, e usano una sintassi diversa : il @namespace in regola.

    Per esempio, questo è il codice da WebKit/webkit/blob/master/Source/WebCore/css/mathml.css :

    @namespace "http://www.w3.org/1998/Math/MathML";
    
    math {
        -webkit-line-box-contain: glyphs replaced;
        text-indent: 0;
        direction: ltr;
    }
    mtext {
        line-height: 1.0;
    }
    
    ...

    Questo è il codice da WebKit/webkit/blob/master/Source/WebCore/css/svg.css :

    @namespace "http://www.w3.org/2000/svg";
    @namespace html "http://www.w3.org/1999/xhtml";
    
    svg:not(:root), symbol, image, marker, pattern, foreignObject {
        overflow: hidden
    }
    
    svg:root {
        width: 100%;
        height: 100%
    }
    
    text, foreignObject {
        display: block
    }
    
    ...

Lascia un commento