使用 jquery 操作单个 CSS 转换效果
Manipulate individual CSS transform effects with jquery
如果我的元素定义了多个 CSS 变形效果,如下所示:
transform: translate(400px, 40px) scale(1);
但是我只想操作其中之一,例如在不影响当前比例值的情况下更改其平移坐标,我是否可以使用 JQuery 以一种不会强迫我解析整个字符串的方式做到这一点?
"class"属性已经可以做类似的事情了 - 我可以使用hasClass,addClass,removeClass,JQuery将为我进行解析。
我可以用转换 CSS pProperty 做类似的事情吗?
更好的方法是混合CSS
和JQuery
。我创建了一个只使用CSS
的小提琴,JavaScript
在那里你可以看到使用类就足够了。我建议你这样做JQuery
因为你做更复杂的事情。对于复杂的效果,只有CSS
是不够的,只有JQuery
不是有效的编码。
.HTML:
<div id="d1"></div>
.CSS:
div{
position:relative;
float:left;
height:100px;
width:100px;
background-color:red;
}
.scale{
-webkit-transform: scale(0.5); /* Chrome, Safari, Opera */
transform: scale(0.5);
}
.translate{
-webkit-transform: translate(100px,0); /* Chrome, Safari, Opera */
transform: translate(100px,0);
}
.scale.translate{
-webkit-transform: translate(50px,0) scale(0.5); /* Chrome, Safari, Opera */
transform: translate(50px,0) scale(0.5);
}
.JS:
var d1 = document.getElementById("d1");
d1.setAttribute("class","scale");
setTimeout(function(){
d1.setAttribute("class","translate");
},3000);
setTimeout(function(){
d1.setAttribute("class","translate scale");
},6000);
如果你已经在使用 jQuery,
那么你不妨使用 jQuery 默认附带的大量动画功能,而忘记 css 属性本身。
也就是说,如果您执意要控制各个转换属性,那么最好的选择是使用嵌套元素,其中每个元素都应用了一个转换规则:
function translateDiv(){
var translateDiv = document.getElementById('translate');
if( translateDiv.classList.contains( 'translate' ) ){
translateDiv.classList.remove( 'translate' );
} else {
translateDiv.classList.add( 'translate' );
}
}
function rotateDiv(){
var rotateDiv = document.getElementById('rotate');
if( rotateDiv.classList.contains( 'rotate' ) ){
rotateDiv.classList.remove( 'rotate' );
} else {
rotateDiv.classList.add( 'rotate' );
}
}
function scaleDiv(){
var scaleDiv = document.getElementById('scale');
if( scaleDiv.classList.contains( 'scale' ) ){
scaleDiv.classList.remove( 'scale' );
} else {
scaleDiv.classList.add( 'scale' );
}
}
div {
transition: all 0.3s;
}
#block {
width: 200px;
height: 150px;
border-radius: 15px;
background-color: #FBCE0C;
pointer-events: none;
}
.scale {
transform: scale(0.5);
}
.rotate {
transform: rotate(45deg);
}
.translate {
transform: translate(120px, 200px);
}
#btns {
z-index: 5;
}
<div id="btns">
<button onclick='translateDiv()'>Translate</button>
<button onclick='rotateDiv()'>Rotate</button>
<button onclick='scaleDiv()'>Scale</button>
</div>
<div id="translate">
<div id="rotate">
<div id="scale">
<div id="block">
</div>
</div>
</div>
</div>
相关文章:
- Css转换没有响应
- 使用CSS在选项卡更改时平滑颜色转换
- 将webkit从CSS转换为JavaScript
- css转换高度不起作用
- CSS中的转换似乎失败了,原因是什么
- 鼠标悬停时的css转换
- CSS转换立即进入最终状态
- 选项卡式元素上的动画CSS转换
- 通过JS添加类时应用CSS转换
- 更好的解决方案HTML元素幻灯片从右侧CSS转换
- CSS将百分比转换为像素
- 使用JavaScript触发CSS转换
- 使用带有javascript的span创建CSS转换
- jQuery addClass中断延迟,或者jQuery延迟中断CSS转换,或者两者兼而有之
- 输入占位符文本转换CSS样式
- 从核心转换css捕获核心转换
- 在悬停时保留和添加新的转换 (CSS/LESS)
- JavaScript或jQuery根据屏幕大小转换css文件
- 转换css系统颜色十六进制与javascript
- 转换 CSS 样式对 标记没有影响