Выражения CSS

Я где-то читал, что CSS-выражения были устаревшими и даже не должны использоваться. Я никогда не слышал о них и решил посмотреть. Я нашел пример кода, который содержал плавающий элемент в том же месте на экране, даже если вы прокручивали.

<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>

Это напомнило мне сайты, на которых были "общие бары" и прочее в нижней части их страниц.

Итак...

  • Это так, как они это делают?
  • Можно ли использовать выражения в этой ситуации?
  • Если нет, что я должен использовать?
  • Есть ли другие интересные/полезные вещи, с которыми могут помочь выражения?

Ответ 1

CSS-выражения, используемые для работы в более старых IE, но они были полностью оставлены в IE8:

Динамические свойства (также называемые выражениями CSS) больше не поддерживаются в Internet Explorer 8 и более поздних версиях, в стандарте IE8 и выше. Это решение было принято для соблюдения стандартов, производительности браузера и соображений безопасности, как описано в блоге IE в блоге Ending Expressions. Динамические свойства по-прежнему доступны в Internet Explorer 8 в режиме IE7 или в режиме IE5.

Так что, возможно, не стоит больше их изучать.

Если нет, что я должен использовать?

В зависимости от варианта использования JavaScript или медиа-запросы.

Как отмечает @Yet Another Geek, приведенный выше пример можно реализовать с помощью position: fixed. IE6 не поддерживает это - вероятно, было создано выражение CSS, чтобы обойти это.

Ответ 2

Чтобы сохранить элемент в том же месте во время прокрутки, вы должны использовать свойство position: fixed, а затем использовать верхний, нижний, левый и правый свойства, чтобы определить, где он должен быть расположен.

EDIT: вот как это должно быть для вашего примера:

<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>

Ответ 3

  • Наверное, нет. Легче использовать position:fixed или Javascript
  • Нет, если вы только поддерживаете IE < 8. IE8 + и другие браузеры не поддерживают его *; это не соответствует стандартам и не будет проходить проверку.
  • Используйте position:fixed; bottom:x; top:y; left: a; right:b;, где x, y, a и b являются смещениями. Или используйте Javascript
  • Опять же, если вы не используете только старые версии IE. Действительно, просто свалите его. те же эффекты могут быть достигнуты с помощью JS и обычного CSS.

* Официально, в любом случае. По-видимому, он работал на Chrome для @DalexL