最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何限制div內(nèi)的圖片拖動(dòng)?

如何限制div內(nèi)的圖片拖動(dòng)?

偶然的你 2024-01-22 16:56:45
我附上了片段,其中我有一個(gè)在 div 內(nèi)可拖動(dòng)和縮放的圖像。但是有一個(gè)問(wèn)題,當(dāng)從左向右移動(dòng)圖像時(shí),如果圖像的角與父級(jí)的 X 和 Y 的角相交,則圖像應(yīng)該無(wú)法移動(dòng)。我實(shí)際上想知道圖像的角何時(shí)與父級(jí)相交div 角,因?yàn)槲也幌朐跐M(mǎn)足此條件時(shí)允許拖動(dòng)。拖動(dòng)圖像時(shí),背景紅色不應(yīng)可見(jiàn)。window.repositionImage = function(event){var element = document.getElementById('img');    element.addEventListener('mousedown', function(e){        e.stopPropagation();    element.style.cursor = "grabbing";    if (e.target != element) return;        var offsetX = e.pageX - element.offsetLeft;    var offsetY = e.pageY - element.offsetTop;      var move = function(e){     element.style.left = e.pageX - offsetX + "px";     element.style.top = e.pageY - offsetY + "px";    }        var stop = function(){      element.style.cursor = "default";      document.removeEventListener("mousemove", move);      document.removeEventListener("mouseup", stop);    }            document.addEventListener("mousemove", move);    document.addEventListener("mouseup", stop);   }) }window.panChangeHandler = function(e){  var element = document.getElementById('img');   if (e.target.value == 0) {      element.style.left = "0px";      element.style.top = "0px";   }  img.style.transform = `scale(1.${e.target.value})`;}<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script><div class='item'>  <span class='slider'>    <input type='range' aria-orientation="vertical"      value="0"  min="0" max="9"  step="1"                       oninput="panChangeHandler(event)"    />  </span>  <img id='img' src="https://images.unsplash.com/photo-1494548162494-384bba4ab999?ixlib=rb-1.2.1&w=1000&q=80" alt='image' onmouseover="repositionImage(event)" /></div>
查看完整描述

3 回答

?
慕妹3146593

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊

您可以嘗試一個(gè)簡(jiǎn)單的css修復(fù)方法,但我不確定它的跨瀏覽器兼容性。將.item img位置更改為sticky。


window.repositionImage = function(event){

var element = document.getElementById('img');

  

  element.addEventListener('mousedown', function(e){

    

    e.stopPropagation();

    element.style.cursor = "grabbing";

    if (e.target != element) return;

    

    var offsetX = e.pageX - element.offsetLeft;

    var offsetY = e.pageY - element.offsetTop;

  

    var move = function(e){

     element.style.left = e.pageX - offsetX + "px";

     element.style.top = e.pageY - offsetY + "px";

    }

    

    var stop = function(){

      element.style.cursor = "default";

      document.removeEventListener("mousemove", move);

      document.removeEventListener("mouseup", stop);

    }

    

    

    document.addEventListener("mousemove", move);

    document.addEventListener("mouseup", stop);

   }) 

}


window.panChangeHandler = function(e){

  var element = document.getElementById('img');

  img.style.transform = `scale(1.${e.target.value})`;

}

document.getElementById("img").disabled = true;

.item {

  border: 1px solid;

  background: red;

  width: 300px;

  height: 300px;

  overflow: hidden;

  position:relative;

}


.item img {

  position: sticky;

  width: 100%;

  height: 100%;

  -webkit-user-drag: none;

  left:0;

  top:0;

}


.slider {


  z-index: 9;

  position: absolute;

  left: 0;

  top: 0;

  margin-left: -20px;

  margin-top: 70px;

  writing-mode: bt-lr; /* IE */

  -webkit-appearance: slider-vertical; /* WebKit */

  transform: rotateZ(270deg);

}


.slider input {

  width: 80px;

}

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


<div class='item'>

  <span class='slider'>

    <input type='range' aria-orientation="vertical"

      value="0"  min="0" max="9"  step="1"                       oninput="panChangeHandler(event)"

    />

  </span>

  <img id='img' src="https://images.unsplash.com/photo-1494548162494-384bba4ab999?ixlib=rb-1.2.1&w=1000&q=80" alt='image' onmouseover="repositionImage(event)" />

</div>


查看完整回答
反對(duì) 回復(fù) 2024-01-22
?
SMILET

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊

我設(shè)法解決了這個(gè)問(wèn)題:


function parseComplexStyleProperty(str) {

        var regex = /(\w+)\((.+?)\)/g,

            transform = {},

            match;


        while ((match = regex.exec(str))) transform[match[1]] = match[2];


        return transform;

    };


window.repositionImage = function(event){

var element = document.getElementById('img');

  

  element.addEventListener('mousedown', function(e){

    

    e.stopPropagation();

    element.style.cursor = "grabbing";

    if (e.target != element) return;

    

    var offsetX = e.pageX - element.offsetLeft;

    var offsetY = e.pageY - element.offsetTop;

      var x = 0;

    var y = 0;

    

    var move = function(e){

         x = e.pageX - offsetX;

      y = e.pageY - offsetY;

     element.style.left = e.pageX - offsetX + "px";

     element.style.top = e.pageY - offsetY + "px";

    }

    

    var stop = function(){

      element.style.cursor = "default";

          var t = parseComplexStyleProperty(element.style.transform);

      

       if (!Object.keys(t).length) {

          element.style.left = "0px";

          element.style.top = "0px";

        }

  else {

          var imageWidth = element.clientWidth * parseFloat(t.scale);

          var imageHeight =

              element.clientHeight * parseFloat(t.scale);

          var pointToSubX = Math.trunc(

            (imageWidth - parent.clientWidth) / 2

          );

          var pointToSubY = Math.trunc(

            (imageHeight - parent.clientHeight) / 2

          );

          

          if (x > pointToSubX || x < -pointToSubX) {

            if (x > pointToSubX)

              element.style.left = pointToSubX + "px";

            else element.style.left = -pointToSubX + "px";

          }

          

          if (y > pointToSubY || y < -pointToSubY) {

            if (y > pointToSubY)

              element.style.top = pointToSubY + "px";

            else element.style.top = -pointToSubY + "px";

          }

      

      document.removeEventListener("mousemove", move);

      document.removeEventListener("mouseup", stop);

    }

    }

    

    

    document.addEventListener("mousemove", move);

    document.addEventListener("mouseup", stop);

   }) 

}


window.panChangeHandler = function(e){

  var element = document.getElementById('img');

  img.style.transform = `scale(1.${e.target.value})`;

}

document.getElementById("img").disabled = true;

.item {

     margin-right: 1px;

    height: 200px;

    background: white;

    overflow: hidden;

  position: relative;

}


.item img {

transform: scale(1);

position: relative;

    background-color: #eee;

  width: 100%;

  height: 100%;

  -webkit-user-drag: none;

  left:0;

  top:0;

}


.slider {


  z-index: 9;

  position: absolute;

  left: 0;

  top: 0;

  margin-left: -20px;

  margin-top: 70px;

  writing-mode: bt-lr; /* IE */

  -webkit-appearance: slider-vertical; /* WebKit */

  transform: rotateZ(270deg);

}


.slider input {

  width: 80px;

}

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


<div class='item'>

  <span class='slider'>

    <input type='range' aria-orientation="vertical"

      value="0"  min="0" max="9"  step="1"                       oninput="panChangeHandler(event)"

    />

  </span>

  <img id='img' src="https://images.unsplash.com/photo-1494548162494-384bba4ab999?ixlib=rb-1.2.1&w=1000&q=80" alt='image' 

       onmouseover="repositionImage(event)" />

</div>


查看完整回答
反對(duì) 回復(fù) 2024-01-22
?
慕桂英546537

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊

查看

if (e.target.tagName == "DIV" ) return;

發(fā)生掉落事件時(shí)


查看完整回答
反對(duì) 回復(fù) 2024-01-22
  • 3 回答
  • 0 關(guān)注
  • 286 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)