Вставить выражение JQuery в файл CSS? - PullRequest
2 голосов
/ 17 ноября 2009

Поскольку вопрос подразумевает, могу ли я добавить скрипт JQuery в файл css в качестве выражения? Или что-то вроде:

.parent{
    background-color: pink;
    position:relative;
    width: 100%;
}

.child{
    position: absolute;
    background: transparent url('./background.gif') no-repeat top right;
    /*height: 100%;*/
    height:  expression($(this).parent.height()+'px');
    width: 12px;

}

Вся идея этого скрипта состоит в том, чтобы решить 100% высоту div в IE6.

Ответы [ 3 ]

3 голосов
/ 17 ноября 2009

Вы не можете сделать это таким образом.

Вы можете выполнить какой-то javascript при загрузке страницы ... (Функция, которая ищет элементы с высотой 100% и заменяет их на высоту родителя.)

0 голосов
/ 17 ноября 2009
#element {
    height: expression((function(element) {
              var x = window.setInterval (function () {
                    if (document.readyState.search (/loaded|complete/) > -1) {
                      window.clearTimeout (x);
                      $(element).height($(element).parent.height())
                    }
                  }, 50);
            })(this));
}

Позвольте мне объяснить: во-первых, выражения плохие . Перейдите по ссылке Длаблина, чтобы прочитать почему. Вы должны рассмотреть другие методы. При необходимости приведенный выше фрагмент работает следующим образом:

  1. Выражение сначала оценивается, как только читается CSS. Это означает, что DOM еще не готов, а jQuery, вероятно, еще не загружен.

  2. Установить в качестве выражения анонимную функцию, которая выполняется мгновенно.

  3. Эта функция доставляет текущий элемент как element в содержащий код.

  4. Мы устанавливаем интервал: проверять каждые 50 мс, готов ли DOM. Если это так, очистите интервал и запустите jQuery.

Примечание: Если вы сделаете это с лотами элементов, это действительно замедлит вашу страницу. Чтобы подчеркнуть это еще раз: не делайте этого дома, дети!

0 голосов
/ 17 ноября 2009

Не в любом браузере, который я пробовал; Есть CSS-выражения , которые могут работать в IE 6, но они не совсем быстрые (так говорится в ссылке). Я думаю, что проблема в том, когда CSS загружается против, когда инициализируется селектор jQuery. Поэтому вам придется написать код в DOM ready, чтобы выбрать все элементы, для которых требуется установить их высоту, а затем установить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...