javascript是一種廣泛應(yīng)用于互聯(lián)網(wǎng)頁(yè)面中的編程語(yǔ)言,其強(qiáng)大的互動(dòng)性和實(shí)用性使得它成為互聯(lián)網(wǎng)開發(fā)中必不可少的一環(huán)。鼠標(biāo)框選是javascript中一個(gè)常用的功能,它能夠?qū)τ脩暨M(jìn)行較好的交互,并且能夠?qū)崿F(xiàn)不同的交互目的。
function drawRect(startX, startY, width, height){ ctx.beginPath(); ctx.rect(startX, startY, width, height); ctx.closePath(); ctx.stroke(); } const canvas = document.querySelector("#canvas"); const ctx = canvas.getContext("2d"); let startX = 0; let startY = 0; let isDrawing = false; canvas.addEventListener('mousedown', (e) => { isDrawing = true; startX = e.offsetX; startY = e.offsetY; }); canvas.addEventListener('mousemove', (e) => { if(!isDrawing) return; let currentX = e.offsetX; let currentY = e.offsetY; let width = currentX - startX; let height = currentY - startY; drawRect(startX, startY, width, height); }); canvas.addEventListener('mouseup', () => { isDrawing = false; });
以上的代碼實(shí)現(xiàn)了鼠標(biāo)在canvas上進(jìn)行框選的功能。這里通過(guò)mousedown事件獲取到用戶鼠標(biāo)按下的坐標(biāo),通過(guò)mousemove事件和mouseup來(lái)獲取框選的寬度和高度,然后通過(guò)canvas的API繪制矩形,從而實(shí)現(xiàn)了鼠標(biāo)框選的功能。
鼠標(biāo)框選在一些地圖上也常用到,通過(guò)鼠標(biāo)在地圖上框選所選區(qū)域,可以對(duì)該區(qū)域進(jìn)行縮放或者其他的地圖操作。比如下面的代碼示例,展示了如何在地圖上進(jìn)行鼠標(biāo)框選,從而進(jìn)行縮放操作:
const map = L.map('map').setView([51.505, -0.09], 13); L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 19 }).addTo(map); let isDrag = false; let southWest; let northEast; map.on('mousedown', (e) => { isDrag = true; southWest = e.latlng; }); map.on('mousemove', (e) => { if(!isDrag) return; northEast = e.latlng; if(!map.dragging.isActive()){ L.rectangle([southWest, northEast], {color: "#ff7800", weight: 1}).addTo(map); } }); map.on('mouseup', () => { isDrag = false; if(southWest && northEast){ let bounds = L.latLngBounds(southWest, northEast); map.fitBounds(bounds); } });
在上述代碼中,通過(guò)監(jiān)聽地圖的mousedown和mousemove事件,獲取到用戶開始框選和框選中鼠標(biāo)位置的坐標(biāo),從而通過(guò)L.rectangle方法繪制一個(gè)矩形,然后在mouseup事件中對(duì)選中的范圍進(jìn)行操作。比如,這里通過(guò)fitBounds方法對(duì)選取范圍進(jìn)行縮放處理,實(shí)現(xiàn)了框選縮放地圖的交互。
鼠標(biāo)框選是javascript常見的一個(gè)功能,在互聯(lián)網(wǎng)頁(yè)面中常常應(yīng)用,可以帶來(lái)良好的交互體驗(yàn),并且還可以通過(guò)該功能實(shí)現(xiàn)不同的交互操作。因此,了解如何實(shí)現(xiàn)鼠標(biāo)框選是javascript學(xué)習(xí)中必不可少的一個(gè)環(huán)節(jié)。