今天玩一些css3,主要是过渡。
我想要实现的是,在悬停一个li元素时,背景将从左到右填充不同的颜色,理想情况下我希望能够填充一半或一直..我已经开始一个jsfiddle
我是否需要使用该属性
-vendor-prefix transition
有人可以给我一些关于实现这一点的指示。
由于
答案 0 :(得分:96)
您需要在此处执行的操作是使用线性渐变作为背景并为背景位置设置动画。在代码中:
使用线性渐变(50%红色,50%蓝色)并告诉浏览器背景是元素宽度的2倍(宽度:200%,高度:100%),然后告诉它将背景置于左侧
background: linear-gradient(to right, red 50%, blue 50%);
background-size: 200% 100%;
background-position:left bottom;
悬停时,将背景位置更改为right bottom
,使用transition:all 2s ease;
,位置会逐渐变化(linear
强硬时更好)
background-position:right bottom;
至于-vendor-prefix',请参阅您的问题的评论
额外 如果你想在颜色上有一个“过渡”,你可以使它的宽度为300%并使转换开始于34%(略高于1/3)并以65%结束(略低于2/3) )。
background: linear-gradient(to right, red 34%, blue 65%);
background-size: 300% 100%;
答案 1 :(得分:18)
悬停时的单个css代码可以解决这个问题:
box-shadow: inset 100px 0 0 0 #e0e0e0;
可以在我的小提琴中找到完整的演示:
答案 2 :(得分:1)
如果你像我一样,需要在改变背景颜色的同时改变文本本身的颜色,请检查我的解决方案。
创建步骤:
这个解决方案很好:
这个解决方案不太好:
检查笔---> https://codepen.io/nikolamitic/pen/vpNoNq
<button class="btn btn--animation-from-right">
<span class="btn__text-static">Cover left</span>
<div class="btn__text-dynamic">
<span class="btn__text-dynamic-inner">Cover left</span>
</div>
</button>
.btn {
padding: 10px 20px;
position: relative;
border: 2px solid #222;
color: #fff;
background-color: #222;
position: relative;
overflow: hidden;
cursor: pointer;
text-transform: uppercase;
font-family: monospace;
letter-spacing: -1px;
[class^="btn__text"] {
font-size: 24px;
}
.btn__text-dynamic,
.btn__text-dynamic-inner {
display: flex;
justify-content: center;
align-items: center;
position: absolute;
top:0;
left:0;
right:0;
bottom:0;
z-index: 2;
transition: all ease 0.5s;
}
.btn__text-dynamic {
background-color: #fff;
color: #222;
overflow: hidden;
}
&:hover {
.btn__text-dynamic {
transform: translateX(-100%);
}
.btn__text-dynamic-inner {
transform: translateX(100%);
}
}
}
.btn--animation-from-right {
&:hover {
.btn__text-dynamic {
transform: translateX(100%);
}
.btn__text-dynamic-inner {
transform: translateX(-100%);
}
}
}
如果要为左侧设置动画,可以删除.btn - animation-from-right修饰符。