Dav*_*nes 21 css css3 css-transitions
我试图通过使用CSS转换来改变悬停元素的背景颜色.我想通过从底部向上滚动来做到这一点.我可以淡化使用它的背景,但我希望它向上滑动:
-webkit-transition: background-color 0.5s linear;
-moz-transition: background-color 0.5s linear;
-o-transition: background-color 0.5s linear;
transition: background-color 0.5s linear;
Run Code Online (Sandbox Code Playgroud)
另外一个想法是,在应用背景的情况下向上滚动一个单独的元素会更好吗?
Sam*_*son 70
为了将背景颜色向上滑动,您需要使用背景图像或某种渐变,同时逐渐调整background-position
:
.box {
width: 200px; height: 100px;
background-size: 100% 200%;
background-image: linear-gradient(to bottom, red 50%, black 50%);
transition: background-position 1s;
}
.box:hover {
background-position: 0 -100%;
}
Run Code Online (Sandbox Code Playgroud)
你可以在这里看到这个演示:http://jsfiddle.net/as5ZU/
@Sampson 答案的扩展,我将考虑更容易理解的更友好的值:
.box {
width: 100px;
height: 100px;
display:inline-block;
background-size: 200% 200%;
transition: background-position 1s;
}
.to-top{
background-image: linear-gradient(to top, red 50%, black 0);
background-position: top;
}
.to-top:hover {
background-position: bottom;
}
.to-bottom{
background-image: linear-gradient(to bottom, red 50%, black 0);
background-position: bottom;
}
.to-bottom:hover {
background-position: top;
}
.to-left{
background-image: linear-gradient(to left, red 50%, black 0);
background-position: left;
}
.to-left:hover {
background-position: right;
}
.to-right{
background-image: linear-gradient(to right, red 50%, black 0);
background-position: right;
}
.to-right:hover {
background-position: left;
}
Run Code Online (Sandbox Code Playgroud)
<div class="box to-top"></div>
<div class="box to-bottom"></div>
<div class="box to-left"></div>
<div class="box to-right"></div>
Run Code Online (Sandbox Code Playgroud)
这里有更多花哨的过渡:
.box {
width: 100px;
height: 100px;
display:inline-block;
transition: 1s;
}
.to-center{
background:
linear-gradient(black,black) no-repeat,
red;
background-size: 100% 100%;
background-position:center;
}
.to-center:hover {
background-size: 0% 100%; /* Or 100% 0% */
}
.from-center{
background:
linear-gradient(red,red) no-repeat,
black;
background-size: 0% 100%; /* Or 100% 0% */
background-position:center;
}
.from-center:hover {
background-size: 100% 100%;
}
.diagonal-right{
background-image:linear-gradient(to bottom right,red 49.5%,black 50%);
background-size: 200% 200%;
background-position:bottom right;
}
.diagonal-right:hover {
background-position:top left;
}
.diagonal-left{
background-image:linear-gradient(to bottom left,red 49.5%,black 50%);
background-size: 200% 200%;
background-position:bottom left;
}
.diagonal-left:hover {
background-position:top right;
}
Run Code Online (Sandbox Code Playgroud)
<div class="box to-center"></div>
<div class="box from-center"></div>
<div class="box diagonal-right"></div>
<div class="box diagonal-left"></div>
Run Code Online (Sandbox Code Playgroud)
相关问题以获取有关如何background-position
结合使用的更多详细信息background-size
:在线性渐变上使用具有背景位置的百分比值
使用圆形的其他想法:
.box {
width: 100px;
height: 100px;
display:inline-block;
transition: 1s;
}
.to-center{
background:
radial-gradient(farthest-side,black 98%,transparent) no-repeat,
red;
background-size: 150% 150%;
background-position:center;
}
.to-center:hover {
background-size: 0% 0%;
}
.from-center{
background:
radial-gradient(farthest-side,red 98%,transparent) no-repeat,
black;
background-size: 0% 0%;
background-position:center;
}
.from-center:hover {
background-size: 150% 150%;
}
.diagonal-right{
background:radial-gradient(farthest-side,red 48%,transparent 50%) no-repeat,
black;
background-size: 300% 300%;
background-position:bottom right;
}
.diagonal-right:hover {
background-position:center;
}
.to-left{
background:radial-gradient(farthest-side,red 48%,transparent 50%) no-repeat,
black;
background-size: 400% 400%;
background-position:left;
}
.to-left:hover {
background-position:center;
}
Run Code Online (Sandbox Code Playgroud)
<div class="box to-center"></div>
<div class="box from-center"></div>
<div class="box diagonal-right"></div>
<div class="box to-left"></div>
Run Code Online (Sandbox Code Playgroud)