#jquery #html #css #resize
#jquery #HTML #css #изменение размера
Вопрос:
Допустим, у вас есть элемент с фиксированным или абсолютным расположением:
<div>
My fixed div.
</div>
С помощью следующего css:
div:first-of-type {
background-color: red;
position: fixed;
top: 20px;
left: 20px;
right: 20px;
bottom: 20px;
}
Вы можете определить ширину с помощью:
$(function() {
$(window).resize(function() {
var $myFixedDiv = $('div:first');
console.log($myFixedDiv.width()); //$myFixedDiv.innerWidth(), $myFixedDiv.outerWidth()
});
});
Однако при изменении размера окна ширина, указываемая как Firefox, так и Chrome, равна 0.
Как бы определить, какова истинная ширина?
Комментарии:
1. Ваш код выглядит хорошо, вы используете новейшую версию jquery??
2. Я использую jquery 1.5.1, думаю, я мог бы использовать 1.5.2?
3. У меня это отлично работает в Firefox 4 и Chrome 10 (с использованием jquery 1.5.1).
Ответ №1:
Вы могли бы взять ширину окна и минус 40 от обеих осей.
var width = $(window).width()-40;
var height = $(window).height()-40;
Тогда вместо того, чтобы использовать css top, left, bottom и right для установки ширины, поскольку я думаю, что это ненадежно в долгосрочной перспективе, я бы установил ширину div с помощью js
var myDiv = $('#myDiv');
myDiv.width = width;
myDiv.height = height;
Комментарии:
1. позиция слева и справа после изменения размера выдает 0 в Firefox, а chrome, похоже, выдает мне неверное значение.
2. chrome выдает мне правильные значения после того, как я удалил underscore.js отменить. firefox по-прежнему не работает.