1. ホーム
  2. javascript

[解決済み] 純粋なJavascriptを使用してHTML要素のサイズを変更するには?

2023-02-15 15:28:20

質問

のようなHTML要素を作るにはどうしたらよいのでしょうか? <div> または <p> タグの要素をクリックすると、jQueryライブラリやその他のライブラリではなく、純粋なJavaScriptを使ってサイズを変更することができます。

どのように解決するのですか?

私は本当にいくつかの種類のライブラリを使用することをお勧めしますが、あなたはそれを求めた、あなたはそれを取得します。

var p = document.querySelector('p'); // element to make resizable

p.addEventListener('click', function init() {
    p.removeEventListener('click', init, false);
    p.className = p.className + ' resizable';
    var resizer = document.createElement('div');
    resizer.className = 'resizer';
    p.appendChild(resizer);
    resizer.addEventListener('mousedown', initDrag, false);
}, false);

var startX, startY, startWidth, startHeight;

function initDrag(e) {
   startX = e.clientX;
   startY = e.clientY;
   startWidth = parseInt(document.defaultView.getComputedStyle(p).width, 10);
   startHeight = parseInt(document.defaultView.getComputedStyle(p).height, 10);
   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) {
    document.documentElement.removeEventListener('mousemove', doDrag, false);
    document.documentElement.removeEventListener('mouseup', stopDrag, false);
}

デモ

これはすべてのブラウザで動作しない可能性があることを忘れないでください(Firefoxでのみテスト、IE <9 では間違いなく動作しません)。