2017-07-30 121 views
1

我在網上發現了一個很酷的手風琴樣本。我將所有代碼複製到一個html文件,不知道爲什麼它仍然顯示不正確,我已經添加了js和css代碼,但它仍然無法正確顯示。該菜單應該已經處於「摺疊」位置,顏色應該是黑色。有沒有人看到可能是什麼問題?css手風琴與jquery

 $(document).ready(function() { 
 
      $('.toggle').click(function(e) { 
 
       e.preventDefault(); 
 

 
       var $this = $(this); 
 

 
       if ($this.next().hasClass('show')) { 
 
        $this.next().removeClass('show'); 
 
        $this.next().slideUp(350); 
 
       } else { 
 
        $this.parent().parent().find('li .inner').removeClass('show'); 
 
        $this.parent().parent().find('li .inner').slideUp(350); 
 
        $this.next().toggleClass('show'); 
 
        $this.next().slideToggle(350); 
 
       } 
 
      }); 
 
     });
* { 
 
      box-sizing: border-box; 
 
      font-family: 'Open Sans', sans-serif; 
 
      font-weight: 300; 
 
     } 
 
     a { 
 
      text-decoration: none; 
 
      color: inherit; 
 
     } 
 
     p { 
 
      font-size: 1.1em; 
 
      margin: 1em 0; 
 
     } 
 
     .description { 
 
      margin: 1em auto 2.25em; 
 
     } 
 
     body { 
 
      width: 40%; 
 
      min-width: 300px; 
 
      max-width: 400px; 
 
      margin: 1.5em auto; 
 
      color: #333; 
 
     } 
 
     h1 { 
 
      font-family: 'Pacifico', cursive; 
 
      font-weight: 400; 
 
      font-size: 2.5em; 
 
     } 
 
     ul { 
 
      list-style: none; 
 
      padding: 0; 
 
      .inner { 
 
       padding-left: 1em; 
 
       overflow: hidden; 
 
       display: none; 
 
       &.show { 
 
        /*display: block;*/ 
 
       } 
 
      } 
 
      li { 
 
       margin: .5em 0; 
 
       a.toggle { 
 
        width: 100%; 
 
        display: block; 
 
        background: rgba(0, 0, 0, 0.78); 
 
        color: #fefefe; 
 
        padding: .75em; 
 
        border-radius: 0.15em; 
 
        transition: background .3s ease; 
 
        &: hover { 
 
         background: rgba(0, 0, 0, 0.9); 
 
        } 
 
       } 
 
      } 
 
     }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> 
 

 
    <meta charset="utf-8"> 
 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
 
    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Pacifico|Open+Sans:300,400,600"> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
 

 
    
 
</head> 
 

 
<body> 
 
    <h1>A Cool Accordion</h1> 
 

 
    <p class="description"> 
 
     You could simply toggle the .show class (if display: block is uncommented in the CSS) in JavaScript, but you'll lose the animation. 
 
    </p> 
 

 
    <ul class="accordion"> 
 
     <li> 
 
      <a class="toggle" href="javascript:void(0);">Plan It</a> 
 
      <ul class="inner"> 
 
       <li> 
 
        <a href="#" class="toggle">Recieve Ur</a> 
 
        <div class="inner"> 
 
         <p> 
 
          Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas tempus placerat fringilla. Duis a elit et dolor laoreet volutpat. Aliquam ultrices mauris id mattis imperdiet. Aenean cursus ultrices justo et varius. Suspendisse aliquam orci id dui dapibus blandit. In hac habitasse platea dictumst. Sed risus velit, pellentesque eu enim ac, ultricies pretium felis. 
 
         </p> 
 
        </div> 
 
       </li> 
 

 
       <li> 
 
        <a href="#" class="toggle">Cook It</a> 
 
        <div class="inner"> 
 
         <p> 
 
          Children will automatically close upon closing its parent. 
 
         </p> 
 
        </div> 
 
       </li> 
 

 
       <li> 
 
        <a href="#" class="toggle">Stew It</a> 
 
        <div class="inner"> 
 
         <p> 
 
          Children will automatically close upon closing its parent. 
 
         </p> 
 
        </div> 
 
       </li> 
 
      </ul> 
 
     </li> 
 

 
     <li> 
 
      <a class="toggle" href="javascript:void(0);">Create It</a> 
 
      <ul class="inner"> 
 
       <li>Option 1</li> 
 
       <li>Option 2</li> 
 
       <li>Option 3</li> 
 
      </ul> 
 
     </li> 
 

 
     <li> 
 
      <a class="toggle" href="javascript:void(0);">Deliver It</a> 
 
      <ul class="inner"> 
 
       <li> 
 
        <a href="#" class="toggle">Open Inner</a> 
 
        <div class="inner"> 
 
         <p> 
 
          Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas tempus placerat fringilla. Duis a elit et dolor laoreet volutpat. Aliquam ultrices mauris id mattis imperdiet. Aenean cursus ultrices justo et varius. Suspendisse aliquam orci id dui dapibus blandit. In hac habitasse platea dictumst. Sed risus velit, pellentesque eu enim ac, ultricies pretium felis. 
 
         </p> 
 
        </div> 
 
       </li> 
 

 
       <li> 
 
        <a href="#" class="toggle">Open Inner #2</a> 
 
        <div class="inner"> 
 
         <p> 
 
          Children will automatically close upon closing its parent. 
 
         </p> 
 
        </div> 
 
       </li> 
 

 
       <li>Option 3</li> 
 
      </ul> 
 
     </li> 
 

 
     <li> 
 
      <a class="toggle" href="javascript:void(0);">Measure It</a> 
 
      <ul class="inner"> 
 
       <li> 
 
        <a href="#" class="toggle">Technically any number of nested elements</a> 
 
        <ul class="inner"> 
 
         <li> 
 
          <a href="#" class="toggle">Another nested element</a> 
 
          <div class="inner"> 
 
           <p> 
 
            As long as the inner element has inner as one of its classes then it will be toggled. 
 
           </p> 
 
           <p> 
 
            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas tempus placerat fringilla. Duis a elit et dolor laoreet volutpat. Aliquam ultrices mauris id mattis imperdiet. Aenean cursus ultrices justo et varius. Suspendisse aliquam orci id dui dapibus blandit. In hac habitasse platea dictumst. Sed risus velit, pellentesque eu enim ac, ultricies pretium felis. 
 
           </p> 
 
          </div> 
 
         </li> 
 
        </ul> 
 
       </li> 
 

 
       <li>Option 2</li> 
 

 
       <li>Option 3</li> 
 
      </ul> 
 
     </li> 
 
    </ul> 
 
</body> 
 

 
</html>

回答

0

您在示例中使用了SCSS。當轉換爲純CSS時,它可以正常工作。

$(document).ready(function() { 
 
    $('.toggle').click(function(e) { 
 
    e.preventDefault(); 
 

 
    var $this = $(this); 
 

 
    if ($this.next().hasClass('show')) { 
 
     $this.next().removeClass('show'); 
 
     $this.next().slideUp(350); 
 
    } else { 
 
     $this.parent().parent().find('li .inner').removeClass('show'); 
 
     $this.parent().parent().find('li .inner').slideUp(350); 
 
     $this.next().toggleClass('show'); 
 
     $this.next().slideToggle(350); 
 
    } 
 
    }); 
 
});
* { 
 
    box-sizing: border-box; 
 
    font-family: 'Open Sans', sans-serif; 
 
    font-weight: 300; 
 
} 
 

 
a { 
 
    text-decoration: none; 
 
    color: inherit; 
 
} 
 

 
p { 
 
    font-size: 1.1em; 
 
    margin: 1em 0; 
 
} 
 

 
.description { 
 
    margin: 1em auto 2.25em; 
 
} 
 

 
body { 
 
    width: 40%; 
 
    min-width: 300px; 
 
    max-width: 400px; 
 
    margin: 1.5em auto; 
 
    color: #333; 
 
} 
 

 
h1 { 
 
    font-family: 'Pacifico', cursive; 
 
    font-weight: 400; 
 
    font-size: 2.5em; 
 
} 
 

 

 
.inner { 
 
    padding-left: 1em; 
 
    overflow: hidden; 
 
    display: none; 
 
} 
 

 
.inner.show { 
 
    /*display: block;*/ 
 
} 
 

 
ul { 
 
    list-style: none; 
 
    padding: 0; 
 
} 
 

 
li { 
 
    margin: .5em 0; 
 
} 
 

 
a.toggle { 
 
    width: 100%; 
 
    display: block; 
 
    background: rgba(0, 0, 0, 0.78); 
 
    color: #fefefe; 
 
    padding: .75em; 
 
    border-radius: 0.15em; 
 
    transition: background .3s ease; 
 
} 
 

 
a.toggle:hover { 
 
    background: rgba(0, 0, 0, 0.9); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> 
 

 
<meta charset="utf-8"> 
 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
 
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Pacifico|Open+Sans:300,400,600"> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
 

 

 
</head> 
 

 
<body> 
 
    <h1>A Cool Accordion</h1> 
 

 
    <p class="description"> 
 
    You could simply toggle the .show class (if display: block is uncommented in the CSS) in JavaScript, but you'll lose the animation. 
 
    </p> 
 

 
    <ul class="accordion"> 
 
    <li> 
 
     <a class="toggle" href="javascript:void(0);">Plan It</a> 
 
     <ul class="inner"> 
 
     <li> 
 
      <a href="#" class="toggle">Recieve Ur</a> 
 
      <div class="inner"> 
 
      <p> 
 
       Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas tempus placerat fringilla. Duis a elit et dolor laoreet volutpat. Aliquam ultrices mauris id mattis imperdiet. Aenean cursus ultrices justo et varius. Suspendisse aliquam orci id dui dapibus 
 
       blandit. In hac habitasse platea dictumst. Sed risus velit, pellentesque eu enim ac, ultricies pretium felis. 
 
      </p> 
 
      </div> 
 
     </li> 
 

 
     <li> 
 
      <a href="#" class="toggle">Cook It</a> 
 
      <div class="inner"> 
 
      <p> 
 
       Children will automatically close upon closing its parent. 
 
      </p> 
 
      </div> 
 
     </li> 
 

 
     <li> 
 
      <a href="#" class="toggle">Stew It</a> 
 
      <div class="inner"> 
 
      <p> 
 
       Children will automatically close upon closing its parent. 
 
      </p> 
 
      </div> 
 
     </li> 
 
     </ul> 
 
    </li> 
 

 
    <li> 
 
     <a class="toggle" href="javascript:void(0);">Create It</a> 
 
     <ul class="inner"> 
 
     <li>Option 1</li> 
 
     <li>Option 2</li> 
 
     <li>Option 3</li> 
 
     </ul> 
 
    </li> 
 

 
    <li> 
 
     <a class="toggle" href="javascript:void(0);">Deliver It</a> 
 
     <ul class="inner"> 
 
     <li> 
 
      <a href="#" class="toggle">Open Inner</a> 
 
      <div class="inner"> 
 
      <p> 
 
       Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas tempus placerat fringilla. Duis a elit et dolor laoreet volutpat. Aliquam ultrices mauris id mattis imperdiet. Aenean cursus ultrices justo et varius. Suspendisse aliquam orci id dui dapibus 
 
       blandit. In hac habitasse platea dictumst. Sed risus velit, pellentesque eu enim ac, ultricies pretium felis. 
 
      </p> 
 
      </div> 
 
     </li> 
 

 
     <li> 
 
      <a href="#" class="toggle">Open Inner #2</a> 
 
      <div class="inner"> 
 
      <p> 
 
       Children will automatically close upon closing its parent. 
 
      </p> 
 
      </div> 
 
     </li> 
 

 
     <li>Option 3</li> 
 
     </ul> 
 
    </li> 
 

 
    <li> 
 
     <a class="toggle" href="javascript:void(0);">Measure It</a> 
 
     <ul class="inner"> 
 
     <li> 
 
      <a href="#" class="toggle">Technically any number of nested elements</a> 
 
      <ul class="inner"> 
 
      <li> 
 
       <a href="#" class="toggle">Another nested element</a> 
 
       <div class="inner"> 
 
       <p> 
 
        As long as the inner element has inner as one of its classes then it will be toggled. 
 
       </p> 
 
       <p> 
 
        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas tempus placerat fringilla. Duis a elit et dolor laoreet volutpat. Aliquam ultrices mauris id mattis imperdiet. Aenean cursus ultrices justo et varius. Suspendisse aliquam orci id dui dapibus 
 
        blandit. In hac habitasse platea dictumst. Sed risus velit, pellentesque eu enim ac, ultricies pretium felis. 
 
       </p> 
 
       </div> 
 
      </li> 
 
      </ul> 
 
     </li> 
 

 
     <li>Option 2</li> 
 

 
     <li>Option 3</li> 
 
     </ul> 
 
    </li> 
 
    </ul> 
 
</body> 
 

 
</html>

0

你的風格是SCSS(SASS),所以這是行不通的。你需要用css編譯它。

* { 
    box-sizing: border-box; 
    font-family: 'Open Sans', sans-serif; 
    font-weight: 300; 
} 

a { 
    text-decoration: none; 
    color: inherit; 
} 

p { 
    font-size: 1.1em; 
    margin: 1em 0; 
} 

.description { 
    margin: 1em auto 2.25em; 
} 

body { 
    width: 40%; 
    min-width: 300px; 
    max-width: 400px; 
    margin: 1.5em auto; 
    color: #333; 
} 

h1 { 
    font-family: 'Pacifico', cursive; 
    font-weight: 400; 
    font-size: 2.5em; 
} 

ul { 
    list-style: none; 
    padding: 0; 
} 
ul .inner { 
    padding-left: 1em; 
    overflow: hidden; 
    display: none; 
} 
ul .inner.show { 
    /*display: block;*/ 
} 
ul li { 
    margin: .5em 0; 
} 
ul li a.toggle { 
    width: 100%; 
    display: block; 
    background: rgba(0, 0, 0, 0.78); 
    color: #fefefe; 
    padding: .75em; 
    border-radius: 0.15em; 
    transition: background .3s ease; 
} 
ul li a.toggle:hover { 
    background: rgba(0, 0, 0, 0.9); 
}