第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

svg 上的矩陣變換:意外行為

svg 上的矩陣變換:意外行為

瀟湘沐 2021-12-02 16:55:37
我有一個 div,其中包含一個 300x300 像素的 SVG 圖像和一個 1000x1000 的視圖框。該圖像描述了一個位于紅色矩形之上的藍(lán)色矩形。當(dāng)我移動鼠標(biāo)時,一個圓圈跟隨圖像內(nèi)的鼠標(biāo)位置:一切都很完美,除了當(dāng)我應(yīng)用變換改變透視和旋轉(zhuǎn)時,鼠標(biāo)指針和圓心不再匹配:代碼在這里:$(function() {  $('#image').mousemove(function(event) {    var svg = document.querySelector('svg');    var pt = svg.createSVGPoint();    pt.x = event.clientX;    pt.y = event.clientY;    pt = pt.matrixTransform(svg.getScreenCTM().inverse());    overlay = document.getElementById('overlay');    $('#overlay').html(      "<circle cx='" + pt.x + "' cy='" + pt.y + "' r='50' stroke='#8f00ff' fill='transparent' stroke-width='10' /></svg>"    );    refresh = $("#overlay").html();    $("#overlay").html( refresh )  });});function Transform() {  $('#image').css({    transformOrigin: '500px 500px',    transform: 'perspective(100px) rotateX(5deg)'  });}<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script><div id='image' tabindex='0' >  <svg id='svgmap' width='300' height='300' xmlns='http://www.w3.org/2000/svg' version='1.1' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 1000 1000'>    <rect x='0' y='0' width='1000' height='1000' fill='red' />    <rect x='250' y='250' width='500' height='500' stroke='yellow' fill='blue' stroke-width='10' />    <g id='overlay'></g>  </svg></div><button onclick='Transform()'>Transform</button>我的目標(biāo)是保持紫色圓圈中心和鼠標(biāo)指針之間的匹配,即使對對象應(yīng)用了變換。有沒有辦法做到這一點?
查看完整描述

2 回答

?
牛魔王的故事

TA貢獻1830條經(jīng)驗 獲得超3個贊

在您的代碼中#image是一個 div。為了使其工作,您需要將轉(zhuǎn)換應(yīng)用于 svg 元素 (#svgmap),并且轉(zhuǎn)換必須是 svg 轉(zhuǎn)換。


$(function() {

  $('#svgmap').mousemove(function(event) {

    var svg = document.querySelector('svg');

    var pt = svg.createSVGPoint();

    pt.x = event.clientX;

    pt.y = event.clientY;

    pt = pt.matrixTransform(svg.getScreenCTM().inverse());

    overlay = document.getElementById('overlay');

    $('#overlay').html(

      "<circle cx='" + pt.x + "' cy='" + pt.y + "' r='50' stroke='#8f00ff' fill='transparent' stroke-width='10' /></svg>"

    );

    refresh = $("#layer_wafer").html();

    $("#layer_wafer").html( refresh )

  });

});

function Transform() {

  svgmap.setAttributeNS(null,"transform", "skewX(-20) translate(100)");

}

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

<div id='image' tabindex='0' >

  <svg id='svgmap' width='300' height='300' xmlns='http://www.w3.org/2000/svg' version='1.1' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 1000 1000' transform="">

    <rect x='0' y='0' width='1000' height='1000' fill='red' />

    

    <rect x='250' y='250' width='500' height='500' stroke='yellow' fill='blue' stroke-width='10' />

    <g id='overlay'></g>

  </svg>

</div>

<button onclick='Transform()'>Transform</button>

我知道您需要 3D css 轉(zhuǎn)換,但這(至少現(xiàn)在)不起作用。

這是一篇文章,您可以在其中閱讀有關(guān) svg 中 3d 變換的更多信息:https : //oreillymedia.github.io/Using_SVG/extras/ch11-3d.html在文章中您可以閱讀:本節(jié)中描述的所有 3D 變換函數(shù)應(yīng)該被視為“未來”


查看完整回答
反對 回復(fù) 2021-12-02
?
鳳凰求蠱

TA貢獻1825條經(jīng)驗 獲得超4個贊

我已經(jīng)以最丑陋的方式解決了這個問題。只需將鼠標(biāo)光標(biāo)隱藏在 div 上即可。丑陋的。但有效。


$(function() {

  $('#image').mousemove(function(event) {

    var svg = document.querySelector('svg');

    var pt = svg.createSVGPoint();

    pt.x = event.clientX;

    pt.y = event.clientY;

    pt = pt.matrixTransform(svg.getScreenCTM().inverse());

    overlay = document.getElementById('overlay');

    $('#overlay').html(

      "<circle cx='" + pt.x + "' cy='" + pt.y + "' r='50' stroke='#8f00ff' fill='transparent' stroke-width='10' /></svg>"

    );

    refresh = $("#overlay").html();

    $("#overlay").html( refresh )

  });

});

function Transform() {

  $('#image').css({

    transformOrigin: '500px 500px',

    transform: 'perspective(100px) rotateX(5deg)'

  });

}

div#image {

  cursor: none;

}

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

<div id='image' tabindex='0' >

  <svg id='svgmap' width='300' height='300' xmlns='http://www.w3.org/2000/svg' version='1.1' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 1000 1000'>

    <rect x='0' y='0' width='1000' height='1000' fill='red' />

    <rect x='250' y='250' width='500' height='500' stroke='yellow' fill='blue' stroke-width='10' />

    <g id='overlay'></g>

  </svg>

</div>

<button onclick='Transform()'>Transform</button>


我必須做一些優(yōu)化以減少 DIV 上方和任何其他頁面元素之間的鼠標(biāo)光標(biāo)位置差距,但這對我來說是可以接受的。


查看完整回答
反對 回復(fù) 2021-12-02
  • 2 回答
  • 0 關(guān)注
  • 312 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號

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