Panzoom: Pandzoom ์ฝ˜ํ…์ธ  ์Šคํฌ๋กค

์— ๋งŒ๋“  2015๋…„ 10์›” 05์ผ  ยท  2์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: timmywil/panzoom

์•ˆ๋…•ํ•˜์„ธ์š”,

Pandzoom ์ฝ˜ํ…์ธ ๋ฅผ ์Šค์™€์ดํ”„ํ•˜์—ฌ ์Šคํฌ๋กคํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋‚ด ํ”„๋กœ์ ํŠธ์—์„œ ์ด๋ฏธ์ง€๋Š” ๋„ˆ๋น„๊ฐ€ ๋ทฐํฌํŠธ์˜ 100%์ด๊ณ  ๋‚ด ์ธ์น˜๊ฐ€ pandzoom ์ด๋ฏธ์ง€์— ์žˆ์„ ๋•Œ ๋…ผ๋ฆฌ๊ฐ€ ์ถ”๊ฐ€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Pandzoom์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์Šคํฌ๋กค์„ ํ—ˆ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ํŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์˜ˆ: ์ด๋ฏธ์ง€๊ฐ€ ์•„์ง ํ™•๋Œ€/์ถ•์†Œ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ? ์ด๋ฏธ์ง€์— ํ™•๋Œ€/์ถ•์†Œ๊ฐ€ ์žˆ์ง€๋งŒ ์ด๋ฏธ์ง€๊ฐ€ ์ƒ์œ„ ์ปจํ…Œ์ด๋„ˆ์˜ ์ œํ•œ์— ์˜ํ•ด ์ฐจ๋‹จ๋  ๋•Œ? ์Šคํฌ๋กค์ด ์•„๋ž˜์—์„œ ์œ„๋กœ ํŠน์ • ๋น„์œจ์„ ๋‚˜ํƒ€๋‚ผ ๋•Œ ?

๊ฐ์‚ฌ ํ•ด์š”

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‚˜์—๊ฒŒ๋„ ์ด๋Ÿฐ ํ–‰๋™์ด ํ•„์š”ํ–ˆ๋‹ค. ์ด๋ฏธ minScale์— ์žˆ์„ ๋•Œ ํŒฌ์คŒ์„ ์Šค์™€์ดํ”„ํ•˜๊ณ  ํ™•๋Œ€ํ•  ๋•Œ๋งŒ ํŒจ๋‹์„ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” "panOnlyWhenZoomed" ํ”Œ๋ž˜๊ทธ๊ฐ€ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋™์•ˆ panzoom์ด minScale ๊ฐ’์„ ์ดˆ๊ณผํ•˜์—ฌ ํ™•์žฅ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๊ทธ์— ๋”ฐ๋ผ disablePan์„ ์„ค์ •ํ•˜์—ฌ ๊ธฐ๋Šฅ์„ ์•„์ฃผ ์‰ฝ๊ฒŒ ์†์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. iOS ๊ธฐ๊ธฐ์™€ ๋‹ค์–‘ํ•œ Chrome ๊ธฐ๊ธฐ ์—๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ ํ…Œ์ŠคํŠธํ–ˆ๋Š”๋ฐ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

// Set up panzoom container, making sure to disablePan by default
var $panzoom = $(".panzoom").panzoom({
    minScale: 1,
    disablePan: true
});

// After a zoom event, check zoomed state and reset the disablePanning
$panzoom.on('panzoomzoom', function(e, panzoom, scale, options) {
    $panzoom.panzoom("option", "disablePan", 
        Math.abs(scale - options.minScale) < 0.0001);
});

ํŽธ์ง‘: ๋น„ํ„ฐ์น˜์—์„œ ๋‘˜ ๋‹ค ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋„๋ก ์•ฝ๊ฐ„ ์กฐ์ •ํ•˜๊ณ  ์กฐ๊ธˆ ๋” ์Šฌ๋ฆผํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  2 ๋Œ“๊ธ€

๋‚˜์—๊ฒŒ๋„ ์ด๋Ÿฐ ํ–‰๋™์ด ํ•„์š”ํ–ˆ๋‹ค. ์ด๋ฏธ minScale์— ์žˆ์„ ๋•Œ ํŒฌ์คŒ์„ ์Šค์™€์ดํ”„ํ•˜๊ณ  ํ™•๋Œ€ํ•  ๋•Œ๋งŒ ํŒจ๋‹์„ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” "panOnlyWhenZoomed" ํ”Œ๋ž˜๊ทธ๊ฐ€ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋™์•ˆ panzoom์ด minScale ๊ฐ’์„ ์ดˆ๊ณผํ•˜์—ฌ ํ™•์žฅ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๊ทธ์— ๋”ฐ๋ผ disablePan์„ ์„ค์ •ํ•˜์—ฌ ๊ธฐ๋Šฅ์„ ์•„์ฃผ ์‰ฝ๊ฒŒ ์†์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. iOS ๊ธฐ๊ธฐ์™€ ๋‹ค์–‘ํ•œ Chrome ๊ธฐ๊ธฐ ์—๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ ํ…Œ์ŠคํŠธํ–ˆ๋Š”๋ฐ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

// Set up panzoom container, making sure to disablePan by default
var $panzoom = $(".panzoom").panzoom({
    minScale: 1,
    disablePan: true
});

// After a zoom event, check zoomed state and reset the disablePanning
$panzoom.on('panzoomzoom', function(e, panzoom, scale, options) {
    $panzoom.panzoom("option", "disablePan", 
        Math.abs(scale - options.minScale) < 0.0001);
});

ํŽธ์ง‘: ๋น„ํ„ฐ์น˜์—์„œ ๋‘˜ ๋‹ค ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋„๋ก ์•ฝ๊ฐ„ ์กฐ์ •ํ•˜๊ณ  ์กฐ๊ธˆ ๋” ์Šฌ๋ฆผํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๋™์˜ํ•œ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด lib๊ฐ€ ๋‹ค์†Œ ์“ธ๋ชจ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ๋” ์ž‘์€ ํ„ฐ์น˜ ์žฅ์น˜์—์„œ๋Š” ๋”์šฑ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.
์ด๋ฏธ์ง€๊ฐ€ ํ•ด๋‹น ์žฅ์น˜์—์„œ 100% ๋„ˆ๋น„๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์€ ๋งค์šฐ ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ฉฐ ๋ชจ๋“  ์ตœ์ข… ์‚ฌ์šฉ์ž๊ฐ€ ์ด ์ด๋ฏธ์ง€ ํŒฌ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ์บก์ฒ˜๋˜๋Š” ๊ฒฝ์šฐ ํŽ˜์ด์ง€๋ฅผ ๋– ๋‚  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰