【问题标题】:Fade in Image Radially from Middle to Edges with TweenLite使用 TweenLite 从中间到边缘径向淡入图像
【发布时间】:2017-04-12 12:45:26
【问题描述】:

我有一张图片,见下图:

我想在我的页面上使用以下 css 定位绝对:

.bg-slide21-layer-3 {
    background-image: url('/images/slide21/bg_layer3.png');
    -webkit-background-size: 100% 100%;
    -moz-background-size: 100% 100%;
    -o-background-size: 100% 100%;
    background-size: 100% 100%;
    background-repeat: none;
    height: 46vh;
    width: 78.5vw;
    z-index: -8;
    position: absolute;
    top: 0vw;
    right: 0;
    left: -0.5vw;
    opacity: 1;
 }

我想使用 Tween 使其从不透明度 0 开始,并在页面上从内部(点所在的位置)到边缘对其进行动画处理。我不知道该怎么做。我无法在径向工作中找到轻松。

直观地说,我尝试为元素添加封面,因此 HTML 如下:

<div class='bg-slide21-layer-3-cover'>
    <div class='bg-slide21-layer-3'></div>
</div>

与封面CSS如下:

.bg-slide21-layer-3-cover {
    width: 10%;
    height: 10%;
    margin: auto;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    position: absolute;
    overflow: hidden;
    z-index: -5;
    opacity: 1;
}

并使用这种补间:

TweenMax.to(
        $('.bg-slide21-layer-3-cover'), 
        2, 
        { opacity: 1, width: "100vw", height: "100vh", ease:Power1.easeNone }
    );

目的是使中间的小 div 向外扩展。但是,这不起作用,因为我的内部图像(.bg-slide21-layer-3)绝对相对于中间的封面 div 定位,所以效果看起来就像它从左下角淡入。

有谁知道如何正确地做到这一点?我将如何定位内部 div 相对于主体而不是封面 div,以便随着封面尺寸的增加,看起来图像从中间淡入淡出?

谢谢。

【问题讨论】:

    标签: javascript html css gsap


    【解决方案1】:

    你可以使用一个圆框并重新缩放它

    div {
      position:relative;
      background-repeat: none;
      height: 46vh;
      width: 78.5vh;
      overflow:hidden;
      border:solid;
    }
    div:before {
      position:absolute;
      content:'';
      display:block;
      height:25%;
      width:15%;
      top:70%;
      left:57%;
     background-image: url(https://i.stack.imgur.com/mhs0G.png);
      background-size: 650% 400%;
      background-position: 67% 93%;
      transition:1s linear;
      border-radius:100%;
      
    }
    div:hover:before {
      background-size:100% 100%;
      height:100%;
      width:100%;
      top:0;
      left:0
    }
    body {background:linear-gradient(to top left, lightgray, white,gray);
    <div>
    </div>

    【讨论】:

    • 感谢您的回复。问题是它下面还有其他背景层,所以渐变会覆盖所有它们?
    • 如果每个 bg 都在同一个元素中并且只有通过背景大小重新调整掩码,则可能不会。 bg 要始终查看将需要成为第一个并半透明以显示引脚和渐变。你真的有什么?不透明度也是一个提示。否则使用 svg
    • 我有 4 个独立的 div。它们不包含在同一个元素中(除了主体)。我描述中的封面元素是这 4 个元素之一。我不确定您对使用不透明度的意思是什么?我该怎么做?有没有办法让cover div从中间开始向外扩展?只是,在这种情况下,我需要将内部的行 div 相对于主体定位,而不是内部元素..
    • 好吧,在这种情况下,我的方法和想法完全没用:(我会提出别的建议
    • @user1934426 另一个想法是通过高度/宽度调整圆框的大小并重置坐标、背景位置和背景大小。更新了答案的 sn-p。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-26
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多