2011-02-12 6 views
1

기본적으로 갤러리의 각 이미지 크기에 따라 이미지 자르기의 변수를 변경하고 싶습니다. 이미지의 높이가 높이 자르기로 전환하려는 너비보다 크면 너비 자르기를 유지하십시오.Galleria jQuery 플러그인을 사용하여 image_crop을 이미지의 너비와 높이가 다른 경우 어떻게 다르게 할 수 있습니까?

if ($(image).width() > $(image).height()){ 
var upordown = "width" 
} else {   
var upordown = "height" 
} 

변수가 여기에와 갤러리아 옵션 목록의 일부입니다 : 어떤 도움을 주시면 감사하겠습니다

image_crop : upordown, 

지금까지 나는이 코드를 가지고있는 갤러리아 플러그인을 사용하고 있습니다.

답변

2

자르기없이 이미지를 항상 컨테이너 안에 넣을 방법을 찾고 계십니까? image_crop (또는 imageCrop 최신 버전)을 false으로 설정하십시오.

편집 :loadfinish 이벤트를 청취하고 이미지 크기에 따라 옵션을 설정할 수 있습니다. 변경 사항을 적용하려면 refreshImage으로 전화해야합니다.

$('#galleria').galleria({ 
    extend: function() { 
     var gallery = this, 
      landscape; 
     this.bind('loadfinish', function(e) { 
      landscape = e.imageTarget.width >= e.imageTarget.height 
       ? 'width' : 'height'; 
      gallery.setOptions('imageCrop', landscape).refreshImage(); 
     }); 
    } 
}); 
+0

자르기없이 컨테이너 내부의 이미지에 꼭 맞는 문제는 실제로 해결되지 않습니다. 나는 자르기 선택이 이미지에 따라 달라지기를 바란다. 이미지가 세로 인 경우 자르기 또는 '높이'자르기가 사용되고 이미지가 가로이면 자르기가 참 또는 '너비'자르기로 설정됩니다. 그래도 도와 ​​줘서 고마워. 다행히도 누군가가 트릭을 수행 할 if 문을 사용할 수 있기를 바랍니다. –

+0

다른 답변을 보려면 제 편집을보십시오. – David

+0

'imageCrop'의 기본값을 'height'로 설정 한 다음 코드를 삽입하면 'imageCrop'이 'width'로 전환되지만 가로 이미지의 경우에만 수행되는 대신 모든 이미지에 적용됩니다. 'refreshImage();'를 넣을 다른 곳이 있습니까? 갤러리에로드 된 첫 번째 이미지는 다음 이미지로 넘어간 다음 다시 클릭하지 않으면 영향을받지 않습니다. 그런 다음 이미지가 가로로 전환됩니다. 문제에 영향을 미치는 고전적인 테마를 사용하고 있습니까? 코드가 어딘가에 테마 파일에 있어야합니까? 도움을 주셔서 감사합니다. –

1

데이비드의 예를 생각하면 나는 이것이 최선의 선택이라고 생각합니다. 정말 부드럽지는 않지만 Lee Tindell이 말한 문제에 도움이됩니다.

this.bind('image', function(e) { 
    var imageW = e.imageTarget.width; 
    var imageH = e.imageTarget.height; 

    if (imageH > imageW) { 
     landscape = 'height'; 
    } else if (imageH < imageW) { 
     landscape = true; 
    } 

    this.setOptions({ imageCrop: landscape }).refreshImage(); 
}); 
관련 문제