【问题标题】:Scaling image with CSS Transition使用 CSS 过渡缩放图像
【发布时间】:2015-11-09 02:33:15
【问题描述】:

这就是我想要缩放图像的方式,smoothly without any jumps

我的尝试不像上面的画廊那样工作,图像(在我的例子中是红色方块)跳跃,my code

section {
    background-color: rgba(0, 0, 0, 0.701961);
    width: 400px;
    height: 400px;
}

div {
    position: absolute;
    top: 120px;
    left: 120px;
    width: 160px;
    height: 160px;
    background-color: red;
    -webkit-transition: all .2s ease-in-out;

}

div:hover {
    -webkit-transform: scale(1.8);
}
<section>
    <div></div>
</section>

如何解决这个问题?红色方块跳跃。是否可以像开头链接中的图库那样使用 CSS 过渡平滑缩放?

【问题讨论】:

    标签: html css css-transitions image-scaling


    【解决方案1】:

    “跳跃”是什么意思?试试this,也跳?

    section {
        background-color: rgba(0, 0, 0, 0.701961);
        width: 400px;
        height: 400px;
    }
    
    div {
        position: absolute;
        top: 120px;
        left: 120px;
        width: 160px;
        height: 160px;
        background-color: red;
        -webkit-transition: -webkit-transform 0.4s;
        transition: transform 0.4s;
    }
    
        div:hover {
            -webkit-transform: scale(1.8) rotate(0.01deg);
            transform: scale(1.8) rotate(0.01deg);
        }
    <section>
        <div></div>
    </section>

    此外,您可以尝试使用图像容器的变体(如问题的第一个链接中所示)。

    JSFiddle

    .banner {
        position: relative;
        z-index: 1;
        cursor: pointer;
        border: 1px solid #dfe2e5;
        background: #000;
        width: 310px;
        height: 150px;
        -webkit-transition: border-color 0.1s;
        transition: border-color 0.1s;
        overflow: hidden;
    }
    
        .banner:hover {
            border-color: #bdc1c5;
        }
    
        .banner__image-container {
            overflow: hidden;
            height: 100%;
        }
    
        .banner__image {
            -webkit-transition: all 0.4s;
            transition: all 0.4s;
        }
    
            .banner:hover .banner__image {
                -webkit-transform: scale(1.15) rotate(0.01deg);
                transform: scale(1.15) rotate(0.01deg);
                opacity: 0.5;
            }
    <div class="banner">
        <div class="banner__image-container">
            <img class="banner__image" src="https://picsum.photos/310/150/?image=1022"/>
        </div>
    </div>

    【讨论】:

    • 它仍然会在我的 Chrome 版本 (44.0.2403.155 m) 中在 Windows 7 上跳转。并非总是如此,但如果您反复悬停 - 取消悬停,在某些情况下它会突然改变尺寸。我认为这是较新 Chrome 版本中的错误。
    • @vals 也许。我认为在问题的第一个示例中可以,因为图像具有容器。
    • @vals 例如,我为我的公司做了类似的事情,它也会跳跃吗? jsfiddle.net/sergdenisov/o1ztj3o0
    • 是的,它会跳跃,但由于比例较低,因此不太明显。但我确实认为这是一个错误,并且可能在其他设置中无法重现
    • @Sergey Denisov 确实在问题的第一个例子中,图像有一个容器,但是让容器改变任何东西的唯一原因,你能详细说明图像有一个容器带来什么不同吗?我想问题是 Chrome,
    【解决方案2】:

    我有时会通过在转换属性上添加rotate(0.01deg) 来解决转换时的奇怪跳转,如下所示:

    .element:hover {
        transform: scale(1.5) rotate(0.01deg);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-05
      • 1970-01-01
      • 2017-12-01
      • 1970-01-01
      • 2020-09-17
      相关资源
      最近更新 更多