[JQUERY] 어떻게 화면 비율을 유지 / 비례하여 이미지 크기를 조정하려면 어떻게?
JQUERY어떻게 화면 비율을 유지 / 비례하여 이미지 크기를 조정하려면 어떻게?
해결법
-
1.http://ericjuden.com/2009/07/jquery-image-resize/에서이 코드 조각에서보세요
http://ericjuden.com/2009/07/jquery-image-resize/에서이 코드 조각에서보세요
$(document).ready(function() { $('.story-small img').each(function() { var maxWidth = 100; // Max width for the image var maxHeight = 100; // Max height for the image var ratio = 0; // Used for aspect ratio var width = $(this).width(); // Current image width var height = $(this).height(); // Current image height // Check if the current width is larger than the max if(width > maxWidth){ ratio = maxWidth / width; // get ratio for scaling image $(this).css("width", maxWidth); // Set new width $(this).css("height", height * ratio); // Scale height based on ratio height = height * ratio; // Reset height to match scaled image width = width * ratio; // Reset width to match scaled image } // Check if current height is larger than max if(height > maxHeight){ ratio = maxHeight / height; // get ratio for scaling image $(this).css("height", maxHeight); // Set new height $(this).css("width", width * ratio); // Scale width based on ratio width = width * ratio; // Reset width to match scaled image height = height * ratio; // Reset height to match scaled image } }); });
-
2.나는 이것이 정말 멋진 방법이라고 생각 :
나는 이것이 정말 멋진 방법이라고 생각 :
/** * Conserve aspect ratio of the original region. Useful when shrinking/enlarging * images to fit into a certain area. * * @param {Number} srcWidth width of source image * @param {Number} srcHeight height of source image * @param {Number} maxWidth maximum available width * @param {Number} maxHeight maximum available height * @return {Object} { width, height } */ function calculateAspectRatioFit(srcWidth, srcHeight, maxWidth, maxHeight) { var ratio = Math.min(maxWidth / srcWidth, maxHeight / srcHeight); return { width: srcWidth*ratio, height: srcHeight*ratio }; }
-
3.내가 제대로 질문을 이해한다면, 당신도 이것에 대한 jQuery를 필요가 없습니다. 클라이언트에 비례하여 이미지를 축소 혼자 CSS로 수행 할 수 있습니다 불과 100 %로 최대 폭 및 최대 높이를 설정합니다.
내가 제대로 질문을 이해한다면, 당신도 이것에 대한 jQuery를 필요가 없습니다. 클라이언트에 비례하여 이미지를 축소 혼자 CSS로 수행 할 수 있습니다 불과 100 %로 최대 폭 및 최대 높이를 설정합니다.
<div style="height: 100px"> <img src="http://www.getdigital.de/images/produkte/t4/t4_css_sucks2.jpg" style="max-height: 100%; max-width: 100%"> </div>
여기에 바이올린는 다음과 같습니다 http://jsfiddle.net/9EQ5c/
-
4.가로 세로 비율을 결정하기 위해, 당신은 목표하는 비율이 필요합니다.
가로 세로 비율을 결정하기 위해, 당신은 목표하는 비율이 필요합니다.
function getHeight(length, ratio) { var height = ((length)/(Math.sqrt((Math.pow(ratio, 2)+1)))); return Math.round(height); }
function getWidth(length, ratio) { var width = ((length)/(Math.sqrt((1)/(Math.pow(ratio, 2)+1)))); return Math.round(width); }
이 예에서 나는이 일반적인 모니터 화면 비율부터 16:10 사용합니다.
var ratio = (16/10); var height = getHeight(300,ratio); var width = getWidth(height,ratio); console.log(height); console.log(width);
위의 결과는 147과 300이 될 것입니다
-
5.사실 난 그냥이 문제로 실행하고 내가 찾은 해결책은 이상하게도 간단하고 이상한
사실 난 그냥이 문제로 실행하고 내가 찾은 해결책은 이상하게도 간단하고 이상한
$("#someimage").css({height:<some new height>})
그리고 기적 화상은 새로운 높이와 동일한 비율을 보존로 조정한다!
-
6.이 문제에 대한 4 개 매개 변수가 있습니다
이 문제에 대한 4 개 매개 변수가 있습니다
그리고 3 개 가지 조건 매개 변수가
해결책
그것은 당신이 할 필요가 전부입니다.
//Pseudo code iX;//current width of image in the client iY;//current height of image in the client cX;//configured width cY;//configured height fX;//final width fY;//final height 1. check if iX,iY,cX,cY values are >0 and all values are not empty or not junk 2. lE = iX > iY ? iX: iY; //long edge 3. if ( cX < cY ) then 4. factor = cX/lE; else 5. factor = cY/lE; 6. fX = iX * factor ; fY = iY * factor ;
이것은 나는 당신에게 코드를 제공하고 있지 않다, 성숙한 포럼입니다 :)
-
7.합니까 도움이?
합니까 도움이?
브라우저는 그대로 화면 비율을 유지하는 처리됩니다.
즉 화상의 폭이 높이보다 크고 높이가 비례 적으로 계산 될 때의 최대 폭 차기. 높이가 폭보다 큰 경우에 유사하게 최대 높이가 유효 할 것이다.
이에 대한 jQuery를 또는 자바 스크립트가 필요하지 않습니다.
IE7 +와 다른 브라우저에서 지원 (http://caniuse.com/minmaxwh).
-
8.이것은 모든 가능한 비율로 이미지를 작동합니다
이것은 모든 가능한 비율로 이미지를 작동합니다
$(document).ready(function() { $('.list img').each(function() { var maxWidth = 100; var maxHeight = 100; var width = $(this).width(); var height = $(this).height(); var ratioW = maxWidth / width; // Width ratio var ratioH = maxHeight / height; // Height ratio // If height ratio is bigger then we need to scale height if(ratioH > ratioW){ $(this).css("width", maxWidth); $(this).css("height", height * ratioW); // Scale height according to width ratio } else{ // otherwise we scale width $(this).css("height", maxHeight); $(this).css("width", height * ratioH); // according to height ratio } }); });
-
9.여기 Mehdiway의 대답에 수정이다. 새로운 폭 및 / 또는 높이를 최대 값으로 설정되지 않았다. http://spacecoastsports.com/wp-content/uploads/2014/06/sportsballs1.png : 좋은 테스트 케이스가 다음 (1768 X 1075 픽셀)이다. (나는 명성 포인트의 부족으로 인해 위의 그것에 대해 언급 할 수 없습니다.)
여기 Mehdiway의 대답에 수정이다. 새로운 폭 및 / 또는 높이를 최대 값으로 설정되지 않았다. http://spacecoastsports.com/wp-content/uploads/2014/06/sportsballs1.png : 좋은 테스트 케이스가 다음 (1768 X 1075 픽셀)이다. (나는 명성 포인트의 부족으로 인해 위의 그것에 대해 언급 할 수 없습니다.)
// Make sure image doesn't exceed 100x100 pixels // note: takes jQuery img object not HTML: so width is a function // not a property. function resize_image (image) { var maxWidth = 100; // Max width for the image var maxHeight = 100; // Max height for the image var ratio = 0; // Used for aspect ratio // Get current dimensions var width = image.width() var height = image.height(); console.log("dimensions: " + width + "x" + height); // If the current width is larger than the max, scale height // to ratio of max width to current and then set width to max. if (width > maxWidth) { console.log("Shrinking width (and scaling height)") ratio = maxWidth / width; height = height * ratio; width = maxWidth; image.css("width", width); image.css("height", height); console.log("new dimensions: " + width + "x" + height); } // If the current height is larger than the max, scale width // to ratio of max height to current and then set height to max. if (height > maxHeight) { console.log("Shrinking height (and scaling width)") ratio = maxHeight / height; width = width * ratio; height = maxHeight; image.css("width", width); image.css("height", height); console.log("new dimensions: " + width + "x" + height); } }
-
10.
$('#productThumb img').each(function() { var maxWidth = 140; // Max width for the image var maxHeight = 140; // Max height for the image var ratio = 0; // Used for aspect ratio var width = $(this).width(); // Current image width var height = $(this).height(); // Current image height // Check if the current width is larger than the max if(width > height){ height = ( height / width ) * maxHeight; } else if(height > width){ maxWidth = (width/height)* maxWidth; } $(this).css("width", maxWidth); // Set new width $(this).css("height", maxHeight); // Scale height based on ratio });
-
11.이미지가 비례 경우,이 코드는 이미지와 함께 래퍼를 채울 것입니다. 이미지는 다음 여분의 폭 비율에없는 경우 / 높이립니다 얻을 것이다.
이미지가 비례 경우,이 코드는 이미지와 함께 래퍼를 채울 것입니다. 이미지는 다음 여분의 폭 비율에없는 경우 / 높이립니다 얻을 것이다.
<script type="text/javascript"> $(function(){ $('#slider img').each(function(){ var ReqWidth = 1000; // Max width for the image var ReqHeight = 300; // Max height for the image var width = $(this).width(); // Current image width var height = $(this).height(); // Current image height // Check if the current width is larger than the max if (width > height && height < ReqHeight) { $(this).css("min-height", ReqHeight); // Set new height } else if (width > height && width < ReqWidth) { $(this).css("min-width", ReqWidth); // Set new width } else if (width > height && width > ReqWidth) { $(this).css("max-width", ReqWidth); // Set new width } else (height > width && width < ReqWidth) { $(this).css("min-width", ReqWidth); // Set new width } }); }); </script>
-
12.추가로 온도 - 바르거나 괄호없이.
추가로 온도 - 바르거나 괄호없이.
var width= $(this).width(), height= $(this).height() , maxWidth=100, maxHeight= 100; if(width > maxWidth){ height = Math.floor( maxWidth * height / width ); width = maxWidth } if(height > maxHeight){ width = Math.floor( maxHeight * width / height ); height = maxHeight; }
폭과 높이 속성이 이미지에 맞지 않는 경우 검색 엔진이 그것을 좋아하지 않아,하지만 그들은 JS를 모르는 : 명심하십시오.
-
13.약간의 시행 착오 후에 나는이 솔루션에 온 :
약간의 시행 착오 후에 나는이 솔루션에 온 :
function center(img) { var div = img.parentNode; var divW = parseInt(div.style.width); var divH = parseInt(div.style.height); var srcW = img.width; var srcH = img.height; var ratio = Math.min(divW/srcW, divH/srcH); var newW = img.width * ratio; var newH = img.height * ratio; img.style.width = newW + "px"; img.style.height = newH + "px"; img.style.marginTop = (divH-newH)/2 + "px"; img.style.marginLeft = (divW-newW)/2 + "px"; }
-
14.크기 조정은 CSS를 이용하여 (종횡비를 유지)를 달성 할 수있다. 이 댄 Dascalescu의 게시물에 의해 영감을 더 간단하게 대답이다.
크기 조정은 CSS를 이용하여 (종횡비를 유지)를 달성 할 수있다. 이 댄 Dascalescu의 게시물에 의해 영감을 더 간단하게 대답이다.
http://jsbin.com/viqare
IMG { 최대 폭 : 200 픽셀; / * 또는 최대 높이를 정의 * / }
-
15.2 단계 :
2 단계 :
단계 1) 화상의 원래 폭 / 원래 높이의 비율을 계산한다.
단계 2) 새로운 원하는 높이에 의해 곱 original_width / original_height 비율은 새로운 높이에 대응하는 새로운 폭을 얻을 수있다.
-
16.이 문제는 CSS에 의해 해결 될 수 있습니다.
이 문제는 CSS에 의해 해결 될 수 있습니다.
.image{ max-width:*px; }
-
17.컨테이너에 맞게 비율 제어 아래 배율 인수 규모를 얻을 크기 조정
컨테이너에 맞게 비율 제어 아래 배율 인수 규모를 얻을 크기 조정
() {(기능 $ ParentHeight 200 =하자; ParentWidth은 300 =하자; $ ( "# 부모") 폭 (ParentWidth) .height의 (ParentHeight을).; $ ( "# ParentHeight") HTML (ParentHeight).; $ ( "# ParentWidth") HTML (ParentWidth).; VAR RatioOfParent = ParentHeight / ParentWidth; $ ( "# ParentAspectRatio") HTML (RatioOfParent).; ChildHeight = 2000 보자; ChildWidth = 4000을하자; VAR RatioOfChild = ChildHeight / ChildWidth; $ ( "# ChildAspectRatio") HTML (RatioOfChild).; ScaleHeight = ParentHeight / ChildHeight하자; ScaleWidth = ParentWidth / ChildWidth하자; 스케일 = Math.min (ScaleHeight, ScaleWidth)를 보자; $ ( "#의 scaleFactor와") HTML (스케일).; // 오래 된 규모 // ChildHeight = ChildHeight * 스케일링하게하고; // ChildWidth = ChildWidth * 스케일링하게하고; 10 % 규모를 줄일 //, 당신은 비율을 변경할 수 있습니다 ScaleDownPercentage = 10을 보자; 하자 CalculatedScaleValue 스케일 = * (ScaleDownPercentage / 100); $ ( "# CalculatedScaleValue") HTML (CalculatedScaleValue).; // 새로운 규모 NewScale = (스케일 - CalculatedScaleValue)를 보자; ChildHeight = ChildHeight * NewScale; ChildWidth = ChildWidth * NewScale; $ ( "# 아이") 폭 (ChildWidth) .height의 (ChildHeight).; $ ( "# ChildHeight") HTML (ChildHeight).; $ ( "# ChildWidth") HTML (ChildWidth).; }); #부모의 { 배경 색상 : 회색; } #아이 { 배경 색상 : 레드, } <스크립트 SRC = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"> script>
DIV> DIV> <표>부모 종횡비 TD> TD> TR> 어린이의 화면 비율 TD> TD> TR> 스케일 인자 TD> TD> TR> 계산치 스케일 값 TD> TD> TR> 부모 높이 TD> TD> TR> 부모 품 TD> TD> TR> 어린이 높이 TD> TD> TR> 어린이 폭 TD> TD> TR> 테이블> 18.이것은 완전히 드래그 항목에 대한 나를 위해 일한 - aspectRatio : 사실
이것은 완전히 드래그 항목에 대한 나를 위해 일한 - aspectRatio : 사실
.appendTo(divwrapper).resizable({ aspectRatio: true, handles: 'se', stop: resizestop })
from https://stackoverflow.com/questions/3971841/how-to-resize-images-proportionally-keeping-the-aspect-ratio by cc-by-sa and MIT license
'JQUERY' 카테고리의 다른 글
[JQUERY] JQuery와 .each () 뒤로 (0) 2020.10.04 [JQUERY] navigator.geolocation.getCurrentPosition 가끔 가끔 작동하지 않습니다 (0) 2020.10.04 [JQUERY] jQuery를 사용하여 파일 읽기 / 쓰기 (0) 2020.10.04 [JQUERY] "POST"JSONP 아약스 호출 : 유형을 사용하는 방법 (0) 2020.10.04 [JQUERY] 어떻게 자바 스크립트 또는 jQuery를하는 대신에 액세스 PHP 변수에 <? PHP는 에코 $ 변수?> [중복] (0) 2020.10.04