Heim >Web-Frontend >CSS-Tutorial >Wie kann ich skalierbare HTML-Elemente nur mit reinem JavaScript erstellen?
Anpassbare HTML-Elemente mit reinem JavaScript erstellen
Problem:
Wie können wir HTML erstellen? Elemente wie
Beim Klicken in der Größe veränderbar, nur mit reinem JavaScript?
Lösung:
Um die Größe eines HTML-Elements veränderbar zu machen, können wir einen benutzerdefinierten Resizer erstellen, der seine Größe manipuliert:
// Element to make resizable var p = document.querySelector('p'); // Initialize resizing on click p.addEventListener('click', function() { // Remove click event listener and append resizer p.removeEventListener('click', init, false); p.className += ' resizable'; var resizer = document.createElement('div'); resizer.className = 'resizer'; p.appendChild(resizer); // Attach mouse event listeners for resizing resizer.addEventListener('mousedown', initDrag, false); });
Größenänderungsfunktion:
Wir verfolgen Mausbewegungen und Passen Sie die Größe des Elements an:
// Store initial values and mouse coordinates var startX, startY, startWidth, startHeight; function initDrag(e) { startX = e.clientX; startY = e.clientY; startWidth = parseInt(window.getComputedStyle(p).width, 10); startHeight = parseInt(window.getComputedStyle(p).height, 10); // Listen for mouse movement and update element's dimensions document.documentElement.addEventListener('mousemove', doDrag, false); document.documentElement.addEventListener('mouseup', stopDrag, false); } function doDrag(e) { p.style.width = (startWidth + e.clientX - startX) + 'px'; p.style.height = (startHeight + e.clientY - startY) + 'px'; } function stopDrag(e) { // Remove mouse event listeners document.documentElement.removeEventListener('mousemove', doDrag, false); document.documentElement.removeEventListener('mouseup', stopDrag, false); }
Das obige ist der detaillierte Inhalt vonWie kann ich skalierbare HTML-Elemente nur mit reinem JavaScript erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!