Показать сообщение отдельно
  #1 (permalink)  
Старый 31.07.2012, 02:01
Профессор
Посмотреть профиль Найти все сообщения от Антон Крамолов
 
Регистрация: 11.04.2012
Сообщений: 255

Как перевести pt, em и пр. в пиксели
function collisionDetection(x1, y1, w1, h1, x2, y2, w2, h2) { 
    return x1 < (x2 + w2) && y1 < (y2 + h2) && (x1 + w1) > x2 && (y1 + h1) > y2; 
}

function calcSize(el, props) {
    var total = 0;
    
    for (var i = 0; i < props.length; ++i) {
        total += parseInt(getStyle(el, props[i])); // вот тут короче, если в пикселях заданы ширина и отступы все ок, в противном же случае все будет неправильно работать
    }
    
    return total;
}

function calcWidth(el) {
    return calcSize(el, ['border-left-width', 'padding-left', 'width', 'padding-right', 'border-right-width']);   
}

function calcHeight(el) {
    return calcSize(el, ['border-top-width', 'padding-top', 'height', 'padding-bottom', 'border-bottom-width']);
}

function isCollide(a, b) { 
    var p1 = getPosition(a), p2 = getPosition(b); 
    return collisionDetection(p1.left, p1.top, calcWidth(a), calcHeight(a), p2.left, p2.top, calcWidth(b), calcHeight(b)); 
}
Ответить с цитированием