По какой-то причине большинство современных браузеров перестанут применять свой стиль границы ввода по умолчанию к текстовым полям, если вы дадите им фоновое изображение. Вместо этого вы получаете этот уродливый стиль вставки. Из того, что я могу сказать, нет никакого способа CSS применить стиль браузера по умолчанию.
В IE 8 такой проблемы нет. Chrome 2 и Firefox 3.5 работают, и я предполагаю, что другие браузеры тоже. Из того, что я читал в Интернете, у IE 7 такая же проблема, но в этом посте не было решения.
Вот пример:
<html>
<head>
<style>
.pictureInput {
background-image: url(http://storage.conduit.com/images/searchengines/search_icon.gif);
background-position: 0 1px;
background-repeat: no-repeat;
}
</style>
<body>
<input type="text" class="pictureInput" />
<br />
<br />
<input type="text">
</body>
</html>
В Chrome 2 это выглядит так: http://www.screencast.com/users/jadeonly/folders/Snagit/media/d4ee9819-c92a-4bc2-b84e-e3a4ed6843b6
А в Firefox 3.5: http://www.screencast.com/users/jadeonly/folders/Snagit/media/d70dd690-9273-45fb-9893-14b38202ddcc
Обновление: JS-решение. Я все еще надеюсь найти чистое решение с CSS-на-вводе, но сейчас я буду использовать обходной путь. Обратите внимание, что это вставлено прямо из моего приложения, поэтому это не хороший, самостоятельный пример, как указано выше. Я только что включил соответствующие части из своего большого веб-приложения. Вы должны быть в состоянии понять идею. HTML - это ввод с классом «ссылка». Большое вертикальное положение фона связано с тем, что это спрайт. Протестировано в IE6, IE7, IE8, FF2, FF3.5, Opera 9.6, Opera 10, Chrome 2, Safari 4. Мне все еще нужно настроить положение фона на пару пикселей в некоторых браузерах:
JS:
$$('input.link').each(function(el) {
new Element('span',{'class':'linkIcon'}).setText(' ').injectBefore(el);
if (window.gecko) el.setStyle('padding', '2px 2px 2px 19px');
});
CSS:
input.link { padding-left: 19px; }
span.linkIcon { z-index: 2; width: 19px; height: 19px; position: absolute; background-image: url(img/fields.gif); background-position: 1px -179px; background-repeat: no-repeat; }
Обновление: CSS Close Enough Solution: Основываясь на предложении kRON, вот CSS, чтобы привести входные данные в соответствие с FF и IE в Vista, что является хорошим выбором, если вы решите отказаться от чистых значений по умолчанию и применить одно из них. стиль. Я немного изменил его и добавил «голубоватые» эффекты:
CSS:
input[type=text], select, textarea {
border-top: 1px #acaeb4 solid;
border-left: 1px #dde1e7 solid;
border-right: 1px #dde1e7 solid;
border-bottom: 1px #e3e9ef solid;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
padding: 2px;
}
input[type=text]:hover, select:hover, textarea:hover, input[type=text]:focus, select:focus, textarea:focus {
border-top: 1px #5794bf solid;
border-left: 1px #c5daed solid;
border-right: 1px #b7d5ea solid;
border-bottom: 1px #c7e2f1 solid;
}
select { border: 1px; }