【问题标题】:Gooey effect messed up after transition ends过渡结束后粘糊糊的效果搞砸了
【发布时间】:2018-06-03 13:18:12
【问题描述】:

我正在尝试创建一种具有粘性效果的单选按钮。 过渡发生时效果看起来不错,但一旦过渡结束,效果就混乱了(颜色不能很好地融合,边缘会发光)。

我一直试图找出问题所在,但没有成功。

视频:https://vimeo.com/248225026

代码如下:

$('.register-option').click(function() {
  $('.register-option').removeClass('selected');
  $(this).addClass('selected');
});
body {
  background-color: rgb(158, 158, 158);
}

.register-choose {
  -webkit-filter: url(#goo);
  filter: url(#goo);
}

.register-choose .register-option {
  position: relative;
  width: 100px;
  height: 40px;
  border-radius: 120px;
  display: inline-block;
  color: #000;
  font-family: Tahoma;
  line-height: 40px;
  font-size: 12px;
  background-color: #fff;
  text-align: center;
  -webkit-transition: all 600ms cubic-bezier(0.165, 0.84, 0.44, 1);
  transition: all 600ms cubic-bezier(0.165, 0.84, 0.44, 1);
  background-repeat: no-repeat;
}

.register-choose .register-option.selected {
  -webkit-transform: scale(1.1);
  transform: scale(1.1);
}

.register-choose .register-option:first-of-type.selected {
  background-color: rgb(0, 181, 255);
}

.register-choose .register-option:last-of-type.selected {
  background-color: rgb(255, 118, 217);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="register-choose">
                <span class="register-option selected">Male</span>
<span class="register-option">Female</span>
</span>

<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
		<defs>
			<filter id="goo">
				<feGaussianBlur in="SourceGraphic" stdDeviation="10" result="blur" />
				<feColorMatrix in="blur" mode="matrix" values="1 0 0 0 0  0 1 0 0 0  0 0 1 0 0  0 0 0 16 -6" result="goo" />
				<feComposite in="SourceGraphic" in2="goo" operator="atop" />
			</filter>
		</defs>
	</svg>

谢谢。

【问题讨论】:

  • 您在哪个浏览器中看到了问题? Chrome 看起来不像我的视频。
  • stdDeviation 从 10 减少到 5 左右可以防止 Firefox 中的“发光”顶部和底部边框。
  • dom_ahdigital 在 Chrome 中。也在 Chrome 移动版中。降低stdDeviation效果会变弱,难道没有别的解决办法吗?

标签: jquery css svg-filters


【解决方案1】:

这是一个神奇的咒语,似乎可以解决 Firefox 的视觉错误。我不知道它为什么起作用,但它似乎踢了 Firefox 过滤器代码的正确部分。

<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
        <defs>
            <filter id="goo" >
                <feGaussianBlur in="SourceGraphic" stdDeviation="10" result="blur" />
                <feColorMatrix in="blur" mode="matrix" values="1 0 0 0 0  0 1 0 0 0  0 0 1 0 0  0 0 0 16 -6"/>

    <feComponentTransfer result="goo">
      <feFuncA type="table" tableValues="0 .2 .4 .6 1 1"/>
     </feComponentTransfer>
            <<feComposite in="SourceGraphic" in2="goo" operator="atop" />
            </filter>
        </defs>
    </svg>

【讨论】:

  • 它在 Chrome 甚至 Firefox 中看起来仍然一样。
  • 这适用于 Windows 上最新的 Chrome/FF。您可以添加您的浏览器版本和操作系统吗?
  • Chrome 63、Windows 10
  • 为我工作。您可能启用了一些 Chrome 标志,或者这些标志可能是由于 GPU/驱动程序有问题。在另一台电脑上试试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-07
  • 1970-01-01
  • 2015-12-28
相关资源
最近更新 更多