Отобразите отделение ниже поля ввода точной ширины с помощью jQuery

Я в настоящее время использую следующий код для расположения отделения непосредственно ниже входного текстового поля на фокусе. Проблемой является ширина отделения, варьируется между браузерами. Существует ли способ гарантировать отделение, которое появляется, точная ширина как мое поле ввода?

  // 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');
  });
5
задан Lyon 3 March 2010 в 14:51
поделиться

2 ответа

Я думаю, это может быть связано с IE, не соблюдающим блочную модель, и некоторые браузеры также будут включать границы по ширине, а другие - нет.

пробовали ли вы использовать outterWidth () вместо width ()?

также Вы можете взломать его и добавить смещения, зависящие от браузера, например:

width += ($.support.boxModel ? 0 : 2);
3
ответ дан 15 December 2019 в 00:59
поделиться

Это неизбежная часть использования CSS. Конечно, вы можете взламывать свой CSS до раннего утра, чтобы все отображалось одинаково во всех браузерах с одним и тем же CSS, но у всех есть крайние сроки. Я нашел простейшее решение для настройки размеров элементов между браузерами - это условные комментарии . Вы также можете определить отдельные файлы таблиц стилей для разных браузеров (которые содержат только различия) и загрузить их соответственно.

1
ответ дан 15 December 2019 в 00:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: