css中设置transform:scale后,之前设置为fixed的div就都不会固定在屏幕上了,如何解决?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了css中设置transform:scale后,之前设置为fixed的div就都不会固定在屏幕上了,如何解决?相关的知识,希望对你有一定的参考价值。

有想过去动态设置top,但想知道有无更好的解决办法?

参考技术A 把fixed 的div 作为容器, 在里边再添加一层div 做scale本回答被提问者和网友采纳 参考技术B 如果用div作为容器 ,定义容器position:fixed top的值,如果这种方法不行的话,就把你想放大的东西做成gif图片放在页面上 参考技术C 设置变换原点,在该元素上添加样式transform-origin:0 0;

使用 CSS3 Transform Scale 和 jQuery 动画脉冲效果

【中文标题】使用 CSS3 Transform Scale 和 jQuery 动画脉冲效果【英文标题】:Animate pulsing effect using CSS3 Transform Scale and jQuery 【发布时间】:2014-01-20 15:57:32 【问题描述】:

我正在尝试使用 CSS3 的 transform: scale(x,y) 创建元素的脉冲动画。我希望对象无休止地脉冲(变得稍大),除非它悬停在上面——此时当前动画应该完成(即返回到其原始大小)并停止脉冲,直到它不再被悬停。然而,我什至无法让 jQuery 的 .animate() 工作。

function pulse() 
  $('#pulsate').animate(
    transition: 'all 1s ease-in-out',
    transform:  'scale(1.05,1.05)'
  , 1500, function() 
    $('#pulsate').animate(
      transition: 'all 1s ease-in-out',
      transform:  'scale(1,1)'
      , 1500, function() 
        pulse();
    );
  );

pulse();

在这里使用.addClass.removeClass 会更好吗? .removeClass 会在 .hover() 上停止动画,但我不确定整体的实现。

【问题讨论】:

你的意思是这样的:jsfiddle.net/g4zC7?仅限 Chrome 其实,没错,就是这样。除了我希望它在其他浏览器中工作(至少是 Firefox)。令人印象深刻的是,这都是 CSS。 试试这个:jsfiddle.net/rooseve/g4zC7/2。我测试了 Firefox 26 和 IE 11。 这太棒了,感谢你教我使用纯 CSS 是可能的。提交它作为答案,我会接受它。我实际上最终还是选择了 jQuery.transit:github.com/rstacruz/jquery.transit 【参考方案1】:

尝试使用CSS animations。

@keyframes pulse 
    0% 
     transform: scale(1, 1);
    

    50% 
     transform: scale(1.1, 1.1);
    

    100% 
    transform: scale(1, 1);
    


#test 
    animation: pulse 1s linear infinite;

@-webkit-keyframes pulse 
    0% 
        -webkit-transform: scale(1, 1);
    
    50% 
        -webkit-transform: scale(1.1, 1.1);
    
    100% 
        -webkit-transform: scale(1, 1);
    ;


@keyframes pulse 
    0% 
        transform: scale(1, 1);
    
    50% 
        transform: scale(1.1, 1.1);
    
    100% 
        transform: scale(1, 1);
    ;


#test 
    background: red;
    width: 20px;
    height: 20px;
    -webkit-animation: pulse 1s linear infinite;
    animation: pulse 1s linear infinite;

#test:hover 
    -webkit-animation: none;
    animation:none;
<div id="test"></div>

http://jsfiddle.net/rooseve/g4zC7/2/

【讨论】:

以上是关于css中设置transform:scale后,之前设置为fixed的div就都不会固定在屏幕上了,如何解决?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Reactjs 中重放 CSS3 动画

CSS Transform Scale 使文本模糊

页面整体使用transform scale 后 高德地图点位点击偏移 错位问题

CSS 'transform: scale()' 属性在 iOS Safari 和 iOS Chrome 上也不起作用

css3系列之transform scale

我可以在 CSS 中的 Transform:Scale 函数中使用 Calc 吗?