2016-06-16 5 views
0

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

function getOffsetRect(elem) { 
    // (1) 
    var box = elem.getBoundingClientRect() 

    var body = document.body 
    var docElem = document.documentElement 

    // (2) 
    var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop 
    var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft 

    // (3) 
    var clientTop = docElem.clientTop || body.clientTop || 0 
    var clientLeft = docElem.clientLeft || body.clientLeft || 0 

    // (4) 
    var top = box.top + scrollTop - clientTop 
    var left = box.left + scrollLeft - clientLeft 

    return { top: Math.round(top), left: Math.round(left) } 
} 

Это прекрасно работает. Я получаю точное положение верхнего левого угла моего изображения и когда я позиционировать DIV на нем, например,

$("#testDiv").css({top: element.top, left: element.left, position: 'absolute'});

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

ответ

1

Это проще всего сделать с помощью запросов CSS Media. У W3 Schools есть хорошая страница на них, чтобы вы могли легко их повесить. Я бы рекомендовал проверить их, и отзывчивый дизайн станет легким.

+0

настоящее время я использую uikit, который является гибкой структурой, когда я изменяю размер страницы, размер изображения большего размера изменяется в зависимости от реакции. Однако меньшие изображения, которые я позиционировал поверх большого изображения, перемещаются в странные места. Больше не в правильном положении поверх большего изображения. Есть ли способ, чтобы меньшие изображения реагировали на более крупные? – unconditionalcoder

+0

У вас есть CSS для проекта? Если вы поместили большое изображение внутри div и установили ширину div в X%, а затем ширину изображения до 100%, она должна измениться с изображением. Если вы затем поместите внутреннее изображение внутри другого div и установите эту ширину в соответствии с той шириной, которую вы хотите, и сделайте изображение внутри ширины 100%, изображение будет изменяться с помощью этого div. Первый div изменит размер страницы, а второй div (один внутри первого div) изменит размер в зависимости от размера первого div. –

0

Вам нужно будет снова вызвать этот метод (а затем применить новые значения к местоположению изображения верхнего уровня) при изменении размера окна.

Вы можете сделать это, добавив слушатель событий (хотя вы хотели бы, чтобы второй аргумент быть метод, который вызывает getOffsetRect, затем применяет возвращаемое значение к существующему изображению):

window.addEventListener('resize', getOffsetRect(elem)); 
Смежные вопросы