JQuery и маржа: 0 авто - PullRequest
4 голосов
/ 12 июня 2010

Итак, это проблема, о которой уже говорилось, но я надеюсь, что мы сможем ее решить: я использую jQuery 1.4 Если я определю стиль

#obj { margin: 0 auto; }

и затем

$('#obj').css('marginLeft');

Результатом является вычисленное значение в пикселях. Есть ли способ определить, получены ли эти пиксели из расчета auto или нет, без разбора document.styleSheets?

Ответы [ 2 ]

4 голосов
/ 13 июня 2010

Это решение также будет срабатывать, если поля будут установлены в процентах, но оно может быть достаточно для ваших целей.По сути, вы записываете, какие поля изменяются при изменении размера.Таким образом, вы должны записать поля перед изменением размера в массив:

var aMargins = [];
$('.yourObjs').each(function(i,obj){
  var objML = $(obj).css('marginLeft');
  aMargins.push(objML);
});

Затем измените размер окна, посмотрите, какие поля изменились (это будет 'auto' или%), сделайте то, что вам нужно сделать, чтобыих и верните окно к исходному размеру:

var wW = $(window).width();
var wH = $(window).height();  
window.resizeTo(wW - 5, wH);
$('.yourObjs').each(function(i,obj){
  if ($(obj).css('marginLeft') != aMargins[i]) {
    // your centering code here
  }
}
window.resizeTo(wW,wH);

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

0 голосов
/ 12 июня 2010

Вы не можете получить auto от самого элемента, потому что стили каскадные, что если у вас это есть?

#obj { margin: 0 auto; }
div #obj { margin: 0 10px; }

Что это? Зависит от страницы и от того, как она каскадируется, основная концепция заключается в том, что вы получаете рассчитанные свойства стиля для этого элемента , что в таблице стилей не имеет значения, их может быть 20 таблицы стилей и т. д.

По сути, это сводится к следующему: получение auto против 000px является действительно редким запросом и потребует много дополнительного кода, чтобы выяснить, настолько что это простой случай «нет, это не относится к ядру». Тем не менее, есть плагины для анализа CSS .

Краткий ответ: ядро ​​jQuery не может (не имеет кода) сделать это, jQuery с плагинами или просто JavaScript в целом да вы можете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...