【发布时间】:2017-05-06 16:47:51
【问题描述】:
我有一个通过调整线性梯度和高度来实现的对角边的元素 - 在两种不同的状态下。现在我尝试在这些状态之间切换并使红色三角形平滑过渡,使其看起来像跷跷板:-) 问题是,从一种状态到另一种状态它会改变方向并且跳跃,我没有找到一种方法来流畅地动画它..有没有办法使用纯CSS来实现我想要的东西,例如使用过渡?
let btn = document.getElementsByTagName('button')[0];
let stage = document.getElementById('stage');
btn.addEventListener('click', function() {
stage.classList.toggle('fixie');
});
body,
ul {
padding: 0;
margin: 0;
}
#stage {
width: 100%;
height: 14em;
background: pink;
padding: 0;
border: 1px solid blue;
}
#stage::before {
display: block;
position: relative;
width: 100%;
height: 100%;
/*as high as #stage*/
opacity: 0.4;
content: '';
z-index: 1;
background: linear-gradient(to left bottom, red 50%, pink 50%);
/*transition: height 4s;*/
/*transition: linear-gradient 4s 8s;*/
}
#stage.fixie::before {
height: 30%;
background: linear-gradient(to right bottom, red 50%, pink 50%);
}
<div id="stage"></div>
<button>animate gradient</button>
这是我的FIDDLE
【问题讨论】:
-
您是否已经检查过 CSS3 和关键帧?
-
你想让它看起来像你的小提琴,而不是通过 JS 触发吗?或者它到底应该是什么样子?
-
抱歉不清楚:换类的JS没问题,2个状态没问题,但是从一个状态到另一个状态的过渡应该是平滑的,所以红色三角形应该表现就像一个“跷跷板” ..从有课到没有课的样子:-/我希望这更容易理解?
-
遗憾的是,无法使用
transition属性(background-image或linear-gradient)为背景设置动画,因此您必须“作弊”
标签: javascript html css animation css-transitions