需要帮助改善扑克牌悬停效果
Need help to improve playing cards hover effect
当一张卡片穿过另一张卡片时,我遇到了一些关于 z-index 动画的问题。
您有改进动画并使其更流畅的想法吗?
这里是动画:https://jsfiddle.net/mk51gs1t/1/
谢谢
css :
.card {
display : inline-block;
position : relative;
width : 100px;
height : 200px;
margin-left : -20px;
margin-right : -20px;
/*background-color : #999999;*/
background-image:linear-gradient(90deg, #999999, #666666);
border : 3px solid #2e6da4;
z-index: 1;
transition: all .2s ease-in-out;
}
.center{
transform: scale(1.2, 1.2);
}
.previous{
transform: scale(1.1, 1.1);
}
.next{
transform: scale(1.1, 1.1);
}
js :
$(function () {
zIndexManager($('.center'), $('.previous'), $('.next'));
var cardDOMArray = $('.card');
//cardDOMArray.hover(cardEnter, cardLeave);
cardDOMArray.hover(function (e) {
cardEnter(e.currentTarget, cardDOMArray);
}, function (e) {
cardLeave(e.currentTarget, cardDOMArray);
});
cardDOMArray.on("click", function (e) {
drawCard(e.currentTarget);
});
});
function cardEnter(e, cardDOMArray) {
// console.log("enter");
// console.log(getPreviousCard($(e)));
// console.log(getNextCard($(e)));
$('.card').removeClass("center previous next");
getPreviousCard($(e)).addClass("previous");
getNextCard($(e)).addClass("next");
$(e).addClass("center");
zIndexManager($(e), getPreviousCard($(e)), getNextCard($(e)));
}
function cardLeave(e, cardDOMArray) {
$('.card').removeClass("center previous next").css('zIndex', '1');
}
function getPreviousCard(card) {
if (card.prev().length > 0) {
return card.prev();
}
else {
return $();
}
}
function getNextCard(card) {
if (card.next().length > 0) {
return card.next();
}
else {
return $();
}
}
function zIndexManager(centerCard, previousCard, nextCard) {
var allNextCard = centerCard.nextAll();
//console.log(allNextCard );
var allNextCardLength = allNextCard.length;
//console.log(allNextCardLength);
if (allNextCardLength > 0) {
centerCard.css('zIndex', allNextCardLength);
allNextCard.each(function () {
$(this).css('zIndex', --allNextCardLength);
});
}
}
html :
<div class="container">
<h1>carte</h1>
<div class="container cardWidget">
<div class="card ">
</div>
<div class="card ">
</div>
<div class="card">
</div>
<div class="card ">
</div>
<div class="card previous">
</div>
<div class="card center">
</div>
<div class="card next">
</div>
<div class="card">
</div>
<div class="card">
</div>
<div class="card">
</div>
<div class="card">
</div>
</div>
</div>
不对 z-index 变化进行动画处理怎么样:
transition: transform .25s ease-out;
我觉得很漂亮很光滑。
$(function () {
zIndexManager($('.center'), $('.previous'), $('.next'))
var cardDOMArray = $('.card');
//cardDOMArray.hover(cardEnter, cardLeave);
cardDOMArray.hover(function (e) {
cardEnter(e.currentTarget, cardDOMArray);
}, function (e) {
cardLeave(e.currentTarget, cardDOMArray);
});
cardDOMArray.on("click", function (e) {
drawCard(e.currentTarget);
});
});
function cardEnter(e, cardDOMArray) {
// console.log("enter");
// console.log(getPreviousCard($(e)));
// console.log(getNextCard($(e)));
zIndexManager($(e), getPreviousCard($(e)), getNextCard($(e)));
$('.card').removeClass("center previous next");
getPreviousCard($(e)).addClass("previous");
getNextCard($(e)).addClass("next");
$(e).addClass("center");
}
function cardLeave(e, cardDOMArray) {
$('.card').removeClass("center previous next").css('zIndex', '1');
}
function getPreviousCard(card) {
if (card.prev().length > 0) {
return card.prev();
}
else {
return $();
}
}
function getNextCard(card) {
if (card.next().length > 0) {
return card.next();
}
else {
return $();
}
}
function zIndexManager(centerCard, previousCard, nextCard) {
var allNextCard = centerCard.nextAll();
//console.log(allNextCard );
var allNextCardLength = allNextCard.length;
//console.log(allNextCardLength);
if (allNextCardLength > 0) {
centerCard.css('zIndex', allNextCardLength);
allNextCard.each(function () {
$(this).css('zIndex', --allNextCardLength);
});
}
}
.card {
display : inline-block;
position : relative;
width : 100px;
height : 200px;
margin-left : -20px;
margin-right : -20px;
/*background-color : #999999;*/
background-image:linear-gradient(90deg, #999999, #666666);
border : 3px solid #2e6da4;
z-index: 1;
transition: transform .25s ease-out;
}
.center{
transform: scale(1.2, 1.2);
}
.previous{
transform: scale(1.1, 1.1);
}
.next{
transform: scale(1.1, 1.1);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
<h1>carte</h1>
<div class="container cardWidget">
<div class="card ">
</div>
<div class="card ">
</div>
<div class="card">
</div>
<div class="card ">
</div>
<div class="card previous">
</div>
<div class="card center">
</div>
<div class="card next">
</div>
<div class="card">
</div>
<div class="card">
</div>
<div class="card">
</div>
<div class="card">
</div>
</div>
</div>
当一张卡片穿过另一张卡片时,我遇到了一些关于 z-index 动画的问题。 您有改进动画并使其更流畅的想法吗? 这里是动画:https://jsfiddle.net/mk51gs1t/1/ 谢谢
css :
.card {
display : inline-block;
position : relative;
width : 100px;
height : 200px;
margin-left : -20px;
margin-right : -20px;
/*background-color : #999999;*/
background-image:linear-gradient(90deg, #999999, #666666);
border : 3px solid #2e6da4;
z-index: 1;
transition: all .2s ease-in-out;
}
.center{
transform: scale(1.2, 1.2);
}
.previous{
transform: scale(1.1, 1.1);
}
.next{
transform: scale(1.1, 1.1);
}
js :
$(function () {
zIndexManager($('.center'), $('.previous'), $('.next'));
var cardDOMArray = $('.card');
//cardDOMArray.hover(cardEnter, cardLeave);
cardDOMArray.hover(function (e) {
cardEnter(e.currentTarget, cardDOMArray);
}, function (e) {
cardLeave(e.currentTarget, cardDOMArray);
});
cardDOMArray.on("click", function (e) {
drawCard(e.currentTarget);
});
});
function cardEnter(e, cardDOMArray) {
// console.log("enter");
// console.log(getPreviousCard($(e)));
// console.log(getNextCard($(e)));
$('.card').removeClass("center previous next");
getPreviousCard($(e)).addClass("previous");
getNextCard($(e)).addClass("next");
$(e).addClass("center");
zIndexManager($(e), getPreviousCard($(e)), getNextCard($(e)));
}
function cardLeave(e, cardDOMArray) {
$('.card').removeClass("center previous next").css('zIndex', '1');
}
function getPreviousCard(card) {
if (card.prev().length > 0) {
return card.prev();
}
else {
return $();
}
}
function getNextCard(card) {
if (card.next().length > 0) {
return card.next();
}
else {
return $();
}
}
function zIndexManager(centerCard, previousCard, nextCard) {
var allNextCard = centerCard.nextAll();
//console.log(allNextCard );
var allNextCardLength = allNextCard.length;
//console.log(allNextCardLength);
if (allNextCardLength > 0) {
centerCard.css('zIndex', allNextCardLength);
allNextCard.each(function () {
$(this).css('zIndex', --allNextCardLength);
});
}
}
html :
<div class="container">
<h1>carte</h1>
<div class="container cardWidget">
<div class="card ">
</div>
<div class="card ">
</div>
<div class="card">
</div>
<div class="card ">
</div>
<div class="card previous">
</div>
<div class="card center">
</div>
<div class="card next">
</div>
<div class="card">
</div>
<div class="card">
</div>
<div class="card">
</div>
<div class="card">
</div>
</div>
</div>
不对 z-index 变化进行动画处理怎么样:
transition: transform .25s ease-out;
我觉得很漂亮很光滑。
$(function () {
zIndexManager($('.center'), $('.previous'), $('.next'))
var cardDOMArray = $('.card');
//cardDOMArray.hover(cardEnter, cardLeave);
cardDOMArray.hover(function (e) {
cardEnter(e.currentTarget, cardDOMArray);
}, function (e) {
cardLeave(e.currentTarget, cardDOMArray);
});
cardDOMArray.on("click", function (e) {
drawCard(e.currentTarget);
});
});
function cardEnter(e, cardDOMArray) {
// console.log("enter");
// console.log(getPreviousCard($(e)));
// console.log(getNextCard($(e)));
zIndexManager($(e), getPreviousCard($(e)), getNextCard($(e)));
$('.card').removeClass("center previous next");
getPreviousCard($(e)).addClass("previous");
getNextCard($(e)).addClass("next");
$(e).addClass("center");
}
function cardLeave(e, cardDOMArray) {
$('.card').removeClass("center previous next").css('zIndex', '1');
}
function getPreviousCard(card) {
if (card.prev().length > 0) {
return card.prev();
}
else {
return $();
}
}
function getNextCard(card) {
if (card.next().length > 0) {
return card.next();
}
else {
return $();
}
}
function zIndexManager(centerCard, previousCard, nextCard) {
var allNextCard = centerCard.nextAll();
//console.log(allNextCard );
var allNextCardLength = allNextCard.length;
//console.log(allNextCardLength);
if (allNextCardLength > 0) {
centerCard.css('zIndex', allNextCardLength);
allNextCard.each(function () {
$(this).css('zIndex', --allNextCardLength);
});
}
}
.card {
display : inline-block;
position : relative;
width : 100px;
height : 200px;
margin-left : -20px;
margin-right : -20px;
/*background-color : #999999;*/
background-image:linear-gradient(90deg, #999999, #666666);
border : 3px solid #2e6da4;
z-index: 1;
transition: transform .25s ease-out;
}
.center{
transform: scale(1.2, 1.2);
}
.previous{
transform: scale(1.1, 1.1);
}
.next{
transform: scale(1.1, 1.1);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
<h1>carte</h1>
<div class="container cardWidget">
<div class="card ">
</div>
<div class="card ">
</div>
<div class="card">
</div>
<div class="card ">
</div>
<div class="card previous">
</div>
<div class="card center">
</div>
<div class="card next">
</div>
<div class="card">
</div>
<div class="card">
</div>
<div class="card">
</div>
<div class="card">
</div>
</div>
</div>