28220 sujets

CSS et mise en forme, CSS3

Bien le bonsoir ^^)

J'utilise la propriété clip dans un document, comme ceci:

clip: rect(0, 100%, 100%, 0);


Malheuresement, chez le validateur, ca ne passe pas.

Il me dit :

a écrit :
Propriété érronée : clip Définition de forme non valide: rect(<haut>,<droit>,<bas>,<gauche>) : rect(100%,100%,0)


J'ai fait des test, et cette erreur viendrait des valeurs en pourcentage...

Peut-on passer outre, y-a-t-il un moyen de faire ce que je veux faire de manière valide, et pourquoi interdit-on les pourcentages ?

Merci à tous !
Modifié par Sylvain (26 Jul 2005 - 13:48)
a écrit :

Propriété érronée : clip Définition de forme non valide: rect(<haut>,<droit>,<bas>,<gauche>) : rect(100%,100%,0)


Il manque une valeur dans le rect(...)

Tu as dû tester la validation avec l'omission de la première valeur.
Pas d'incompatibilité avec les pourcentages à priori.
Ahh oui en effet, le validateur mange une valeur à l'affichage du message Smiley ohwell

Et si tu utilises des valeurs en pixel, ça valide ?
Sylvain a écrit :
oui, mais ca ne fait plus ce que je voulais faire ^^) Smiley langue


Oui je me doute Smiley smile

En effet, quand je regarde la spec :
Propriété clip :
http://www.w3.org/TR/2005/WD-CSS21-20050613/visufx.html#clipping
La spec css2 a écrit :

'clip'
Value: <shape> | auto | inherit
Initial: auto
Applies to: absolutely positioned elements
Inherited: no
Percentages: N/A
Media: visual
Computed value: For rectangle values, a rectangle consisting of four computed lengths; otherwise, as specified

N/A => not allowed j'imagine.
Tiens, je vais m'auto-citer :

Blog & Blues a écrit :
La propriété clip permet de rogner la zone d'affichage d'un élément HTML. Apparemment peu utilisée et en tous cas peu documentée, cette propriété réserve quelques surprises pour qui se contenterait d'en lire la description dans la spécification CSS2 : celle-ci fait en effet l'objet d'importantes corrections dans la Candidate W3C Recommendation CSS 2.1 (en).

...

top, right, bottom et left peuvent prendre la valeur auto, ce qui autorise les syntaxes du type clip: rect(5px, auto, auto, 5px) pour ne rogner que les bords supérieurs et gauche. Toutes les unités de longueur admises en CSS sont théoriquement admises (em, ex, px, in, cm, mm, pt et pc), ainsi que les valeurs négatives. Les pourcentages ne sont pas supportés.

...

Enfin, CSS2 était ambigüe sur l'utilisation des virgules entre les valeurs de clip, puisque les exemples donnés en comportaient alors que le texte les omettait. IE5.x Win, Opera 7.x et Mozilla 1.6 supportent les deux syntaxes, mais Internet Explorer 6.0 Win a un comportement problématique. En effet :
- En mode Quirks (présence d'un prologue XML par exemple), les deux syntaxes sont supportées ;
- Mais seule p { clip: rect(top right bottom left); } est supporté en mode Strict (DTD (X)HTML Stricte sans prologue, par exemple).

Pour CSS2.1, l'absence de virgules est déconseillée, mais reste admise....

En mode Strict, pour permettre le support de clip dans IE6.0 Win , tout en restant compatible avec des navigateurs appliquant strictement CSS2.1, il serait donc prudent d'écrire :

p {
position: absolute;
clip: rect(5px 40px 45px 5px);
clip: rect(5px, 40px, 45px, 5px);
}

Internet Explorer ne lira que la première règle clip, tandis que les navigateurs plus strictes liront la seconde.



Bref, voir http://blog-and-blues.org/weblog/2004/08/14/272-syntaxe-de-la-propriete-clip pour les détails Smiley cligne
Modifié par Laurent Denis (26 Jul 2005 - 06:27)
Merci de ta réponse !

Cette interdiction est dommage, elle permet de faire des choses, mais tant pis, j'ai contourné le problème ^^

Je met résolu, car çà répond à ma question de départ !