Это несколько раздражает. Похоже, что webkit (через chrome 13 canary) имеет право стилизовать различные типы ввода и сильно противоречит дизайну.
В частности, они вызывают у меня головную боль:
- свечение выбранного элемента (через контур)
- заполнитель = стиль текста
- уродливое свечение вокруг сфокусированного текстового поля и полей ввода
Я использую шаблоны и modernizr.
Простой input[type=search]
с заполнителем переопределяет стиль текста.
Я знаю, что вы можете нацелить его через
input::-webkit-input-placeholder
Тем не менее, похоже, что это не может стилизовать такие вещи, как text-shadow
, что немного дерьмо. Кто-нибудь знает, вероятно, это ошибка, которая будет исправлена, или мне нужно вернуться к решению-заполнителю JavaScript?
На входе поиска появляется белый фон и удаляются закругленные углы, определенные в базовом классе CSS. Я нашел код сброса:
input[type=search]::-webkit-search-decoration,
input[type=search]::-webkit-search-cancel-button,
input[type=search]::-webkit-search-results-button,
input[type=search]::-webkit-search-results-decoration {
display: none;
}
input[type=search] {
/* the webkit overrides need to stay at the top */
-webkit-appearance: textfield;
-webkit-box-sizing: content-box;
/* your styles here */
}
и вроде помогает.
Свечение вокруг элементов формы я исправляю установкой outline: none
.
Я предполагаю, что мне действительно нужен сброс CSS, который удаляет любые предопределенные стили в user agent stylesheet
(согласно веб-инспектору), которые на него влияют. Есть ли доступный сброс, который может сделать это, поэтому, несмотря на то, что тип документа является HTML5, элементы отображаются так же просто, как и до HTML5, и следуют неявным правилам, установленным для них в базовом CSS?
Я ненавижу это говорить, но, несмотря на все проблемы с перегрузкой памяти и медлительность плагинов, FireFox 4 на самом деле все делает идеально. Webkit не должен пытаться стилизовать вещи за вас, просто предоставьте API, который позволит вам сделать это, если вы захотите...
<input type=search>
? Оформление — единственное, что отличает его от обычного поляtype=text
. Вы также можете просто использовать<input type=text>
, если вам не нужно украшение. - person Spudley   schedule 18.06.2011