【问题标题】:smoothly transition removeClass平滑过渡 removeClass
【发布时间】:2013-08-23 10:49:14
【问题描述】:

我看过其他问题,似乎没有人和我有同样的问题,这总是令人兴奋的!

当您到达该页面时,我正在尝试对我的页面内容进行整洁的查看。一切都被 CSS 挡住了。单击一个大链接,可删除所有编辑效果。我已经成功地让 jQuery 删除了已编辑的样式类,但它根本没有动画。我正在使用 jQuery UI 库。我看到有人提到它不适用于!important 属性,有无我没有区别,没有!important 我无法覆盖这些属性。

请帮助obiwan,你是我唯一的希望!

** 注意,我正在尝试使用 JQuery UI 功能而不是直接 Jquery**

效果示例:http://api.jqueryui.com/removeClass/

JS FIDDLE

Live dev site

jquery

$(document).ready(function(){
    $("#educate").addClass("redactedtext redactedblocks" );
    $("#join").click(function() {
      $("#educate").removeClass("redactedtext redactedblocks", 1000 );
      $('#join').contents().unwrap();
    });
});

和 PHP/Body 文本

<article class="row">
  <article class="twelve columns mastblock predacted " id="make">
    <p><a href="#" id="join">Join</a> us in making a <strong>new</strong> kind of documentary</p>
  </article>
</article>

<section class="row " data-match-height >
  <article class="radius-top-left medium-4 columns mastblock " id="educate">
    <h1>Educational</h1>

    <p>Find out what is behind the actions that lead to slavery, human trafficking, and forced Labour. Have a more complete picture on why slavery still exsists.</p>

    <p>Learn more&#8230;</p>
  </article>

预期的操作是单击按钮,看到停电消失并恢复颜色。

【问题讨论】:

  • 也许一个 jsfiddle 可以帮助我们帮助你...
  • 你不能这样做。这可能就是为什么没有人和你有同样的问题。您可以转换单个 CSS 属性,但不能转换整个类。
  • 所以如果我使用 jquery 来删除类我不能让它淡出吗?我必须专门转换背景和文本颜色?我可以使用一个类作为终点吗(这样我就可以调用一次并让它为每个框更改为正确的颜色)?
  • 根据本文档api.jquery.com/removeClass .removeClass() 没有 duration 选项。您可以在该文本上方放置一个黑色 div,然后使用 .fadeOut() 隐藏它
  • 您可以转换单个 CSS 属性,但不能转换整个类?关心实际解释你的意思吗?你的意思是删除一个类?

标签: javascript jquery html css jquery-ui


【解决方案1】:

CSS 动画为这个问题提供了更通用的解决方案。适用于所有主要浏览器(有一些警告......)

以下是示例,基于我认为您正在努力实现的目标...

http://jsfiddle.net/adrianjmartin/xLpft/

<style>
.redacted {
  background-color:black;
  color:black;
 }

 @keyframes unredact{
  to{
   background-color:white;
   }
  }
 @-webkit-keyframes unredact{
    to{
    background-color:white;
 }
}

</style>

<script>
  window.addEventListener( "load" , function(){

  var p = document.querySelectorAll("P");



  for( var ii = 0 ; ii < p.length ; ii++ ){

    var t = p[ii].textContent;
    var a = t.split( ' ' );
    var h = "";

    for( var i = 0 ; i < a.length ; i++ ){
      h += "<span class='redacted'>"+a[i]+" </span>";
    }
    p[ii].innerHTML = h ;
    }

  });

  window.addEventListener( "click" , function(){

    var spans = document.querySelectorAll( "P span.redacted");
    for( var i = 0; i < spans.length ; i++ ){
    var delay = Math.random(3);

       var delay = Math.random(3);
    var style = "-webkit-animation: unredact forwards 3s " + delay + "s;";
        style += "animation: unredact forwards 3s " + delay + "s";
    }
  });
</script>

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce quis fringilla nisi. Curabitur vitae mi ultrices nunc sodales sodales at eget est. Aenean placerat eleifend lorem sed congue. Vivamus rutrum mi tempus leo interdum, vel volutpat velit consequat. Pellentesque eu sem metus. Nullam quis mauris ultrices augue blandit consequat. Vestibulum sollicitudin odio sed lobortis lacinia. Vivamus semper est et sapien ultrices, non vestibulum sapien tincidunt. Vivamus nunc neque, tincidunt ut arcu quis, bibendum hendrerit odio. Suspendisse id molestie ligula. Nulla dapibus venenatis tellus, egestas imperdiet velit pretium pellentesque. Mauris risus nibh, feugiat et magna sit amet, malesuada sagittis tellus. Curabitur porta, turpis ac tincidunt pharetra, augue est sodales ipsum, vitae pharetra eros nisl nec ante. Duis mattis volutpat est, in hendrerit urna mattis sed.<p>

<p>In bibendum nisl sit amet libero tempus ullamcorper. Vivamus a augue scelerisque, fermentum lorem et, vehicula justo. Praesent aliquet venenatis libero eget bibendum. Nam imperdiet fermentum libero et sagittis. Fusce varius posuere arcu, convallis varius ante aliquam ac. Proin eu nisi commodo, interdum erat vitae, iaculis massa. Fusce quis elit ac lacus viverra adipiscing. In hac habitasse platea dictumst. Sed sodales mauris non condimentum ultricies. Maecenas at venenatis arcu. Vestibulum scelerisque lacinia libero, eu tincidunt diam egestas eu. Suspendisse eu eros nulla. Ut dignissim nisl sed turpis tristique aliquam.
</p>

【讨论】:

【解决方案2】:

是的,如果一个类有!important 属性,你就不能为它设置动画,正如我刚刚测试的那样。这里有 2 个小提琴可以证明这一点。

!important 演示:http://jsfiddle.net/eaPcv/

普通演示:http://jsfiddle.net/eaPcv/1/

所以你运气不好。

但是说你必须使用!important 否则样式将不起作用是不正确的。当然可以在不使用!important 的情况下建立一个网站,并且看到你有很多!important 那么你正在编写错误的代码并且你在某处做错了。

【讨论】:

  • 这似乎不起作用,我知道在 jquery 下您无法转换 removeClass,但是 Jquery UI 能够定义持续时间,但它似乎不起作用。跨度>
  • 谢谢,我想我得弄清楚如何在没有“!important”标签的情况下编写它来覆盖实际样式。
  • 在样式表底部创建一个新类,它将覆盖另一个类。
  • 可以工作,我目前正在使用在主工作表之后调用的第二个 CSS 工作表。我对 CSS 的理解是错误的吗?我假设它会超越它。 PS 感谢您弹出我的 Stackoverflow 樱桃,我不敢问,因为我不知道需要多长时间才能回答!
  • 对于其他有此问题的人:htmldog.com/guides/css/intermediate/specificity 帮助我了解了为什么我的 SASS 文件会引起问题。
猜你喜欢
  • 2014-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-14
  • 2015-05-07
  • 2013-11-19
  • 2015-02-14
  • 2016-10-07
相关资源
最近更新 更多