【问题标题】:How to fill the gap while scale如何在扩展时填补空白
【发布时间】:2013-05-04 03:52:14
【问题描述】:

使用-webkit-transform:时如何填补底部的空白?

div 变小时有间隙。我该如何弥补这个差距?

这里是代码

<div id="popUp">
    <div id="trans">
        <h1>hover me</h1>
    </div>
    <p>Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate</p>
</div>

CSS

#popUp{
    height: auto;
    width:400px;
    background: #EEE;    
}
#trans{
    width:100%;
    height:200px;
    background: yellow;

    -moz-transition: all 0.5s;
    -o-transition: all 0.5s;
    -webkit-transition: all 0.5s;
    transition: all 0.5s;

    -webkit-transform-origin: left top 0;
       -moz-transform-origin: left top 0;
         -o-transform-origin: left top 0;
        -ms-transform-origin: left top 0;
            transform-origin: left top 0;
}
#trans:hover{
    -moz-transform: scale(.5);
    -ms-transform: scale(.5);
    -o-transform: scale(.5);
    -webkit-transform: scale(.5);
    transform: scale(.5)
}
h1{
    text-align: center;
}

演示:http://jsfiddle.net/sweetmaanu/XpJEQ/3/

我找不到合适的解决方案。

【问题讨论】:

  • 你指的差距是什么?
  • 同样的问题。你指的是什么差距?
  • @ralph.m 和 HaBo 请给我 1 分钟。让我上传屏幕截图
  • @HaBo 如果您看图片有不明白的地方请告诉我
  • 为了澄清,OP希望黄色框下方的文本保持与框底部齐平,即使使用scale(.5)动画到其大小的一半也是如此。

标签: html css webkit css-transitions


【解决方案1】:

我稍微修改了您的初始代码如下(文本和黄色矩形之间没有间隙):

#popUp{
    height: 300px;
    width:400px;
    background: #EEE;

    -moz-transition: all 0.5s;
    -o-transition: all 0.5s;
    -webkit-transition: all 0.5s;
    transition: all 0.5s;

    -webkit-transform-origin: left top 0;
     -moz-transform-origin: left top 0;
     -o-transform-origin: left top 0;
    -ms-transform-origin: left top 0;
      transform-origin: left top 0;
}
#popUp:hover{
    -moz-transform: scale(.5);
    -ms-transform: scale(.5);
    -o-transform: scale(.5);
    -webkit-transform: scale(.5);
    transform: scale(.5)
}
#trans{
    width:100%;
    height:200px;
    background: yellow;
 }

h1{
    text-align: center;
}

它符合消除这种差距的初始要求。如果有额外的需求,可以相应地修改代码。

【讨论】:

  • scales 一切,而不仅仅是黄色的div
  • @Alex Bell 感谢您的帮助,但实际上这些函数是我用于弹出图形的。您的解决方案会影响弹出窗口的所有内容
【解决方案2】:

CSS3 transform scale2d 不会导致围绕它的元素重新定位。如果要移动文本,则需要更改元素的实际 heightwidth

【讨论】:

    【解决方案3】:

    我能想到的唯一解决方案是从 DOM 流中删除元素(将其父元素设置为 position: relative,然后绝对定位元素)并为后续元素的 padding-top 设置动画。

    演示:http://jsfiddle.net/XpJEQ/7/

    CSS(减去供应商前缀):

    #popUp {
        background: #EEE;
        position: relative;
        width: 400px;
        max-height: 300px;
    }
    #trans {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 200px;
        background: yellow;
        transition: all 0.5s;
        transform-origin: left top 0;
    }
    #trans:hover { transform: scale(.5); }
    #trans + * {
        padding-top: 210px;
        transition: all 0.5s;
    }
    #trans:hover + * { padding-top: 110px; }
    h1 { text-align: center; }
    

    HTML:

    <div id="popUp">
        <div id="trans">
            <h1>hover me</h1>
        </div>
        <p>Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate</p>
    </div>
    

    【讨论】:

    • 这可能是最好的方法。
    猜你喜欢
    • 1970-01-01
    • 2015-08-19
    • 1970-01-01
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    • 2021-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多