1 заметка с тегом

expression РСС

6 сентября 2009, 10:55

Одноразовый и Кэшируемый expression в ИЕ (lte 7)

Все знают о возможностях ИЕ, по части вставки JavaScript кода в CSS, так называемых expression. Казалось бы замечательно, но на самом деле нет. Если мы просто повесим експрешн на какой-нить селектор, он будет вычисляться постоянно, заметно снижая производительность не столь быстрых браузеров.

Для этого можно использовать одноразовый и кэшируемый експрешны.
/* Одноразовый expression
   * - хак для gte IE7 */
* html .onecetime {
    width: expression(
        runtimeStyle.width = "auto",
        appendChild(createElement("sometag")));
}
/* элемент создаётся через JS, 
поэтому expression срабатывает только раз */
* html .onecetime  sometag{
    background: transparent;
}
/* Кэшируемый expression */
* html .cached {
    /* t = this, 
       Делаем высоту 100% */
    h: expression( function (t) {
        var h = t.parentNode.offsetHeight;
        if (t.h != h) {
            t.h = h;
            t.style.height = h + "px";
        }
    } (this) );
}
expression