Ваша проблема в том, что setStyle
для некоторых свойств может принимать число (и будет добавлять единицы к нему), или он просто будет использовать строку, которую вы ему даете. Поскольку вы даете ему строку, добавив '-'+...
, она создаст CSS margin-left:-34
без устройства. Вы можете либо дать ему номер, либо добавить блок самостоятельно. Кроме того, вы должны убедиться, что ширина это число, прежде чем разделить на 2 (как GetStyle возвращает строку с «рх»)
var width = $(document.body).getStyle('width');
var margin = width.toInt()/2;
$('header').setStyle('margin-left', -(margin.toInt()));
// or
$('header').setStyle('margin-left', '-'+margin.toInt()+'px');
После того, как вы ответили на мой вопрос выше, я заметим, что вы можете сделать это без Javascript или отрицательных полей, если это #header
предполагается расположить на верхней части экрана, на всю ширину (а не в пределах относительно позиционируемый элемент):
#header {position:absolute; top:0px; left:0px; width:100%;}
Это похоже, что это установка ширины к полная ширина тела? Итак, зачем сосредоточиться на ней, если она просто будет полной? – rgthree
Потому что это позиция абсолютного элемента ... –
@GabrielSantos Могу ли я спросить, почему вы используете JavaScript для этого? CSS позволит вам центрировать элемент так же, как вы описываете. Если вы хотите, я могу предоставить этот CSS. – piersadrian