首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从左到右填充背景颜色CSS

从左到右填充背景颜色CSS
EN

Stack Overflow用户
提问于 2013-06-20 19:09:28
回答 3查看 169.2K关注 0票数 66

今天我在使用一些css3,主要是转换。

我想要实现的是,当鼠标悬停在安莉元素上时,背景将从左到右填充不同的颜色,理想情况下,我希望能够填充一半或所有的颜色。我已经创建了一个jsfiddle

我是否需要使用属性

代码语言:javascript
复制
-vendor-prefix transition 

有人能给我一些实现这一点的建议吗?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-20 19:28:37

你需要做的事情是使用线性渐变作为背景,并动画背景位置。在代码中:

使用线性渐变(50%红色,50%蓝色),告诉浏览器背景比元素的宽度大2倍(宽度:200%,高度:100%),然后告诉它将背景定位在左侧。

代码语言:javascript
复制
background: linear-gradient(to right, red 50%, blue 50%);
background-size: 200% 100%;
background-position:left bottom;

在悬停时,将背景位置更改为right bottom,并使用transition:all 2s ease;,位置将逐渐改变(使用linear tough会更好)背景位置:右下角;

http://jsfiddle.net/75Umu/3/

至于-prefix前缀,请参阅您问题的注释

如果你希望在颜色上有一个“过渡”,你可以使它的宽度为300%,并使过渡开始于34% (略高于1/3),结束于65% (略小于2/3)。

代码语言:javascript
复制
background: linear-gradient(to right, red 34%, blue 65%);
background-size: 300% 100%;

演示:

代码语言:javascript
复制
div {
    font: 22px Arial;
    display: inline-block;
    padding: 1em 2em;
    text-align: center;
    color: white;
    background: red; /* default color */

    /* "to left" / "to right" - affects initial color */
    background: linear-gradient(to left, salmon 50%, lightblue 50%) right;
    background-size: 200%;
    transition: .5s ease-out;
}
div:hover {
    background-position: left;
}
代码语言:javascript
复制
<div>Hover me</div>

票数 158
EN

Stack Overflow用户

发布于 2016-04-21 21:18:57

在hover上只需一段css代码就可以做到这一点:box-shadow: inset 100px 0 0 0 #e0e0e0;

完整的演示可以在我的小提琴中找到:

https://jsfiddle.net/shuvamallick/3o0h5oka/

票数 35
EN

Stack Overflow用户

发布于 2017-12-18 01:10:02

如果你像我一样,需要改变文本本身的颜色,同时填充背景颜色,请检查我的解决方案。

创建步骤:

  1. 有两个文本,一个是悬停时的静态颜色,另一个是默认状态颜色,您将在悬停时移动
  2. ,同时移动非静态文本的包装,同时将包装的内部文本移动到相反方向。
  3. 确保在需要

的地方添加溢出隐藏

这个解决方案的好处是:

仅使用transform

  • Button (或您正在应用动画的元素)的
  • Support IE9的宽度是流动的,因此此处没有使用固定值

这个解决方案不是很好:

  • 一个非常混乱的标记,可以通过使用伪元素来解决,而att(data)?
  • There是动画中的一些小故障,当一个以上的按钮相邻时,也许它可以很容易地解决,但我还没有花太多时间来研究。

检查笔-> https://codepen.io/nikolamitic/pen/vpNoNq

代码语言:javascript
复制
<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修改器。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17212094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档