4 输入 & 动态变化变换
4 input & Dynamically change transform
我正在尝试制作一个变换生成器。
用户会不断更新这个,但没有成功。因为当我使用 jquery element.css('transform', .... 它会将其更改为单例。但是,我无法更改其他元素。
HTML
<p>ROTATE X</p>
<input class="inputrange" name="transformRx" type="range">
<p>ROTATE Y</p>
<input class="inputrange" name="transformRy" type="range">
<p>SKEW Y</p>
<input class="inputrange" name="transformSy" type="range">
<p>SKEW X</p>
<input class="inputrange" name="transformSx" type="range">
<!--2-->
<p>ROTATE X</p>
<input class="inputrange2" name="transformRx" type="range">
<p>ROTATE Y</p>
<input class="inputrange2" name="transformRy" type="range">
<p>SKEW Y</p>
<input class="inputrange2" name="transformSy" type="range">
<p>SKEW X</p>
<input class="inputrange2" name="transformSx" type="range">
<div id="inputrange" class="ht" name="draggable">
<div id="inner-inputrange"></div>
</div>
<div id="inputrange2" class="ht" name="draggable">
<div id="inner-inputrange2"></div>
</div>
JS
$('input[type="range"]').on('input change', function(){
switch (this.name){
case "transformRx":
calculateMatrix(this.className, this.value, null, null, null)
break;
case "transformRy":
calculateMatrix(this.className, null, this.value, null, null)
break;
case "transformSy":
calculateMatrix(this.className, null, null, this.value, null)
break;
case "transformSx":
calculateMatrix(this.className, null, null, null, this.value)
break;
}})
function calculateMatrix(elName, rotateX, rotateY, skewY, skewX) {
if (elName != "undefined") {
$('#'+elName).css('transform', ''rotateX('+rotateX+'deg) rotateY('+rotateY+'deg) skewX('+skewX+'deg) skewY('+skewY+'deg)')
}
}
我只是想问一个问题,不得不对 post 个问题进行大量编辑。
可能有些事情我忘记了。
这就是你想要的?
您不能在一个元素中添加多个转换,因此您必须在一个字符串中创建所有转换。
var transform = [];
function updateCss(This) {
// console.log(This);
const type = $(This).data("type");
const end = $(This).data("end");
const value = $(This).val();
let transform_string = "";
transform[type] = `${type}(${value}${end})`;
Object.keys(transform).forEach((item, index, array) => {
transform_string += transform[item];
});
$('#inputrange').css("transform",transform_string);
}
#inputrange{
width: 10rem;
height: 5rem;
background: blue;
}
#inner-inputrange{
width: 5rem;
height: 100%;
background: purple;
}
#inputrange2{
margin-top: 5rem;
width: 10rem;
height: 5rem;
background: blue;
}
#inner-inputrange2{
width: 5rem;
height: 100%;
background: purple;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p>ROTATE X</p>
<input class="inputrange"data-type="rotateX" data-end="deg" onchange="updateCss(this)" name="transformRx" type="range">
<p>ROTATE Y</p>
<input class="inputrange" data-type="rotateY" name="rotateY" data-end="deg"
onchange="updateCss(this)" type="range">
<p>SKEW Y</p>
<input class="inputrange"
data-type="skewY"
data-end="deg"
onchange="updateCss(this)"
name="transformSy" type="range">
<p>SKEW X</p>
<input class="inputrange" name="transformSx"
data-type="skewX"
data-end="deg"
onchange="updateCss(this)"
type="range">
<div id="inputrange" class="ht" name="draggable">
<div id="inner-inputrange"></div>
</div>
我正在尝试制作一个变换生成器。
用户会不断更新这个,但没有成功。因为当我使用 jquery element.css('transform', .... 它会将其更改为单例。但是,我无法更改其他元素。
HTML
<p>ROTATE X</p>
<input class="inputrange" name="transformRx" type="range">
<p>ROTATE Y</p>
<input class="inputrange" name="transformRy" type="range">
<p>SKEW Y</p>
<input class="inputrange" name="transformSy" type="range">
<p>SKEW X</p>
<input class="inputrange" name="transformSx" type="range">
<!--2-->
<p>ROTATE X</p>
<input class="inputrange2" name="transformRx" type="range">
<p>ROTATE Y</p>
<input class="inputrange2" name="transformRy" type="range">
<p>SKEW Y</p>
<input class="inputrange2" name="transformSy" type="range">
<p>SKEW X</p>
<input class="inputrange2" name="transformSx" type="range">
<div id="inputrange" class="ht" name="draggable">
<div id="inner-inputrange"></div>
</div>
<div id="inputrange2" class="ht" name="draggable">
<div id="inner-inputrange2"></div>
</div>
JS
$('input[type="range"]').on('input change', function(){
switch (this.name){
case "transformRx":
calculateMatrix(this.className, this.value, null, null, null)
break;
case "transformRy":
calculateMatrix(this.className, null, this.value, null, null)
break;
case "transformSy":
calculateMatrix(this.className, null, null, this.value, null)
break;
case "transformSx":
calculateMatrix(this.className, null, null, null, this.value)
break;
}})
function calculateMatrix(elName, rotateX, rotateY, skewY, skewX) {
if (elName != "undefined") {
$('#'+elName).css('transform', ''rotateX('+rotateX+'deg) rotateY('+rotateY+'deg) skewX('+skewX+'deg) skewY('+skewY+'deg)')
}
}
我只是想问一个问题,不得不对 post 个问题进行大量编辑。
可能有些事情我忘记了。
这就是你想要的?
您不能在一个元素中添加多个转换,因此您必须在一个字符串中创建所有转换。
var transform = [];
function updateCss(This) {
// console.log(This);
const type = $(This).data("type");
const end = $(This).data("end");
const value = $(This).val();
let transform_string = "";
transform[type] = `${type}(${value}${end})`;
Object.keys(transform).forEach((item, index, array) => {
transform_string += transform[item];
});
$('#inputrange').css("transform",transform_string);
}
#inputrange{
width: 10rem;
height: 5rem;
background: blue;
}
#inner-inputrange{
width: 5rem;
height: 100%;
background: purple;
}
#inputrange2{
margin-top: 5rem;
width: 10rem;
height: 5rem;
background: blue;
}
#inner-inputrange2{
width: 5rem;
height: 100%;
background: purple;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p>ROTATE X</p>
<input class="inputrange"data-type="rotateX" data-end="deg" onchange="updateCss(this)" name="transformRx" type="range">
<p>ROTATE Y</p>
<input class="inputrange" data-type="rotateY" name="rotateY" data-end="deg"
onchange="updateCss(this)" type="range">
<p>SKEW Y</p>
<input class="inputrange"
data-type="skewY"
data-end="deg"
onchange="updateCss(this)"
name="transformSy" type="range">
<p>SKEW X</p>
<input class="inputrange" name="transformSx"
data-type="skewX"
data-end="deg"
onchange="updateCss(this)"
type="range">
<div id="inputrange" class="ht" name="draggable">
<div id="inner-inputrange"></div>
</div>