發(fā)布時間:2024-07-24 13:42:22 瀏覽量:607次
大家好,我是前端西瓜哥。
畫布縮放是圖形編輯器的基礎(chǔ)功能,作用是放大圖形編輯細(xì)節(jié),縮小總覽全局。我們來看看 Figma 是如何做畫布縮放設(shè)計的。
使用 zoom 表示畫布的縮放比。
比如 zoom 為 1(即 100%),表示畫布不進行縮放,為原始大小。zoom 為 2 表示畫布放大一倍。zoom 為 0.5 表示畫布縮小一倍。
放大畫布對應(yīng) zoomIn 方法,zoom 值是變大的。
zoomIn 的 in 是指將鏡頭靠近場景的意思,近所以圖形大,所謂 “近大遠(yuǎn)小”。
縮放畫布則是 zoomOut,zoom 值變小。鏡頭遠(yuǎn)離場景,因此圖形會變小。
通常我們會在 UI 界面上提供畫布縮放和放大按鈕,點擊它們會 以畫布中心為縮放中心,進行縮放。
快捷鍵為:
我發(fā)現(xiàn) Figma 實際上直接用 + 或 - 就能縮放了,但它在 UI 上并沒有提示。
Figma 在這種情況下會讓 zoom 值落在幾個特定的值上。
const zoomLevels = [ 0.015625, 0.03125, 0.0625, 0.125, 0.25, 0.5, 1, 2, 4, 8, 16, 32, 64, 128, 256]
你應(yīng)該看出規(guī)律了,這是一個等比數(shù)列,公比為 2,其中的中間值是 1(即 100%)。同時 256 和 0.015625 也是 zoom 的最大最小值。
比如當(dāng)前 zoom 為 198%,放大會變成 200%,縮小會變?yōu)?100%。
下面是找到排序數(shù)組中,在目標(biāo)值兩邊的數(shù)組元素的方法。
const getNearestVals = (arr, target) => { let left = 0; let right = arr.length - 1; while (left <= right) { const mid = Math.floor((left + right) / 2); if (arr[mid] === target) { right = mid - 1; left = mid + 1; break; } else if (arr[mid] < target) { left = mid + 1; } else { right = mid - 1; } } if (right < 0) right = 0; if (left >= arr.length) left = arr.length - 1; return [arr[right], arr[left]];};getNearestVals(zoomLevels, 1.98) // [1, 2]
這樣用戶就能快速、大幅度地更改 zoom,快速抵達最值,查看跨度較大的不同 zoom 的設(shè)計稿效果。
你可能發(fā)現(xiàn) UI 上的 zoom 好像對不上,比如應(yīng)該是 0.125 的,但 UI 上卻顯示為 13%。這里其實并沒有在數(shù)據(jù)層做舍入,而是在 UI 顯示上做了四舍五入。
如果想拿到真實 zoom 值,可通過 Figma 的插件 API 的 figma.viewport.zoom 屬性獲取。
但有些情況下,用戶會覺得這樣縮放幅度可能有點大了,需要幅度更低的縮放,這時候可以用鼠標(biāo)滾輪縮放。
Figma 也支持通過滾輪的方式縮放,且會 基于縮放比率 zoomRatio,并以光標(biāo)位置為縮放中心進行縮放。
按住 Ctrl 或 Command,滾輪向前為放大,向后為縮小。
// 縮放比率const zoomRatio = 1.23// 放大畫布zoom * zoomRatio// 縮小畫布zoom / zoomRatio
zoomRatio 不是寫死的,和 鼠標(biāo)滾輪靈敏度 有關(guān)。
(下面是 Windows 設(shè)置鼠標(biāo)滾輪靈敏度的方式)
鼠標(biāo)滾輪靈敏度會反應(yīng)到 WheelEvent 滾輪事件對象的 deltaY 上,靈敏度越高,每次滾動的 deltaY 就越大。
我們需要定義一個函數(shù):傳入 deltaY,拿到一個縮放比率 zoomRatio。
這個函數(shù)的返回值在 0 到 2 之間,且為對數(shù)關(guān)系,即 x 越大,y 的值越平緩。
順帶一提,mac 觸控板不是常規(guī)輸入設(shè)備,所以不在滾輪事件標(biāo)準(zhǔn)之內(nèi)。
但觸控板的縮放操作會倍瀏覽器里轉(zhuǎn)換為 ctrl + 滾輪 的滾輪行為,也是可以拿到 deltaY 的,但值非常小,所以你會看到它的縮放幅度是滾輪是不一樣的。
Figma 也支持其他的縮放操作。
Figma 沒有做專門的縮放畫布工具,應(yīng)該是認(rèn)為沒有必要的,比較多余,用快捷鍵就夠了。
偏好設(shè)置有一個 Invert zoom direction(翻轉(zhuǎn)縮放畫布方向)勾選項。勾選后,向前滾輪反而會減小 zoom 值。
我是前端西瓜哥,歡迎關(guān)注我,學(xué)習(xí)更多圖形編輯器知識。
熱門資訊
1. 華為手機神奇“AI修圖”功能,一鍵消除衣服!原圖變身大V領(lǐng)深V!
最近華為手機Pura70推出的“AI修圖”功能引發(fā)熱議,通過簡單操作可以讓照片中的人物換裝。想了解更多這款神奇功能的使用方法嗎?點擊查看!
近年來,人工智能逐漸走入公眾視野,其中的AI圖像生成技術(shù)尤為引人注目。只需在特定軟件中輸入關(guān)鍵詞描述語以及上傳參考圖就能智能高效生成符合要求的...
想將照片變成漫畫效果?這篇文章分享了4個方法,包括Photoshop、聰明靈犀、VanceAI Toongineer、醒圖,簡單操作就能實現(xiàn),快來嘗試一下吧!
4. 一款免費無限制的AI視頻生成工具火了!國內(nèi)無障礙訪問!附教程
人人都可以動手制作AI視頻! 打開網(wǎng)址https://pixverse.ai/,用郵箱注冊后,點擊右上角Create,就可以開始創(chuàng)作了。 PixVerse目前有文案生成視頻,和圖片生...
5. 趕緊收藏好!這4個完全免費的AI視頻制作網(wǎng)站和工具
以下是一些免費的AI視頻制作網(wǎng)站或工具,幫助您制作各種類型的視頻。 1. Lumen5:Lumen5是一個基于AI的視頻制作工具,可將文本轉(zhuǎn)換為視頻。 用戶可以使...
6. 零基礎(chǔ)10分鐘生成漫畫,教大家如何用AI生成自己的漫畫
接下來,我將親自引導(dǎo)你,使用AI工具,創(chuàng)作一本既有趣又能帶來盈利的漫畫。我們將一起探索如何利用這個工具,發(fā)揮你的創(chuàng)意,制作出令人驚嘆的漫畫作品。讓...
就能快速生成一幅極具藝術(shù)效果的作品,讓現(xiàn)實中不懂繪畫的人也能參與其中創(chuàng)作!真的超贊噠~趣趣分享幾款超厲害的AI繪畫軟件,提供詳細(xì)操作!有需要的快來...
8. AI視頻制作神器Viggle:讓靜態(tài)人物動起來,創(chuàng)意無限!
Viggle AI是一款免費制作視頻的AI工具,能讓靜態(tài)人物圖片動起來,快來了解Viggle AI的功能和優(yōu)勢吧!
9. 10個建筑AI工具,從設(shè)計到施工全覆蓋!肯定有你從來沒聽過的
講述了建筑業(yè)比較著名的AI公司小庫科技做出的探索,在這兒就不多說了。今天,我們試著在規(guī)劃設(shè)計、建筑方案設(shè)計、住宅設(shè)計、管道設(shè)計、出渲染圖、3D掃...
10. Logo Diffusion——基于sd繪畫模型的AI LOGO 生成器
這下LOGO設(shè)計徹底不用求人了。接下來詳細(xì)演示一遍操作流程首先進入Logo D... 想學(xué)習(xí)更多AI技能,比如說關(guān)于怎么樣利用AI來提高生產(chǎn)效率、還能做什么AI...
最新文章
同學(xué)您好!