仅在页面加载时禁用CSS过渡

问题描述 投票:3回答:5

我有一个div的风格,当悬停时,在背景颜色上有平滑的过渡。这个div在很多页面(包括主页)上都有显示,但是在主页上有不同的背景色。

div {
    border:1px solid;
    background-color:#fff;
    display:inline-block;
    width:100%;
    height:100px;
    -webkit-transition: 0.5s;
    -moz-transition:    0.5s;
    -o-transition:      0.5s;
    transition:         0.5s;
}

div.homepage {
    background-color:#777;
}

div:hover, div.homepage:hover {
    background-color:#f00;
}

由于这个div在每个页面上都包含了一个PHP片段,我们的想法是(为了保持代码的简洁)用PHP输出一个通用的div,然后通过jQuery在主页上添加一个 "homepage "类。

$('div').addClass("homepage");

不幸的是,这将导致在页面加载时产生一个不希望看到的过渡(参见 抚弄为了清晰起见,加载后点击 "运行")。) 如何在不影响正常行为的情况下,仅在页面加载时禁用CSS过渡(当div被悬停时)?

jquery css-transitions
5个回答
10
投票

这就是我的工作原理。http:/css-tricks.comtransitions-only-after-page-load。

基本上,你在body标签上加了一个类。

<body class="preload">

这样就可以禁用转场效果了

.preload * {
 -webkit-transition: none !important;
 -moz-transition: none !important;
 -ms-transition: none !important;
 -o-transition: none !important;
}

然后一旦页面加载完毕,你就删除这个类。

$(window).load(function() {
  $("body").removeClass("preload");
});

很简单! :D


0
投票

Would'n it be ok if you simply set the initial gray color for the div instead of white ?

div {
    border:1px solid;
    background-color:#777;
    display:inline-block;
    width:100%;
    height:100px;
   -webkit-transition: 0.5s;
   -moz-transition:    0.5s;
   -o-transition:      0.5s;
    transition:         0.5s;   
}

请看这里更新的fiddle。fiddle


0
投票

当你动态地添加了类 homepagediv.

如果 div 充满了 class 在加载中没有任何过渡。

在你的html中。

<div class="homepage"></div>

在发送至客户端之前,在PHP中添加该类。


0
投票

仅在页面加载时禁用过渡。

<body class="js-stop-transition">
...
<script>document.body.classList.remove('js-stop-transition')</script>
</body>

并添加到CSS中。

body.js-stop-transition * { transition:none !important; }

-3
投票

在CSS中加入以下属性

       div {
     border:1px solid;
     background-color:#fff;
     display:inline-block;
     width:100%;
     height:100px;
 }

 div.homepage {
     background-color:#777;
 }

 div:hover, div.homepage:hover {
     background-color:#f00;
 }

在添加了你的主页类后,将剩余的属性附加到下面的内容上

      var transProperty=$('<style>div {  -webkit-transition: 0.5s;   -moz-transition: 0.5s;   -o-transition:  0.5s;     transition:  0.5s; }</style>');
      $('head').append(transProperty);
© www.soinside.com 2019 - 2024. All rights reserved.