[英]jQuery scale on click addClass
我正在尝试获取.post__input--not-set
为在点击时scale
。 试图添加一个没有运气的CSS转换。
$(".post__input--not-set").hide(); $('.btn-class').click(function() { $(this).toggleClass("new"); $(this).find('i').toggleClass('fa-check fa-pencil-alt'); $(".post__input--not-set").addClass('animate').toggle(); });
.btn-class { color: white; padding: 30px; background: blue; } .new { background-color: green } .post__input--not-set { transform: scale(0); transition: all 5s; height: 50px; width: 50px; border-radius: 50%; background-color: red } .post__input--not-set.animate { transform: scale(1); }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link href="https://use.fontawesome.com/releases/v5.0.10/css/all.css" rel="stylesheet" /> <a class="btn-class"><i class="fa fa-pencil-alt"></i></a> <div class="post__input--not-set"></div> <div class="post__input--not-set"></div> <div class="post__input--not-set"></div>
您可以从js中删除$(".post__input--not-set").hide()
,然后仅切换transform
。 这对您有用吗?
$('.btn-class').click(function() { $(this).toggleClass("new"); $(this).find('i').toggleClass('fa-check fa-pencil-alt'); $(".post__input--not-set").toggleClass('animate'); });
.btn-class { color: white; padding: 30px; background: blue; } .new { background-color: green } .post__input--not-set { transform: scale(0); transition: transform 5s; height: 50px; width: 50px; border-radius: 50%; background-color: red } .post__input--not-set.animate { transform: scale(1); }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link href="https://use.fontawesome.com/releases/v5.0.10/css/all.css" rel="stylesheet" /> <a class="btn-class"><i class="fa fa-pencil-alt"></i></a> <div class="post__input--not-set"></div> <div class="post__input--not-set"></div> <div class="post__input--not-set"></div>
如果元素最初消失,则过渡无效。 display: none
样式实际上会删除元素。 因此,当您切换display
属性时,它们已经使用animate
类重新创建,并且没有任何变化可以动画。
使它起作用的唯一(但错误的)方法是首先显示元素,强制重排(强制浏览器在没有animate
类的情况下绘制它们),然后设置animate
类。
正确的方法是
visibility
或opacity
隐藏它们),但这并不总是可能的,因为它们会在那里占据空间并接收事件, 有趣的讨论: 使用纯CSS的点击时CSS3过渡
可能的解决方案:
$(".post__input--not-set").hide(); $('.btn-class').click(function() { $(this).toggleClass("new"); $(this).find('i').toggleClass('fa-check fa-pencil-alt'); $(".post__input--not-set").addClass('animate').toggle(); if ($(".post__input--not-set").css("transform") == 'none') { $(".post__input--not-set").css("transform", "scale(0)"); } else { $(".post__input--not-set").css("transform", "scale(1)"); } });
.btn-class { color: white; padding: 30px; background: blue; } .new { background-color: green } .post__input--not-set { transform: scale(0); transition: transform 5s; height: 50px; width: 50px; border-radius: 50%; background-color: red }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link href="https://use.fontawesome.com/releases/v5.0.10/css/all.css" rel="stylesheet" /> <a class="btn-class"><i class="fa fa-pencil-alt"></i></a> <div class="post__input--not-set"></div> <div class="post__input--not-set"></div> <div class="post__input--not-set"></div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.