Сайты - по стандартам, но не стандартные сайты!
Страниц: 1
добрый день
создаю css класс описывающий стиль объектов "input":
input {
color: red;
border: 2px solid gray;
}
все объекты input (text,password,file,checkbox,radio и т.д.) принимают этот стиль...но мне надо чтоб все объекты checkbox и radio принимали другой стиль + не прописывать в каждом checkbox или radio свой класс... =\
это реально? если да, то как?
Нет на форуме
Пока доля IE6 все еще велика, конструкции типа input[type="radio"] {} в полном объеме применить не получится. Так что лично я использую class="radio" для нужного элемента.
Нет на форуме
Примерно так:
input { expression(runtimeStyle.border = (this.type == 'radio' || this.type == 'checkbox') ? 'none' : '2px solid gray'); }
Отредактированно h4 (13.08.2012 23:09)
Нет на форуме
http://xpoint.ru/forums/internet/html_c … 1935.xhtml
Нет на форуме
h4 написал:
Примерно так:
Код:
input { expression(runtimeStyle.boreder = (this.type == 'radio' || this.type == 'checkbox') ? 'none' : '2px solid gray'); }
у такого решения два недостатка:
— expression будет выполняться при любом событии на странице
— если нужно изменить несколько свойств код будет громоздким
я обычно делаю так:
input[type="text"] { color: ...; border: ...; padding: ...; font-size: ...; ... } .inputText { color: ...; border: ...; padding: ...; font-size: ...; ... } * html input { z-index: expression( runtimeStyle.zIndex = 1, type == "text" ? (className = "inputText") : 0 ); }
т.е. expression выполнится один раз и можно задавать несколько свойств без усложнения expression
Нет на форуме
Не лучше ли по событию «DOMContentLoaded» добавить соответствующие классы для элементов ввода или воспользоваться готовым решением, чем городить эти «expression»?
Отредактированно Octane (13.08.2012 03:06)
Нет на форуме
Octane написал:
чем городить эти «expression»?
expression — те же скрипты, но только для ие6, вы же предлагаете скрипты городить во всех браузерах, когда в css предусморен механизм адресации через атрибуты
и уж, конечно, для данной задачи, подключение скриптов «ie7» под 40 кило будет совсем лишним
Нет на форуме
alemiks написал:
вы же предлагаете скрипты городить во всех браузерах
Почему же во всех? «Conditional Comments» никто не отменял.
Скрипт загрузится только в IE ниже 7-й версии.
alemiks написал:
и уж, конечно, для данной задачи, подключение скриптов «ie7» под 40 кило будет совсем лишним
Подключение скрипта даст возможность использовать селекторы атрибутов не только для «инпутов», но и для всех остальных элементов, причем возможно будет выполнять регулярные выражения для поиска значений атрибута. Да и не только селекторы атрибутов исправляет этот скрипт, но и «child-selector» и много другое.
Если критична скорость загрузки и 30,4кб для IE никак нельзя выделить, то можно самому написать простенький скрипт в 4 строчки:
/*@cc_on @if(@_jscript_version
И выполнить его по событию «DOMContentLoaded». А если в проекте уже используется фреймворк, например, «jQuery», то задача еще более упрощается:
/*@cc_on @if(@_jscript_version == 5.6) $(function() { $('input[@type="text"]').addClass('text'); $('input[@type="submit"]').addClass('submit'); }); @end @*/
Специально использую «Conditional Compilation» для определения версии браузера, потому что встроенные механизм «jQuery» определения по строке «navigator.userAgent» часто дает осечки.
Скрипт в этом случае не «засоряет» CSS «expression'ами», выполнится всего 1 раз в отличие от «expression», который выполняется каждый раз при событии окна, и не «роняет», как это часто бывает с «expression», IE5. Я считаю «expression» нужно использовать там, где это действительно необходимо, например для эмуляции «min-width», и обязательно выносить в отдельный файл используя «Conditional Comments».
Отредактированно Octane (15.08.2012 14:28)
Нет на форуме
Octane написал:
выполнится всего 1 раз в отличие от «expression», который выполняется каждый раз при событии окна
если вы заметили, предложенный expression выполняется один раз
Нет на форуме
Да, заметил, правда не понял почему он будет выполняться только 1 раз :-[ Если не трудно, объясните пожалуйста.
Нет на форуме
Octane написал:
Да, заметил, правда не понял почему он будет выполняться только 1 раз :-[ Если не трудно, объясните пожалуйста.
один раз для каждого input'а, конечно
потому, что expression для z-index затирается при его выполнении
Нет на форуме
Oktane, прочитайте, пожалуйста, системообразующую стратью. Последний абзац, там всё рассказано так, что любой пересказ будет бледной калькой.
Нет на форуме
Спасибо, теперь знаю, что можно выполнить «expression» единожды, но это не меняет отношение к этой технологии, всеже смешивать CSS и JavaScript нужно как можно меньше.
Нет на форуме
Страниц: 1