JSFiddle - React, Tailwind, and code Playground
by soulwire
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Transform3d</title>
<style>
html,body{margin: 0; padding: 0; user-select: none;}
.page{
display: flex;
align-items: center;
justify-content: center;
width: 100vw;
height: 100vh;
}
.box{
padding: 16px;
width: 302px;
height: 400px;
overflow: hidden;
background-color: white;
border: 1px solid #ccc;
}
img{
width: 100%;
}
.form-item{
margin-bottom: 10px;
}
.submit{
text-align: right;
}
.handle{
position: absolute;
left: 0;
top: 0;
z-index: 1;
width: 20px;
height: 20px;
border-radius: 100%;
background-color: rgba(255, 0, 0, .5);
}
</style>
<script src="./numeric.min.js"></script>
</head>
<body>
<div class="page">
<div class="box" id="box">
<form action="#">
<div class="form-item">
<label for="name">
姓名
<input type="text" id="name">
</label>
</div>
<div class="form-item">
<label for="address">
地址
<textarea id="address" cols="30" rows="10"></textarea>
</label>
</div>
<div class="form-item">
<label for="range">
年龄
<input type="range" min="10" max="100" step="1" value="18" id="range">
</label>
</div>
<div class="submit">
<button>submit</button>
</div>
</form>
</div>
<div class="handle"></div>
<div class="handle"></div>
<div class="handle"></div>
<div class="handle"></div>
</div>
<script>
function init(){
const box = document.querySelector('#box');
const handles = document.querySelectorAll('.handle')
function getFromPoints(points){
// 映射前四个点坐标
const result...