Etrangete dans la modification d'une propriété

Le
WebShaker
Salut

J'ai un source ou je crée un object que je place en absolue
genre
objet.style.left = 100;

et ca marche tres bien.
maintenant je copie ce code.
je le met dans un autre source.
et là ca ne marche plus.

par contre ce qui marche c'est
objet.style.left = '100px';

Quelqu'un sait il pourquoi?
merci.

Etienne
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Olivier Miakinen
Le #21682691
Le 05/05/2010 00:02, WebShaker a écrit :

J'ai un source ou je crée un object que je place en absolue...
genre
objet.style.left = 100;

et ca marche tres bien.



Ça ne devrait pas, puisque tu ne précises pas d'unité (em, ex,
%, etc.). Avec quel navigateur est-ce que ça suppose que tu as voulu
écrire '100px' ?

maintenant je copie ce code.
je le met dans un autre source.
et là ca ne marche plus.



Normal.

par contre ce qui marche c'est
objet.style.left = '100px';



Normal aussi.

Quelqu'un sait il pourquoi?



http://www.w3schools.com/jsref/prop_style_left.asp

http://www.w3.org/TR/CSS2/visuren.html#propdef-left
http://www.w3.org/TR/CSS2/syndata.html#value-def-length

merci.



De rien.

--
Olivier Miakinen
Laurent vilday
Le #21683241
Olivier Miakinen :
WebShaker :

J'ai un source ou je crée un object que je place en absolue...
genre
objet.style.left = 100;

et ca marche tres bien.



Ça ne devrait pas, puisque tu ne précises pas d'unité (em, ex,
%, etc.). Avec quel navigateur est-ce que ça suppose que tu as voulu
écrire '100px' ?



Ce n'est pas trop une question de navigateur utilisé mais plutôt de
doctype. Puisque le doctype influence le mode de rendu, strict ou quirks.

En mode de rendu quirks, l'unité est facultative, le pixel étant l'unité
par défaut. '100' et '100px' c'est la même chose.

En mode de rendu strict, l'unité est requise, il n'y a pas d'unité par
défaut, et donc ce sera '100px'

--
laurent
Olivier Miakinen
Le #21684421
Bonjour,

Le 05/05/2010 04:14, Laurent vilday m'a répondu :

Ça ne devrait pas, puisque tu ne précises pas d'unité (em, ex,
%, etc.). Avec quel navigateur est-ce que ça suppose que tu as voulu
écrire '100px' ?



Ce n'est pas trop une question de navigateur utilisé mais plutôt de
doctype. Puisque le doctype influence le mode de rendu, strict ou quirks.

En mode de rendu quirks, l'unité est facultative, le pixel étant l'unité
par défaut. '100' et '100px' c'est la même chose.

En mode de rendu strict, l'unité est requise, il n'y a pas d'unité par
défaut, et donc ce sera '100px'



J'ignorais tout cela. Tu aurais un pointeur vers une doc de référence ?

Cordialement,
--
Olivier Miakinen
SAM
Le #21685281
Le 5/5/10 10:53 AM, Olivier Miakinen a écrit :
Bonjour,

Le 05/05/2010 04:14, Laurent vilday m'a répondu :

En mode de rendu quirks, l'unité est facultative, le pixel étant l'unité
par défaut. '100' et '100px' c'est la même chose.

En mode de rendu strict, l'unité est requise, il n'y a pas d'unité par
défaut, et donc ce sera '100px'



J'ignorais tout cela. Tu aurais un pointeur vers une doc de référence ?



Une référence pour la soupe de balises ?
C'est "standardisé" ça aussi ?



Question syntaxe, à une époque, mon IE acceptait en css

color = blue;

et même :
color: blue;

sans doute (et même certainement) IE était en quirksmode,
sans doctype.

re-essayé avec IE6 ... c'est tout bon, les erreurs fonctionnent !

Non, avec Fx les erreurs restent des erreurs.

--
sm
Laurent vilday
Le #21686721
Olivier Miakinen :
Laurent vilday :
En mode de rendu quirks, l'unité est facultative, le pixel étant l'unité
par défaut. '100' et '100px' c'est la même chose.

En mode de rendu strict, l'unité est requise, il n'y a pas d'unité par
défaut, et donc ce sera '100px'



J'ignorais tout cela. Tu aurais un pointeur vers une doc de référence ?



Humm une doc de "référence" probablement pas, le mode de rendu quirks
n'est pas vraiment standardisé et chaque navigateur y va un peu comme il
le sent.

Ce que je sais (ou crois savoir) du mode quirks provient surtout de mon
expérience. Et l'ayant abandonné depuis bien longtemps il est probable
que tous les navigateurs en face un peu à leur tête maintenant.

Sans oublier de préciser de ne PAS utiliser le mode de rendu quirks,
voici quelques liens pour se convaincre que le mode de rendu "quirks"
(et le mode "Almost standard") est à proscrire, il ne présente que des
inconvénients :

* The CSS parser interprets unitless numbers as px (except for font-size
because that was what Netscape Navigator 4 did, and except for
line-height and any other properties where they have distinct meaning).


* CSS size and position properties specified without a unit

Unit-less numbers in CSS (e.g. "width: 300") are interpreted as pixels
in Quirks Mode and ignored in Standards Mode.

* CSS size and position properties with a space between the number and
the unit

Spaces between the number and unit (e.g. "width: 45 em") is not valid
CSS. Opera allows this in Quirks Mode and ignores properties with
invalid lengths in Standards Mode.

* Value Problems

This section belongs entirely to Internet Explorer. In IE4.x/Win and
IE5.x/Win, you were able to write fairly sloppy values. For example:

h1 {color: FF0000;} /* missing the octothorpe! */
h2 {font-size: 18 px;} /* one too many spaces */
table {width: 500;} /* where's the unit? */

In the first rule, the color value is missing the octothorpe (#) that is
required in front of any hexadecimal color value. The second rule has an
invalid space between the number 18 and the unit px, and this entirely
changes the meaning of the value. For the third rule, there is no unit
at all. Should the table be 500 furlongs wide? 500 stadia? 500 angstroms?

Impossible de retrouver la doc de microsoft sur le sujet. Je me rappelle
l'avoir déjà vue il y a bien longtemps, mais elle reste complètement
introuvable. Si qqun possède le pointeur vers la page de microsoft ça
m'intéresse beaucoup, merci.

--
laurent
SAM
Le #21688601
Le 5/5/10 4:49 PM, Laurent vilday a écrit :

Impossible de retrouver la doc de microsoft sur le sujet.



Quand on interroge MSDN il peut nous sortir 1800 pages .... !

En voici une :
où on nous dit :
*Missing Unit Type Identifiers Treated as Pixel Values*
« According to CSS, Level 1 (CSS1), length values must specify a unit
type identifier. Earlier versions of Internet Explorer permit you to use
certain invalid declarations and treat numbers without any unit type
identifier as pixel (px) units. When you use the !DOCTYPE declaration to
specify standards-compliant mode, Internet Explorer 6 and later ignore
style sheet declarations that do not comply with CSS 1. »

Voir aussi sur cette même page : "Stricter Style Sheet Parsing"
et la suite

Les vieux trucs n'intéressent plus bp M$

Pas ni rien trouvé à propos de : color= blue;
(dans le genre je fais qu'à mon idée et à l'à peu près)


Tien ?
Ils disent "css filter" au lieu de "hack" ;-)
Manquent pas d'air !


Si qqun possède le pointeur vers la page de microsoft ça
m'intéresse beaucoup, merci.



Ben voilà qui doit être fait ?

--
sm
Olivier Miakinen
Le #21690331
Le 05/05/2010 16:49, Laurent vilday m'a répondu :

En mode de rendu quirks, l'unité est facultative, le pixel étant l'unité
par défaut. '100' et '100px' c'est la même chose.

En mode de rendu strict, l'unité est requise, il n'y a pas d'unité par
défaut, et donc ce sera '100px'



J'ignorais tout cela. Tu aurais un pointeur vers une doc de référence ?



Humm une doc de "référence" probablement pas, le mode de rendu quirks
n'est pas vraiment standardisé et chaque navigateur y va un peu comme il
le sent.



D'accord. C'est bien ce que j'imaginais à priori, mais j'ai mal
interprété ton paragraphe (cité ci-dessus) à propos du mode de rendu
quirks, comme s'il y avait une définition officielle de ce mode de
rendu.

[...]

Sans oublier de préciser de ne PAS utiliser le mode de rendu quirks



Merci, je suis pleinement rassuré.

[...]

This section belongs entirely to Internet Explorer. In IE4.x/Win and
IE5.x/Win, you were able to write fairly sloppy values. For example:

h1 {color: FF0000;} /* missing the octothorpe! */
h2 {font-size: 18 px;} /* one too many spaces */
table {width: 500;} /* where's the unit? */



;-)

Et merci à Stéphane (SAM) aussi.

Cordialement,
--
Olivier Miakinen
WebShaker
Le #21710011
Le 05/05/2010 00:12, Olivier Miakinen a écrit :
Ça ne devrait pas, puisque tu ne précises pas d'unité (em, ex,
%, etc.). Avec quel navigateur est-ce que ça suppose que tu as voulu
écrire '100px' ?



Chrome.
J'avais spécifié aucun doctype.

Bon ca ne me dérange pas de spécifier 'px' ce que je fais maintenant.
c'est juste que j'ai cherché pdt 2 heures le problème :(

Etienne
Pierre Goiffon
Le #22100991
On 05/05/2010 13:24, SAM wrote:
Question syntaxe, à une époque, mon IE acceptait en css

color = blue;

et même :
color: blue;

sans doute (et même certainement) IE était en quirksmode,
sans doctype.



Blue est bel et bien défini dans la recommandation, comme quelques
autres couleurs (mais certaines ne sont pas reconnues par IE) :
http://www.w3.org/TR/CSS21/syndata.html#value-def-color
SAM
Le #22101631
Le 5/11/10 2:14 PM, Pierre Goiffon a écrit :
On 05/05/2010 13:24, SAM wrote:
Question syntaxe, à une époque, mon IE acceptait en css

color = blue;

et même :
color: blue;

sans doute (et même certainement) IE était en quirksmode,
sans doctype.



Blue est bel ...



c'était le signe *égal* qu'il fallait focuser ;-)

(non admis en css sauf dans les bricolages hors standard tel que filter
par exemple)

--
sm
Publicité
Poster une réponse
Anonyme