2016-08-31 5 views
0

メニューのオーバーレイに問題があります。メニューを開くと、背景のコンテンツが引き続き表示されています。私はZインデックスで試してみましたが、役に立たないです。メニューのオーバーレイ問題

メニューを開くと、段落が薄い灰色で表示されます。

$("#menu").click(function() { 
 
    $(".nav").toggleClass('is-open'); 
 
    $(".overlay").toggleClass('is-visible'); 
 
    $(this).toggleClass('open'); 
 
});
* { 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 
li { 
 
    list-style: none; 
 
} 
 
html { 
 
    color: #222; 
 
    font-family: Avenir, sans-serif; 
 
} 
 
a { 
 
    color: #111; 
 
    display: inline-block; 
 
    text-decoration: none; 
 
    padding: 10px 0; 
 
    text-transform: uppercase; 
 
    font-weight: lighter; 
 
    opacity: .7; 
 
    transition: all 0.4s ease-in-out; 
 
} 
 
a:hover { 
 
    opacity: 1; 
 
} 
 
.nav { 
 
    text-align: right; 
 
    float: right; 
 
} 
 
.nav li { 
 
    transition-delay: 0.15s; 
 
    transform: translate(30px, 0); 
 
    opacity: 0; 
 
    transition: all 0.4s cubic-bezier(0.19, 1, 0.22, 1); 
 
} 
 
.nav.is-open li { 
 
    transform: translate(0px, 0); 
 
    opacity: 1; 
 
} 
 
.nav.is-open li:nth-child(1) { 
 
    transition-delay: 0.1s; 
 
} 
 
.nav.is-open li:nth-child(2) { 
 
    transition-delay: 0.15s; 
 
} 
 
.nav.is-open li:nth-child(3) { 
 
    transition-delay: 0.2s; 
 
} 
 
.nav.is-open li:nth-child(4) { 
 
    transition-delay: 0.25s; 
 
} 
 
.nav.is-open li:nth-child(5) { 
 
    transition-delay: .3s; 
 
} 
 
.nav.is-open li a { 
 
    color: #fff; 
 
} 
 
#menu { 
 
    float: right; 
 
    width: 25px; 
 
    height: 15px; 
 
    position: relative; 
 
    -webkit-transform: rotate(0deg); 
 
    -moz-transform: rotate(0deg); 
 
    -o-transform: rotate(0deg); 
 
    transform: rotate(0deg); 
 
    -webkit-transition: .3s ease-in-out; 
 
    -moz-transition: .3s ease-in-out; 
 
    -o-transition: .3s ease-in-out; 
 
    transition: .3s ease-in-out; 
 
    cursor: pointer; 
 
} 
 
#menu span { 
 
    display: block; 
 
    position: absolute; 
 
    height: 2px; 
 
    width: 100%; 
 
    background: #222; 
 
    border-radius: 2px; 
 
    opacity: 1; 
 
    left: 0; 
 
    -webkit-transform: rotate(0deg); 
 
    -moz-transform: rotate(0deg); 
 
    -o-transform: rotate(0deg); 
 
    transform: rotate(0deg); 
 
    -webkit-transition: .15s ease-in-out; 
 
    -moz-transition: .15s ease-in-out; 
 
    -o-transition: .15s ease-in-out; 
 
    transition: .15s ease-in-out; 
 
} 
 
#menu span:nth-child(1) { 
 
    top: 0px; 
 
} 
 
#menu span:nth-child(2), 
 
#menu span:nth-child(3) { 
 
    top: 9px; 
 
} 
 
#menu span:nth-child(4) { 
 
    top: 18px; 
 
} 
 
#menu.open span:nth-child(1) { 
 
    top: 9px; 
 
    width: 0%; 
 
    left: 50%; 
 
} 
 
#menu.open span:nth-child(2) { 
 
    -webkit-transform: rotate(45deg); 
 
    -moz-transform: rotate(45deg); 
 
    -o-transform: rotate(45deg); 
 
    transform: rotate(45deg); 
 
} 
 
#menu.open span:nth-child(3) { 
 
    -webkit-transform: rotate(-45deg); 
 
    -moz-transform: rotate(-45deg); 
 
    -o-transform: rotate(-45deg); 
 
    transform: rotate(-45deg); 
 
} 
 
#menu.open span:nth-child(4) { 
 
    top: 9px; 
 
    width: 0%; 
 
    left: 50%; 
 
} 
 
#menu.open span { 
 
    background: #fff; 
 
} 
 
header { 
 
    float: right; 
 
    padding: 50px; 
 
} 
 
header { 
 
    position: relative; 
 
} 
 
.overlay { 
 
    background: transparent; 
 
    width: 100%; 
 
    height: 100vh; 
 
    z-index: -4; 
 
    transition: background .5s ease-in-out; 
 
} 
 
.overlay.is-visible { 
 
    background: #000; 
 
    position: absolute; 
 
    z-index: -2; 
 
    display: block; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<header> 
 
    <a id="menu" href="#"> 
 
    <span></span> 
 
    <span></span> 
 
    <span></span> 
 
    <span></span> 
 
    </a> 
 
    <nav> 
 
    <ul class="nav"> 
 
     <li><a href="#">Home</a> 
 
     </li> 
 
     <li><a href="#">About</a> 
 
     </li> 
 
     <li><a href="#">Portfolio</a> 
 
     </li> 
 
     <li><a href="#">Blog</a> 
 
     </li> 
 
     <li><a href="#">Contact</a> 
 
     </li> 
 
    </ul> 
 
    </nav> 
 
</header> 
 

 
<div class="overlay">Hello,<br>this is the para that is still visible when you open the menu</div>

+0

それが適用される異なる特性を持つ同じ要素であるためです。 paragrphをZインデックス(または不透明度など)を変更できる要素にラップする必要があります。または、実際に段落の「上部にある」別のアイテムに開くメニューが必要です。他の「トリック」は、開いているメニューの背景を#222にするか、本文の色を#000にすることです。 – lharby

+0

あなたのヘッダー要素が.overlay divをカバーしていないため、 – Laravel14

+0

@lharby他のトリックは私のページと同じように機能しません。色の異なる要素があり、メニューと段落が同じビューにあります。 – user1749105

答えて

2

あなたは段落ごとに異なる色を持つようにしたい場合は、私はあなたの.overlay要素の内側の擬似要素を使用することをお勧めします。あなたはそれを色付けすることができるでしょう、そしてそれはあなたのコンテンツを非表示になります。

.overlay { 
    position: relative; 
    ... 
} 
.overlay.is-visible:after { 
    content: ''; 
    background: #000; 
    position: absolute; 
    top: 0; 
    left: 0; 
    width: 100%; 
    height: 100%; 
    z-index: 2; 
} 

全体スニペット:コードの下

$("#menu").click(function() { 
 
    $(".nav").toggleClass('is-open'); 
 
    $(".overlay").toggleClass('is-visible'); 
 
    $(this).toggleClass('open'); 
 
});
* { 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 
li { 
 
    list-style: none; 
 
} 
 
html { 
 
    color: #222; 
 
    font-family: Avenir, sans-serif; 
 
} 
 
a { 
 
    color: #111; 
 
    display: inline-block; 
 
    text-decoration: none; 
 
    padding: 10px 0; 
 
    text-transform: uppercase; 
 
    font-weight: lighter; 
 
    opacity: .7; 
 
    transition: all 0.4s ease-in-out; 
 
} 
 
a:hover { 
 
    opacity: 1; 
 
} 
 
.nav { 
 
    text-align: right; 
 
    float: right; 
 
} 
 
.nav li { 
 
    transition-delay: 0.15s; 
 
    transform: translate(30px, 0); 
 
    opacity: 0; 
 
    transition: all 0.4s cubic-bezier(0.19, 1, 0.22, 1); 
 
} 
 
.nav.is-open li { 
 
    transform: translate(0px, 0); 
 
    opacity: 1; 
 
} 
 
.nav.is-open li:nth-child(1) { 
 
    transition-delay: 0.1s; 
 
} 
 
.nav.is-open li:nth-child(2) { 
 
    transition-delay: 0.15s; 
 
} 
 
.nav.is-open li:nth-child(3) { 
 
    transition-delay: 0.2s; 
 
} 
 
.nav.is-open li:nth-child(4) { 
 
    transition-delay: 0.25s; 
 
} 
 
.nav.is-open li:nth-child(5) { 
 
    transition-delay: .3s; 
 
} 
 
.nav.is-open li a { 
 
    color: #fff; 
 
} 
 
#menu { 
 
    float: right; 
 
    width: 25px; 
 
    height: 15px; 
 
    position: relative; 
 
    -webkit-transform: rotate(0deg); 
 
    -moz-transform: rotate(0deg); 
 
    -o-transform: rotate(0deg); 
 
    transform: rotate(0deg); 
 
    -webkit-transition: .3s ease-in-out; 
 
    -moz-transition: .3s ease-in-out; 
 
    -o-transition: .3s ease-in-out; 
 
    transition: .3s ease-in-out; 
 
    cursor: pointer; 
 
} 
 
#menu span { 
 
    display: block; 
 
    position: absolute; 
 
    height: 2px; 
 
    width: 100%; 
 
    background: #222; 
 
    border-radius: 2px; 
 
    opacity: 1; 
 
    left: 0; 
 
    -webkit-transform: rotate(0deg); 
 
    -moz-transform: rotate(0deg); 
 
    -o-transform: rotate(0deg); 
 
    transform: rotate(0deg); 
 
    -webkit-transition: .15s ease-in-out; 
 
    -moz-transition: .15s ease-in-out; 
 
    -o-transition: .15s ease-in-out; 
 
    transition: .15s ease-in-out; 
 
} 
 
#menu span:nth-child(1) { 
 
    top: 0px; 
 
} 
 
#menu span:nth-child(2), 
 
#menu span:nth-child(3) { 
 
    top: 9px; 
 
} 
 
#menu span:nth-child(4) { 
 
    top: 18px; 
 
} 
 
#menu.open span:nth-child(1) { 
 
    top: 9px; 
 
    width: 0%; 
 
    left: 50%; 
 
} 
 
#menu.open span:nth-child(2) { 
 
    -webkit-transform: rotate(45deg); 
 
    -moz-transform: rotate(45deg); 
 
    -o-transform: rotate(45deg); 
 
    transform: rotate(45deg); 
 
} 
 
#menu.open span:nth-child(3) { 
 
    -webkit-transform: rotate(-45deg); 
 
    -moz-transform: rotate(-45deg); 
 
    -o-transform: rotate(-45deg); 
 
    transform: rotate(-45deg); 
 
} 
 
#menu.open span:nth-child(4) { 
 
    top: 9px; 
 
    width: 0%; 
 
    left: 50%; 
 
} 
 
#menu.open span { 
 
    background: #fff; 
 
} 
 
header { 
 
    float: right; 
 
    padding: 50px; 
 
} 
 
header { 
 
    position: relative; 
 
} 
 
.overlay { 
 
    position: relative; 
 
    background: transparent; 
 
    width: 100%; 
 
    height: 100vh; 
 
    z-index: -4; 
 
    transition: background .5s ease-in-out; 
 
} 
 
.overlay.is-visible:after { 
 
    content: ''; 
 
    background: #000; 
 
    position: absolute; 
 
    top: 0; 
 
    left: 0; 
 
    width: 100%; 
 
    height: 100%; 
 
    z-index: 2; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<header> 
 
    <a id="menu" href="#"> 
 
    <span></span> 
 
    <span></span> 
 
    <span></span> 
 
    <span></span> 
 
    </a> 
 
    <nav> 
 
    <ul class="nav"> 
 
     <li><a href="#">Home</a> 
 
     </li> 
 
     <li><a href="#">About</a> 
 
     </li> 
 
     <li><a href="#">Portfolio</a> 
 
     </li> 
 
     <li><a href="#">Blog</a> 
 
     </li> 
 
     <li><a href="#">Contact</a> 
 
     </li> 
 
    </ul> 
 
    </nav> 
 
</header> 
 

 
<div class="overlay">Hello,<br>this is the para that is still visible when you open the menu</div>

+0

これは最善の答えです。これはCSSを使ってコンテンツを作ることで動作しますが、width、height、topの3つの追加フィールドを設定する必要があります。これらの3つのフィールドのいずれかが変更されていると機能しません。何らかの理由。 – ajaykumar

+0

このコードでは、擬似要素を介して「実際の」オーバーレイを追加しています。ページ全体をカバーする必要があるので、絶対位置と幅/高さを100%としています。 (注:セレクタが変更されたことにお気づきですか? '.overlay.is-visible:after') – zessx

1

はあなたのために働いています。

$("#menu").click(function() { 
 
      $(".nav").toggleClass('is-open'); 
 
      $(".overlay").toggleClass('is-visible'); 
 
      $(this).toggleClass('open'); 
 
});
* { 
 
      margin: 0; 
 
      padding: 0; 
 
     } 
 
     
 
     li { 
 
      list-style: none; 
 
     } 
 
     
 
     html { 
 
      color: #222; 
 
      font-family: Avenir, sans-serif; 
 
     } 
 
     
 
     a { 
 
      color: #111; 
 
      display: inline-block; 
 
      text-decoration: none; 
 
      padding: 10px 0; 
 
      text-transform: uppercase; 
 
      font-weight: lighter; 
 
      opacity: .7; 
 
      transition: all 0.4s ease-in-out; 
 

 
     } 
 
     
 
     a:hover { 
 
      opacity: 1; 
 
      
 
     } 
 
     
 
     .nav { 
 
      text-align: right; 
 
      float: right; 
 
     } 
 
     
 
     .nav li { 
 
      transition-delay: 0.15s; 
 
      transform: translate(30px, 0); 
 
      opacity: 0; 
 
      transition: all 0.4s cubic-bezier(0.19, 1, 0.22, 1); 
 
     } 
 
     
 
     .nav.is-open li { 
 
      transform: translate(0px, 0); 
 
      opacity: 1; 
 
     } 
 
     
 
     .nav.is-open li:nth-child(1) { 
 
      transition-delay: 0.1s; 
 
     } 
 
     
 
     .nav.is-open li:nth-child(2) { 
 
      transition-delay: 0.15s; 
 
     } 
 
     
 
     .nav.is-open li:nth-child(3) { 
 
      transition-delay: 0.2s; 
 
     } 
 
     
 
     .nav.is-open li:nth-child(4) { 
 
      transition-delay: 0.25s; 
 
     } 
 
     
 
     .nav.is-open li:nth-child(5) { 
 
      transition-delay: .3s; 
 
     } 
 
     
 
     .nav.is-open li a { 
 
      color: #fff; 
 
     } 
 
     
 
     #menu { 
 
      float: right; 
 
      width: 25px; 
 
      height: 15px; 
 
      position: relative; 
 
      -webkit-transform: rotate(0deg); 
 
      -moz-transform: rotate(0deg); 
 
      -o-transform: rotate(0deg); 
 
      transform: rotate(0deg); 
 
      -webkit-transition: .3s ease-in-out; 
 
      -moz-transition: .3s ease-in-out; 
 
      -o-transition: .3s ease-in-out; 
 
      transition: .3s ease-in-out; 
 
      cursor: pointer; 
 
     } 
 
     
 
     #menu span { 
 
      display: block; 
 
      position: absolute; 
 
      height: 2px; 
 
      width: 100%; 
 
      background: #222; 
 
      border-radius: 2px; 
 
      opacity: 1; 
 
      left: 0; 
 
      -webkit-transform: rotate(0deg); 
 
      -moz-transform: rotate(0deg); 
 
      -o-transform: rotate(0deg); 
 
      transform: rotate(0deg); 
 
      -webkit-transition: .15s ease-in-out; 
 
      -moz-transition: .15s ease-in-out; 
 
      -o-transition: .15s ease-in-out; 
 
      transition: .15s ease-in-out; 
 
     } 
 
     
 
     #menu span:nth-child(1) { 
 
      top: 0px; 
 
     } 
 
     
 
     #menu span:nth-child(2), 
 
     #menu span:nth-child(3) { 
 
      top: 9px; 
 
     } 
 
     
 
     #menu span:nth-child(4) { 
 
      top: 18px; 
 
     } 
 
     
 
     #menu.open span:nth-child(1) { 
 
      top: 9px; 
 
      width: 0%; 
 
      left: 50%; 
 
     } 
 
     
 
     #menu.open span:nth-child(2) { 
 
      -webkit-transform: rotate(45deg); 
 
      -moz-transform: rotate(45deg); 
 
      -o-transform: rotate(45deg); 
 
      transform: rotate(45deg); 
 
     } 
 
     
 
     #menu.open span:nth-child(3) { 
 
      -webkit-transform: rotate(-45deg); 
 
      -moz-transform: rotate(-45deg); 
 
      -o-transform: rotate(-45deg); 
 
      transform: rotate(-45deg); 
 
     } 
 
     
 
     #menu.open span:nth-child(4) { 
 
      top: 9px; 
 
      width: 0%; 
 
      left: 50%; 
 
     } 
 
     
 
     #menu.open span { 
 
      background: #fff; 
 
     
 
     } 
 
     header { 
 
      float: right; 
 
      padding: 50px; 
 
     } 
 
     
 
     header { 
 
      position: relative; 
 
      z-index:2 
 
     } 
 
     
 
     .overlay { 
 
      background: transparent; 
 
      width: 100%; 
 
      height: 100vh; 
 
\t \t \t z-index: -4; 
 
      transition: background .5s ease-in-out; 
 
      position:absolute; 
 
      top:0px;  
 
     } 
 
     .overlay-2 { 
 
      width: 100%;    
 
     } 
 
     .overlay.is-visible { 
 
      background: #000;    
 
\t \t \t position: absolute; 
 
\t \t \t z-index: 1; 
 
      display:block;     
 
     }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<header> 
 
\t \t 
 
     <a id="menu" href="#"> 
 
      <span></span> 
 
      <span></span> 
 
      <span></span> 
 
      <span></span> 
 
     </a> 
 
     <nav> 
 
      <ul class="nav"> 
 
       <li><a href="#">Home</a></li> 
 
       <li><a href="#">About</a></li> 
 
       <li><a href="#">Portfolio</a></li> 
 
       <li><a href="#">Blog</a></li> 
 
       <li><a href="#">Contact</a></li> 
 
      </ul> 
 
     </nav> 
 
    </header> 
 
\t 
 

 
    
 
    <div class="overlay-2">Hello, <br> this is the para that is still visible when you open the menu</div> 
 
    <div class="overlay"></div>

それとも

あなたは.overlayを持つ単一のdivは、その後、CSSの線の下に書きたいと思います。

JSコードで
.overlay.is-visible { 
    color:transparent; 
} 
+0

これはちょうど私にとって完璧に機能しました!ありがとう@SCC – user1749105

+0

大歓迎@ user1749105 – SCC

0

$("#menu").click(function() { 
    $(".nav").toggleClass('is-open'); 
    $(".overlay").toggleClass('is-visible'); 
    $(".overlay p").toggle('display'); 

    $(this).toggleClass('open'); 
}); 

とHTMLのコンテンツにpタグを追加します。

<div class="overlay"><p>Hello, <br> this is the para that is still visible when you open the menu</p></div>