Я в настоящее время использую следующий код для расположения отделения непосредственно ниже входного текстового поля на фокусе. Проблемой является ширина отделения, варьируется между браузерами. Существует ли способ гарантировать отделение, которое появляется, точная ширина как мое поле ввода?
// get the field position
var inputField = $('#inputfield');
var fieldDiv = $('div.divname');
var sf_pos = field.offset();
var sf_top = sf_pos.top;
var sf_left = sf_pos.left;
// get the input field size
var sf_height = inputField.height();
var sf_width = inputField.width();
fieldDiv.css("position","absolute");
fieldDiv.css("left", sf_left);
fieldDiv.css("top", sf_top + sf_height + 6);
fieldDiv.css("width", sf_width);
$('#inputfield').focus(function() {
fieldDiv.fadeIn('medium');
}).blur(function() {
fieldDiv.fadeOut('medium');
});
Я думаю, это может быть связано с IE, не соблюдающим блочную модель, и некоторые браузеры также будут включать границы по ширине, а другие - нет.
пробовали ли вы использовать outterWidth () вместо width ()?
также Вы можете взломать его и добавить смещения, зависящие от браузера, например:
width += ($.support.boxModel ? 0 : 2);
Это неизбежная часть использования CSS. Конечно, вы можете взламывать свой CSS до раннего утра, чтобы все отображалось одинаково во всех браузерах с одним и тем же CSS, но у всех есть крайние сроки. Я нашел простейшее решение для настройки размеров элементов между браузерами - это условные комментарии . Вы также можете определить отдельные файлы таблиц стилей для разных браузеров (которые содержат только различия) и загрузить их соответственно.