2016-06-17 6 views
2

У меня есть родительский div, содержащий изображение с кучей «дыр» в нем. У меня есть дочерний div для каждого отверстия, который определяет точный размер этих отверстий. В отверстиях у меня есть текст, который я установил в положение: абсолютное, чтобы они точно входили в отверстия. Однако, когда я изменяю размер родительского div, содержимое не масштабируется вообще, и они остаются одинакового размера. Они также не находятся внутри отверстий.Как масштабировать содержимое div с помощью div?

+1

Какие ценности вы используете для позиционирования (например, сверху, слева и т.д.) и какой тип размера для вашего текста? – Siavas

+0

Используете ли вы пиксели для установки ширины/позиции или процентов? Кроме того, больше кода было бы полезно – dunnmifflsys

+0

Я использую пиксели, чтобы установить ширину и высоту дочерних div. Я также использую transform/translate, чтобы переместить дочерние divs в отверстия. – user6432770

ответ

2

пользователя «%» в качестве единицы вместо пиксела

<div id="ParentDiv"> 
    <img src="../610614-spring-forest.jpg"> 
    <div class="hole1">Tree1</div> 
</div> 

#ParentDiv{ 
     max-width:900px; 
     position: relative; 
    } 
    img{ 
     width: 100%; 
     height: auto; 
    } 
    .hole1{ 
     position: absolute; 
     left:2.75%; 
     top:23.87%; 
    } 

Вы можете использовать ВЭкран Hieght или ВЭкран Ширин блок для этого случая. Ниже приведен пример того, как вы могли бы использовать.

#ParentDiv{ 
     max-width:100vw; 
     max-height:100vh; 
     position: relative; 
    } 
    img{ 
     width: 100%; 
     height: auto; 
    } 
    .hole1{ 
     position: absolute; 
     /*left:2.75%; 
     top:23.87%;*/ 
     left:2.75vw; 
     top:23.87vh; 
    } 

Попытайтесь использовать похожие, надейтесь, что вы получите желаемый результат.

+0

Я могу использовать%, чтобы определить, где проходит дыра, но как определить, насколько она велика. Если я увеличиваю размер родительского div, отверстия также увеличатся. Кроме того, размер родительского div зависит от размера окна, поэтому я должен использовать как 100% вместо пикселей. – user6432770

+0

В этом случае мы можем использовать высоту порта просмотра или узел ширины порта View, т. Е. Max-width: 100vw; vw = ширина видового экрана, vh = высота видового экрана, используйте его вместо пикселя и процента. 100Vw = 100% ширина, т.е. ширина всего видимого экрана. –

1

Вы можете использовать свойство CSS, называемое transform, вместо прямого изменения размера.

Если вам необходимо установить размер изображения:

// this is the container the image and its text is in 
imageContainer = document.getElementById('myDiv'); 
// original size of image 
origX = 400; 
origY = 300; 
// size you need it to change to 
newX = 800; 
newY = 600; 
/* 
Tells CSS to stretch from the top-left edge of the object, so it won't stretch off the left side of the screen 
Best way to change value would be percentages 
Value of '0 0' sets origin to top-left 
Value of '100% 100%' sets origin to bottom-right 
*/ 
imageContainer.style.transformOrigin = '0 0'; 
//the following is just one string, broken into multiple lines for easy explanation 
// tells CSS that the transform type is scale 
imageContainer.style.transform = 'scale(' + 
    // tells CSS how many times normal size to widen image. in this case evaluates to 2, since 800/400 is 2, making image 2x wider 
    (newX/origX) + ',' + 
    // tells CSS how many times normal size to heighten image. in this case evaluates to 2, since 600/300 is 2, making image 2x taller 
    (newY/origY) + ')'; 

Предполагая, что у вас нет каких-либо серьезных производительности подрывающих функции, это будет работать отлично. Это немного медленнее, если у вас много вещей.

незакомментированной:

imageContainer = document.getElementById('myDiv'); 
origX = 400; 
origY = 300; 
newX = 800; 
newY = 600; 
imageContainer.style.transformOrigin = '0 0'; 
imageContainer.style.transform = 'scale(' + (newX/origX) + ',' (newY/origY) + ')'; 
Смежные вопросы