代码之家  ›  专栏  ›  技术社区  ›  Jay Jeong

添加类名以操作节点不起作用

  •  1
  • Jay Jeong  · 技术社区  · 6 年前

    .slides > div {
         width: 100%;
         height: 100vh;
         background-image: url('sdfsd.jpg');
         background-size: cover;
         background-position: center;
         transform: scale(1.14, 1.14);
         transition: transform 5000ms;
    }
    
    .erase {
        height: 0;
        transition: height 4s;
     }
    

    下面是为元素提供类名的函数。

    redirectToHome = (e) => {
        e.preventDefault();
        for(let node of document.querySelectorAll('.slides > div')){
            node.classList.add('erase');
        }
        // console.log(document.querySelectorAll('.slides > div'))
    }
    

    我可以从浏览器中检查类名是否添加到元素中,但不知何故,我没有看到类名的任何css属性。

    .erase {
        visibility: hidden;
     }
    
    3 回复  |  直到 6 年前
        1
  •  1
  •   Eydrian    6 年前

    这个 .slides > div 比仅仅 .erase 因此被驳回 .擦除 你需要筑巢 也要统治 .slides > .erase

    参见下面的示例

    .slides > div {
        width: 100%;
        height: 100vh;
        background-image: url('sdfsd.jpg');
        background-size: cover;
        background-position: center;
        transform: scale(1.14, 1.14);
        transition: transform 5000ms;
    }
    
    .slides > .erase {
        height: 0;
        transition: height 4s;
    }
    

    示例如下: http://jsfiddle.net/sa1ge208/11/

        2
  •  1
  •   Simon Pasku    6 年前

    您应该描述到父选择器的转换属性,如for.slides>div或在整个文档正文中

        3
  •  1
  •   Willem van der Veen    6 年前

    .slides > div 优先级高于 .erase . 因此,您已经在高优先级选择器中定义的高度和过渡的属性不会被应用。

    您可以通过以下方式解决此问题:

    .erase {
        height: 0 !important;
        transition: height 4s !important;
     }