49 votes

Expressions CSS

J'ai lu quelque part que les Expressions CSS ont été déprécié et ne doit pas être utilisé. Je n'avais jamais entendu parler d'eux et a décidé de prendre un coup d'oeil. J'ai trouvé un exemple de code qui a gardé un élément flottant au même endroit sur l'écran, même si vous défiler.

<html>
<style>
#fixed {
position:absolute;
left:10px;
top:expression(body.scrollTop + 50 + "px");
background:white;
border:1px solid red;}
</style>
<body>
<p id="fixed">Here is some text, which is fixed.</p>
<p>
[many times: "stuff <br/>"]
</p>
</body>
</html>

Cela m'a rappelé les sites qui avaient la "part des bars et des trucs au bas de leurs pages.

Alors...

  1. Est-ce la façon dont ils le font?
  2. Est-il correct d'utiliser des Expressions dans cette situation?
  3. Si non, que dois-je utiliser?
  4. Existe-il d'autres intéressantes et des choses utiles, des expressions qui peuvent aider?

62voto

Pekka 웃 Points 249607

Expressions CSS utilisé pour le travail dans les vieux IE, mais ils ont été complètement abandonnée dans IE8:

Propriétés dynamiques (aussi appelé "expressions CSS") ne sont plus pris en charge dans Internet Explorer 8 et plus tard, dans IE8 mode standard et supérieure. Cette décision a été prise pour le respect des normes, les performances du navigateur, et des raisons de sécurité, comme détaillé dans le IE l'entrée de blog intitulé de Fin d'Expressions. Propriétés dynamiques sont toujours disponibles dans Internet Explorer 8 soit en mode IE7 ou IE5 mode.

Il est donc sans doute pas vraiment la peine d'apprendre plus.

Si non, que dois-je utiliser?

Selon le cas d'utilisation, JavaScript ou des requêtes de média.

Comme @Encore un Autre Geek notes, votre exemple ci-dessus peut être mis en œuvre à l'aide de position: fixed. IE6 ne supporte pas que le CSS expression a probablement été créé pour travailler autour de cela.

15voto

Yet Another Geek Points 2765

Pour conserver un élément au même endroit lors du défilement, vous devez utiliser la propriété position: fixed puis utiliser les propriétés top, bottom, left et right pour indiquer où il doit être positionné.

EDIT: Voici comment cela devrait être pour votre exemple:

 <html>
<style>
#fixed {
position:fixed;
left:10px;
top: 50px;
background:white;
border:1px solid red;}
</style>
<body>
<p id="fixed">Here is some text, which is fixed.</p>
<p>
[many times: "stuff <br/>"]
</p>
</body>
</html>
 

11voto

Thomas Shields Points 5820
  1. Probablement pas. C'est plus facile à utiliser, position:fixed ou Javascript
  2. Non, sauf si vous êtes seulement à soutenir IE < 8. IE8+ et les autres navigateurs ne le supportent pas*; il n'est pas conforme aux normes et ne passera pas la validation
  3. Utiliser position:fixed; bottom:x; top:y; left: a; right:b; , où x, y, a et b sont des décalages. Ou, l'utilisation de Javascript
  4. Encore une fois, non, sauf si vous êtes en utilisant de vieilles versions d'IE seulement. Vraiment, il suffit de le vider. les mêmes effets peuvent être obtenus avec JS et normal CSS.

*Officiellement, de toute façon. Apparemment, il a travaillé sur Chrome pour @DalexL

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X