Форум hotibo.ru

Сайты - по стандартам, но не стандартные сайты!






#1 10.08.2012 20:44

jeno
Разбирающийся
Зарегистрирован: 13.09.2010
Сообщений: 126
Вебсайт

Вопрос по сс (выбор только input > checkbox)

добрый день

создаю css класс описывающий стиль объектов "input":

input {
    color: red;
    border: 2px solid gray;
}

все объекты input (text,password,file,checkbox,radio и т.д.) принимают этот стиль...но мне надо чтоб все объекты checkbox и radio принимали другой стиль + не прописывать в каждом checkbox или radio свой класс... =\

это реально? если да, то как?


http://reliz.in.ua

Нет на форуме

 

#2 10.08.2012 21:17

Azadi
Новичок
Зарегистрирован: 10.05.2012
Сообщений: 2

Re: Вопрос по сс (выбор только input > checkbox)

Пока доля IE6 все еще велика, конструкции типа input[type="radio"] {} в полном объеме применить не получится. Так что лично я использую class="radio" для нужного элемента.

Нет на форуме

 

#3 10.08.2012 21:26

h4
Новичок
Зарегистрирован: 29.01.2012
Сообщений: 37

Re: Вопрос по сс (выбор только input > checkbox)

Примерно так:

Код:

input {
   expression(runtimeStyle.border = (this.type == 'radio' || this.type == 'checkbox') ? 'none' : '2px solid gray');
   }

Отредактированно h4 (13.08.2012 23:09)

Нет на форуме

 

#4 10.08.2012 22:00

Zigzag
Новичок
Откуда: Minsk/Belarus
Зарегистрирован: 27.05.2010
Сообщений: 30
Вебсайт

Re: Вопрос по сс (выбор только input > checkbox)

http://xpoint.ru/forums/internet/html_c … 1935.xhtml

Нет на форуме

 

#5 13.08.2012 01:09

alemiks
Опытный
Откуда: Voronezh
Зарегистрирован: 09.04.2010
Сообщений: 256
Вебсайт

Re: Вопрос по сс (выбор только input > checkbox)

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

Нет на форуме

 

#6 13.08.2012 03:02

Octane
Опытный
Откуда: Волгоград
Зарегистрирован: 05.03.2012
Сообщений: 220
Вебсайт

Re: Вопрос по сс (выбор только input > checkbox)

Не лучше ли по событию «DOMContentLoaded» добавить соответствующие классы для элементов ввода или воспользоваться готовым решением, чем городить эти «expression»?

Отредактированно Octane (13.08.2012 03:06)


[url=http://code.google.com/p/js-core/]javascript framework[/url]

Нет на форуме

 

#7 15.08.2012 07:32

alemiks
Опытный
Откуда: Voronezh
Зарегистрирован: 09.04.2010
Сообщений: 256
Вебсайт

Re: Вопрос по сс (выбор только input > checkbox)

Octane написал:

чем городить эти «expression»?

expression — те же скрипты, но только для ие6, вы же предлагаете скрипты городить во всех браузерах, когда в css предусморен механизм адресации через атрибуты
и уж, конечно, для данной задачи, подключение скриптов «ie7» под 40 кило будет совсем лишним

Нет на форуме

 

#8 15.08.2012 14:14

Octane
Опытный
Откуда: Волгоград
Зарегистрирован: 05.03.2012
Сообщений: 220
Вебсайт

Re: Вопрос по сс (выбор только input > checkbox)

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)


[url=http://code.google.com/p/js-core/]javascript framework[/url]

Нет на форуме

 

#9 15.08.2012 19:27

alemiks
Опытный
Откуда: Voronezh
Зарегистрирован: 09.04.2010
Сообщений: 256
Вебсайт

Re: Вопрос по сс (выбор только input > checkbox)

Octane написал:

выполнится всего 1 раз в отличие от «expression», который выполняется каждый раз при событии окна

если вы заметили, предложенный expression выполняется один раз

Нет на форуме

 

#10 15.08.2012 19:38

Octane
Опытный
Откуда: Волгоград
Зарегистрирован: 05.03.2012
Сообщений: 220
Вебсайт

Re: Вопрос по сс (выбор только input > checkbox)

Да, заметил, правда не понял почему он будет выполняться только 1 раз :-[ Если не трудно, объясните пожалуйста.


[url=http://code.google.com/p/js-core/]javascript framework[/url]

Нет на форуме

 

#11 15.08.2012 20:18

alemiks
Опытный
Откуда: Voronezh
Зарегистрирован: 09.04.2010
Сообщений: 256
Вебсайт

Re: Вопрос по сс (выбор только input > checkbox)

Octane написал:

Да, заметил, правда не понял почему он будет выполняться только 1 раз :-[ Если не трудно, объясните пожалуйста.

один раз для каждого input'а, конечно
потому, что expression для z-index затирается при его выполнении

Нет на форуме

 

#12 17.08.2012 01:04

h4
Новичок
Зарегистрирован: 29.01.2012
Сообщений: 37

Re: Вопрос по сс (выбор только input > checkbox)

Oktane, прочитайте, пожалуйста, системообразующую стратью. Последний абзац, там всё рассказано так, что любой пересказ будет бледной калькой.

Нет на форуме

 

#13 17.08.2012 16:38

Octane
Опытный
Откуда: Волгоград
Зарегистрирован: 05.03.2012
Сообщений: 220
Вебсайт

Re: Вопрос по сс (выбор только input > checkbox)

Спасибо, теперь знаю, что можно выполнить «expression» единожды, но это не меняет отношение к этой технологии, всеже смешивать CSS и JavaScript нужно как можно меньше.


[url=http://code.google.com/p/js-core/]javascript framework[/url]

Нет на форуме

 

Board footer