Как установить высоту div на фиксированную ширину div

0

Я кодирую сайт, где у меня есть фиксированная ширина div, которая представляет собой фоторамку. Пользователь может изменять значения ширины и высоты для фрейма и использовать JQuery, я хотел бы показать им представление кадра.

Ширина рамки div сама по себе фиксирована, так как в дизайне страницы ей не хватает места. Таким образом, единственный размер, который может физически измениться, - это высота.

Если пользователь указал, например, ширину кадра 300 мм и высоту 200 мм, я должен представить это на экране. То, с чем я борюсь, - это точное представление. В настоящее время я делаю следующее:

$(function() {
  $( "#artwork_height_input" ).change(function() {
    //Work out the new proportional height (the width of the div is fixed, so only the height can be altered)
    var divWidth = $( "#artwork_width_input" ).val();
    var divHeight = $( "#artwork_height_input" ).val();
    var ratio = divWidth / divHeight;
    var newDivHeight = divHeight / ratio;
    alert(newDivHeight);
    $("#scaledimage").height(newDivHeight-2);
  });
});

Проблема в том, что в результате получается новый DivHeight 133.33, который, как я знаю, неверен. Может ли кто-нибудь помочь мне разобраться с этим? Я уверен, что это математика более JQuery, но любая помощь будет оценена!

Благодарю!

Теги:

1 ответ

0
Лучший ответ

Я думаю, что у вас проблемы с математикой.

вы сказали, что ваш div имеет фиксированную ширину, поэтому нам нужно определить его высоту.

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

DivHeiht/DivWidth = FrameHeight/FrameWidth

поэтому DivHeight = DivWidth*(FrameHeight/Framewidth)

$(function() {
  $( "#artwork_height_input" ).change(function() {
    //Work out the new proportional height (the width of the div is fixed, so only the height can be altered)
    var Framewidth= $("#artwork_width_input").val();
    var FrameHeight= $("#artwork_height_input").val();
    var DivWidth = $("#scaledimage").width();
    var DivHeight = DivWidth*(FrameHeight/Framewidth);
    //alert(DivHeight);
    $("#scaledimage").height(DivHeight);//-2 for what?
  });
});

или: более короткий путь: (но более трудно понять)

$(function() {
    $( "#artwork_height_input" ).change(function() {
    $("#scaledimage").height($("#scaledimage").width()*$("#artwork_width_input").val()/$("#artwork_height_input").val());});
});
  • 0
    Спасибо avrahamcool, это именно то, что я искал! Отлично!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню