А еще можно использовать свойства currentStyle
(доступное для чтения) и runtimeStyle
(доступное для записи), чтобы переопределять само стилевое свойство при его объявлении (звучит несколько сложно, не так ли?). На самом деле все чрезвычайно просто. Применительно к нашему примеру мы должны будем написать:
#myDiv { border: 10px solid Red; width: expression(runtimeStyle.width = (ieBox ? >'100px' : '80px')); }
Например, можно дописать исправление всплывания alt
вместо title
для картинок:
img { behavior: expression( (alt&&!title) ? title = '' : '', runtimeStyle.behavior = 'none' ) }
Или прозрачность через фильтр:
.button1 { opacity: .1 } .button2 { opacity: .2 } .button3 { opacity: .3 } .button4 { opacity: .4 } .button1, .button2, .button3, .button4 { filter: expression( runtimeStyle.filter = 'alpha(opacity='+currentStyle.opacity*100+')' ) }
Таким образом, наше выражение быстро применяется при загрузке страницы и последующем создании новых узлов скриптом. Такой способ оптимизации подходит только для «статичных» элементов, которым не нужно менять свое отображение динамически. Изменение родительского класса, равнение по высоте окна и эмуляция position: static
— все это проблемные участки оптимизации. Лучше их не оптимизировать, а использовать пореже.
Еще одним проблемным местом, на мой взгляд, является общее выполнение скриптов при onresize
. Ну и еще серьезный совет: используйте CSS-выражения по минимуму. Лучше всего будет, если они вообще не встретятся у нас сайте.