Как определить ширину элемента
Пытаюсь получить ширину DOM объектов, которые содержит 2+ DIV'а, первый 308px, другие по 200px
Пытаюсь получить ширину: alert(this.clientWidth + ' ' + (this['getWidth']?this.getWidth():'')+' -'); Результат: Chrome: 800 Opera: 708 FF: 783 IE: 714 Причем если смотреть в отладчиках, все браузеры показывают 908 px корректные. Просчет выполняется после загрузки DOM стили хранятся в HTML файле, так что поздней загрузки быть не может. Не пойму что делать. Нужно это для блока: <div class="scroll_area" id="scroll"> <div class="area" id="area"> <div class="category"> [..] </div> </div> </div> Где #scroll {position:realtive; } #area {position:absolute;} и для area вычисляется ширина что бы был корректной длины горизонтальный скролл. Может я не знаю чего-то и можно все это сделать без JS? P.S в блок #area походу выполнения будут еще добавляться блоки div.category; |
Цитата:
|
Результат аналогичен, во всех браузерах
Upd: что интересно, в последующем функция выдает правильный результат |
Забавно 308 + (2 * 200) будет 708, а не 908.
Покажи весь код. |
Весь код приводить не буду, слишком много левых данных:
Это расчет ширины, area jquery объект
area.children().each(function(i){
//alert(this.offsetWidth + ' ' + (this['getWidth']?this.getWidth():'')+' -');
width += parseInt(this.offsetWidth);
});
area.css('width', width);
<div id="scroll_wraper">
<div class="scroll_area" id="scroll">
<div class="area" id="area">
<div class="category">
<div class="category-image"><img src="img/1.jpg"/></div>
<div class="category-block">Some text</div>
<div class="category-block">Some text</div>
<div class="category-block">Some text</div>
</div>
<div class="category">
<div class="category-image"><img src="img/1.jpg"/></div>
<div class="category-block">Some text</div>
<div class="category-block">Some text</div>
<div class="category-block">Some text</div>
</div>
<div class="clear"></div>
</div>
</div>
<div class="menu"></div>
</div>
<style>
.clear{clear: both; width: 0;}
.category {
float: left;
}
.category .category-block, .category .category-image{
float: left;
}
.category .category-block{
width: 200px;
}
.category .category-image{
width: 308px;
}
.scroll_area{
width: 800px; height: 368px; overflow: auto;
position: relative;
}
.scroll_area .area{
position: absolute;
left: 0; top: 0;
height: 232px;
}
.scroll_area img {
float: left;
}
</style>
Вот примерно так, как уже писал выше проверка размера вызывается только после DomLoaded. |
А стили у тебя так же идут после элементов? И js у тебя идёт в каком месте, в head?
|
Js идет в head, а стили так и идут, прямо в хтмле
|
поставь стили в head, ради интереса
|
То же самое.
|
| Часовой пояс GMT +3, время: 01:24. |