2017-07-30 16 views
1

私はクールなアコーディオンのサンプルをオンラインで見つけました。私はすべてのコードをhtmlファイルにコピーしましたが、まだ正しく表示されない理由がわからず、jsおよびcssコードを追加しましたが、それでも正しく表示されません。メニューはすでに「折りたたまれた」位置にあり、色は黒であるはずです。誰が問題になるのか見ていますか?jsseryと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; 
 
     } 
 
     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); 
} 
関連する問題