Почему браузеры заменяют значение ширины, назначенное через css?

Когда я назначаю базовый стиль всем выборкам, например.

width: 300px;
padding: 0;
margin: 0;
border-width: 1px;

Я получаю неожиданные результаты при получении ширины через javascript в разных обстоятельствах.

  • Когда select виден, значение with равно 298px.
  • Когда выберите display:none, ширина также будет равна 298px(ff, jquery)
  • Когда выбор находится в div с display:none, ширина правильная 300px.

(Результат также тот же присваивание: box-sizing: border-box)

Ну, полученная ширина иногда отличается от используемого браузера и фреймворка javascript, но в целом я просто хочу иметь возможность получить назначенная ширина (300px). (Я предполагаю, что это как-то связано с «формальной странностью», указанной здесь: http://meyerweb.com/eric/thoughts/2007/05/15/formal-weirdness/, но почему выиграл не используют ли браузеры ширину, назначенную пользователем??)

Как я могу получить назначенную ширину? Есть ли способ сделать это?

Примеры:

http://jsfiddle.net/ETCcH/5/(для использования jquery или замените 5 на 4 для примера с использованием mootools)

(посмотрите и попробуйте с разных браузерах)

5
задан mmg666 31 August 2013 в 15:42
поделиться