Я знаю, что могут быть связанные сообщения, но для жизни меня я не могу понять, почему скрипт не реализует мои переменные, связанные с этим значением.Конкатенация переменных Javascript не работает
Вот скрипка: https://jsfiddle.net/9s4k9449/5/
Вкратце:
Красный ДИВ фиксируется на 743px в ширину, пока ширина окна не попадает в 734px, на котором указывают ширину изменения красного Div, чтобы 100%.
Функция, называемая getFraction(), измеряет ширину красного div и делит ее на красную divs с исходной шириной 743 для создания переменной с именем myfraction. В результате, когда окно больше 734px, ширина myfraction равна 1, в противном случае фракция отображается как вы получили ее, фракцию.
Синий div содержится в красном div и масштабируется с использованием webkitTransform с использованием значения myfraction. Результатом должно быть то, что когда окно больше ширины 734px, синий div не масштабируется, потому что myfraction = 1 (шкала = 1), но когда окно меньше 734px, синий div масштабируется до myfraction.
ПРИМЕЧАНИЯ: Проблема заключается в функции "шкалы()". Я считаю, что эта проблема связана с функцией, не улавливающей ценность myfraction; вероятно, ошибку конкатенации, которую я не могу найти. Я верю в это, потому что, когда переменная «myfraction» заменяется фактическим числом, скажем 0,5, весь процесс работает отлично (хотя синий div не масштабируется динамически с шириной окон, которую функция выполняет при изменении размера окна в масштабе 0,5) ,
Вот код:
window.onresize = resizefunc;
function resizefunc(){
getFraction();
scale();
}
/*This function takes the red div's current width and divides it by its original width to create a fraction */
function getFraction() {
var myfraction = document.getElementById("reddiv").offsetWidth/743;
document.getElementById("dimensions").innerHTML = myfraction ;
}
/*This function should take the blue div and scale it by the fraction */
function scale() {
document.getElementById("bluediv").style.webkitTransform = 'scale(' + myfraction + ',' + myfraction + ')';
}
.red {
width: 743px;
height: 380px;
background-color: red;
margin: auto;
}
@media screen and (max-width: 743px) {.red {width: 100%}}
#bluediv {
background-color: blue;
width: 400px;
height: 380px;
margin: auto;
}
<div style="width: 100%; height: 500px;">
<div id="reddiv" class="red">
<div id ="bluediv"></div>
</div>
<p id="dimensions"></p>
</div>
Я не хочу звучать как рывок, но что именно вы спрашиваете? Можете ли вы подвести свой вопрос в одном или двух предложениях? – mariocatch
Почему бы не CSS-only? –
Эй, ребята, жаль. Это был долгий вопрос, который должен был быть тщательным. Чтобы быть более кратким, я просто хочу, чтобы синий div масштабировался по значению myfraction с помощью javascript.Причина, по которой я не хочу использовать CSS только потому, что синий div на самом деле окажется iframe, который является внутренним содержимым, которое я хочу масштабировать; не то, что можно сделать только с помощью CSS. – John