λλ μ λͺ©μ΄ κ·Έ μ체λ₯Ό μ€λͺ νλ€κ³ μκ°νλ€. Firefox λ° IEμμλ λ¬Έμ κ° λ°μνμ§ μμ΅λλ€.
μ΄κ²μ panzoomμΌλ‘ ν΄κ²°ν μ μμ΅λλ€. μΉν· λ¬Έμ μ λλ€
μ΄μν SVGPanμλ μ΄ λ¬Έμ κ° μλ κ² κ°μ΅λλ€: http://www.cyberz.org/projects/SVGPan/tiger.svg
SVGμ κ·Έλ£Ή μμμ λ³νμ μ€μ νλ κ²½μ° λ λ² νμΈνκ³ νλ/μΆμλ μννμ§ μμ΅λλ€.
μλ
μλ€μ
μ λ μ΄μ λΆν° panzoomμ μ¬μ©ν΄ μμΌλ©° SVGκ° νμ¬ μμ
μ μ²λ¦¬νλ λ°©λ²μΈμ§ μ¬μ ν λμμ΄λμ νμΈνκ³ μμ΅λλ€. SVG μ΄λ―Έμ§μ λ€λ₯Έ λΆλΆμ νλνκΈ° μν΄ panzoomμ μ¬μ©νκ³ μΆμ§λ§ Chromeμμλ μ¬κΈ°μμ λ
Όμνλ κ²μ²λΌ νλ¦Ών΄μ§λλ€. λ΄κ° κ·Έκ²μ λν΄ λ¬΄μμ΄λ ν μ μμ΅λκΉ? @timmywil "SVGμ κ·Έλ£Ή μμμ λν λ³ν μ€μ "μ΄ λμμ΄ λλ€κ³ μΌμ§λ§ μ΄λ»κ² ν΄μΌ ν©λκΉ? λμμ μ£Όμλ©΄ κ°μ¬νκ² μ΅λλ€.
λ€μμ λ΄κ° μ¬μ©νλ μ½λμ
λλ€.
var $map = $('.customers-map');
if ($map.length > 0)
{
var $panzoom = $map.find('.panzoom').panzoom();
$panzoom.parent().on('mousewheel.focal', function (e)
{
e.preventDefault();
var delta = e.delta || e.originalEvent.wheelDelta;
var zoomOut = delta ? delta < 0 : e.originalEvent.deltaY > 0;
$panzoom.panzoom('zoom', zoomOut, {
increment: 0.1,
animate: false,
focal: e
});
});
}
λ΄ HTMLμ λ€μκ³Ό κ°μ΅λλ€.
<div class="customers-map">
<div class="panzoom">
<img src="images/customers/customers-map.svg">
</div>
</div>
ν΄κ²° λ°©λ²μ μ°Ύμμ΅λλ€. λλ λͺ¨λ panzoomzoomμμ -webkit-perspective 1κ³Ό 0 μ¬μ΄λ₯Ό λ€μ§μ΅λλ€.
λλ μ΄λ° μΌμνκ³ μλ€ :
var νλκ·Έ = μ°Έ;
ν¨μ doThisOnEveryPanzoomzoom(){
$('#mypanzoom').css({
'-webkit-perspective': (νλκ·Έ?1:0)
});
νλκ·Έ = !νλκ·Έ;
}
@tlimited ν₯λ―Έλ‘μ΄ νΈλ¦. λλ μ΄κ²μ λν΄ μ‘°μ¬ν κ²μ΄λ€.
v1.12.4λ ν¬λ‘¬ λ°μ€ν¬ν± λ° λͺ¨λ°μΌμμ λ§μ§λ§μΌλ‘ μλνλ λ²μ μ λλ€. μ΅μ λ²μ μ iOS μ¬ν리 λ° iOS ν¬λ‘¬μμλ§ μλν©λλ€.
tlimitedμ ν΄κ²° λ°©λ²μ λ°μ€ν¬ν± ν¬λ‘¬μμλ μλνμ§λ§ λͺ¨λ°μΌμμλ μλνμ§ μμ΅λλ€. λ°μ€ν¬ν ν¬λ‘¬μμ μ΄λ―Έμ§κ° νλ¦Ών λ ν¬λ‘¬ μΈμ€νν°λ₯Ό μ¬μ©νκ³ νμ΄μ§μ μμλ₯Ό κ°μ‘° νμνλ©΄ μ΄λ―Έμ§κ° λ€μ μ λͺ ν΄μ§λ κ²μ μμμ΅λλ€. 리νμΈν λ¬Έμ ? (κ·Έ μκ·Όλ² λ³κ²½μ λ€μ 그리기λ₯Ό μ λ°νλ€κ³ κ°μ ν©λλ€)
λͺ¨λ°μΌμμλ μλνλ νΈλ¦μ μ°Ύμμ΅λλ€(ν¬λ‘¬ λ° κΈ°λ³Έ Android λΈλΌμ°μ ).
λ€μ μ€μ CSSμ λ£μΌμμμ€.
.ν¬μ€ {
-webkit-backface-visibility: μ΄κΈ° !μ€μ;
-webkit-transform-origin: 50% 50%;
}
νΈμ§ : μ΄κ²μ μλνλ κ² κ°μ΅λλ€.
κ°μ¬ ν΄μ
λλ gius80μ μμ μ¬νμ΄ ν¨κ³Όκ° μμμ§λ§ νλΈλ¦Ώμ μ±λ₯μ΄ μλΉν λλ €μ‘λ€λ κ²μ λ°κ²¬νμ΅λλ€.
λμ μ¬μ©μκ° μμ μ λ§μΉ ν μ½κ° νλλλ panzoom onEnd μ½λ°±μ μΆκ°νμ΅λλ€. μ΄λ‘ μΈν΄ ν¬μ€μ΄ νλ¦Ών¨ μμ΄ λ€μ λ λλ§λλ κ² κ°μ΅λλ€. λ¬Έμ μ κ·Όμμ λλ¬νλ λ μ’μ λ°©λ²μ΄ μλ€κ³ νμ νμ§λ§ μ΄ μ루μ μ μ μ΄λ Chrome λ°μ€ν¬ν± λ° Androidμμ μλνλ κ² κ°μ΅λλ€.
$el.panzoom({
onEnd: function(){
$el.panzoom( 'zoom', {increment: .01});
}
});
μ΄κ²μ catch-22μ
λλ€. μΉν· λ¬Έμ λ μ΄ κΈ°μ¬ μμ μ μ€λͺ
λμ΄ μμ΅λλ€. Panzoomμ νλμ¨μ΄ κ°μμ νμ©νκΈ° μν΄ -webkit-backface-visibility: hidden
λ₯Ό μ¬μ©νμ¬ μμλ₯Ό μ체 ν©μ± λ μ΄μ΄λ‘ μΉκ²©ν©λλ€. μ΄λ₯Ό ν΅ν΄ μ¬λ¬ μ₯μΉμμ μ λλ©μ΄μ
μ±λ₯μ΄ ν₯μλμμ΅λλ€. μ¦, μΉν·μ μ λλ©μ΄μ
μ μΌλΆκ° λ°ν½μ
μ λ¨μ΄μ§ λ νλ¦¬κ² μ²λ¦¬νμ§ μκ³ νλμ¨μ΄ κ°μ λ μ΄μ΄μ μ λλ©μ΄μ
μ μ μ©νμ§ μμ΅λλ€. Panzoomμ μ΄μ λν μμ μ μ΄κ³ 보νΈμ μΈ μμ μ¬νμ μ 곡ν μ μμ΅λλ€.
λ°λΌμ λ¬Έμ λ μΉν·μ΄ λ¬Έμ λ₯Ό ν΄κ²°ν λκΉμ§ μΉν·μμ λλλ‘ νλ¦Ών λ λΉ λ₯Έ μ λλ©μ΄μ μ μν©λκΉ, μλλ©΄ νλμ¨μ΄ κ°μμ μ€λ¨νκ³ μΆμ΅λκΉ?
BTW, Panzoomμ΄ λ³λμ λ μ΄μ΄λ₯Ό κ°μ νμ§ μλλΌλ μ΄μ¨λ κ°λ λ°μν©λλ€. Webkitμ νΉμ μν©(μ: λΆν¬λͺ λ μ λλ©μ΄μ )μμ λ³λμ λ μ΄μ΄λ₯Ό μλμΌλ‘ μμ±ν©λλ€.
"μ λλ©μ΄μ
μ μΌλΆκ° 0.5ν½μ
μ λ¨μ΄μ§λ κ²½μ°"
Math.floor λλ Math.ceilμ μ¬μ©νμ¬ νλ/μΆμ μμ€μ μ 체 ν½μ
λ‘ κ°μ ν μ μμ΅λκΉ?
νλ/μΆμ μμ€μ΄ μλλλ€. κΈ°μ¬μμ μμ μΉμλ 2λ‘ λλ μ μλ κ²μΌλ‘ μμν΄μΌ νλ κ²μΌλ‘ 보μ΄λ©°, μ΄λ Panzoomμ΄ μ μ©νλ λ° μ ν©νμ§ μμ΅λλ€(νΉν λ°μν νμ΄μ§μμ).
νλ¦Ών μμ μ¬νμ μ£Όμ lin 821 //'backface-visibility': 'hidden',
gius80 λΉμ μ νΈλ¦μ΄ μλν©λλ€, μ λ§ κ°μ¬ν©λλ€.
.panzoom {
-webkit-backface-visibility: initial !important;
-webkit-transform-origin: 50% 50%;
}
μΆμλ μ΄λ―Έμ§μ μ΄κΈ° λ λλ§μ΄ ν¬μ€μ΄ νμ±νλ λ κ·Ήλλ‘ ν½μ νλλ κ΄λ ¨ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ λ Έλ ₯νκ³ μμ΅λλ€. μ΄κ²μ Firefoxμμλ λ°μνμ§ μμ§λ§ Chrome λ° IEμμλ λ°μν©λλ€. @gius80 μ μ μμ μ μ©νλ©΄ Chromeμμ μ¬λ°λ₯΄κ² λ λλ§λ©λλ€. μ¬μ ν IEλ₯Ό ν μ€νΈνκ³ μ μ΄λ IE9μμλ μ€ν¨ν©λλ€. ν κ±Έμ λ λ€κ°κ°κ² ν΄μ£Όμ μ κ°μ¬ν©λλ€!
@jdonahue82 Safariμμλ μλν©λκΉ? λλ₯Ό μν΄ Safariμμ μλνλ μ루μ μ΄ μμ΅λλ€.
@marcelboettcher λμν©λλ€. Safariμμ μλνλ μ루μ μ΄ μμ΅λλ€.
μ¬μ©μ μ μ νλ/μΆμ(jquery.panzoom μλ) ꡬνμ λν λ΄ κ²½νμ λ°λ₯΄λ©΄:
CSS μμΉλ₯Ό μ¬μ©νμ¬ λ€λ₯Έ μμ μμ CSS λ³νμ μ¬μ©νλ μ¬λ¬ μμκ° μμΌλ©΄ λͺ¨λ°μΌ Safari λ° Chromeμ΄ νλ¦Ών΄μ§λλ€.
νλμ¨μ΄ κ°μμ μ¬μ©νλ μ¬λ¬ κ³μΈ΅μ μΌλ°μ μΈ λ¬Έμ μΈ κ² κ°μ΅λλ€.
μλ§λ μ΄κ²μ λ¬Έμ λ₯Ό ν΄κ²°νλ λ° λμμ΄ λ κ²μ λλ€.
λ€λ₯Έ ν΄κ²° λ°©λ²μ μ°Ύμμ΅λλ€!
Panzoomμμ μ΄ μ½λλ₯Ό μ¬μ©νμ¬ κ°μ λ‘ λ€μ 그릴 μ μμ΅λλ€.
μ΄κ²μ λ·λ©΄ κ°μμ±κ³Ό λμΌν©λλ€. μ΄κΈ°μ΄μ§λ§ λ§€μ° λ립λλ€. λ°λΌμ ν¨μλ₯Ό 100msλ‘ λλ°μ΄μ€ν μ μμ΅λλ€. μ΄λ₯Ό μν΄ lodashλ₯Ό μ¬μ©νμ§λ§ μλμΌλ‘ λλ°μ΄μ€ν μ μμ΅λλ€.
μ½λλ λ€μκ³Ό κ°μ΅λλ€.
$('#panzoom-el').on('panzoomzoom', _.debounce( function () {
this.style.display='none';
this.offsetHeight;
this.style.display='';
}, 100));
λμμ΄ λμκΈ°λ₯Ό λ°λλλ€ :)
κ°μ₯ μ μ©ν λκΈ
λͺ¨λ°μΌμμλ μλνλ νΈλ¦μ μ°Ύμμ΅λλ€(ν¬λ‘¬ λ° κΈ°λ³Έ Android λΈλΌμ°μ ).
λ€μ μ€μ CSSμ λ£μΌμμμ€.
.ν¬μ€ {
-webkit-backface-visibility: μ΄κΈ° !μ€μ;
-webkit-transform-origin: 50% 50%;
}