首页 > 解决方案 > Css 不会在小屏幕上隐藏东西

问题描述

@import url('https://fonts.googleapis.com/css?family=Raleway');


.navibar{
  background: rgba(20, 21, 22, .10);
  text-align: center;
  position: absolute;
  z-index: 999;
  box-shadow: -1px 2px 5px black;
  width: 100%;

}

.nav-toggle {
  display: none;
}

.nav-toggle-label{
  position: absolute;
  top: 0;
  left: 0;
  margin-left: 1em;
  height: 100%;
  display: flex;
  align-items: center;
}

.nav-toggle-label span,
.nav-toggle-label span::before,
.nav-toggle-label span::after {
    display: block;
    background: white;
    height: 2px;
    width: 2em;
    border-radius: 2px;
    position: relative;
}

.nav-toggle-label span::before,
.nav-toggle-label span::after{
    content: '';
    position: absolute;
}

.nav-toggle-label span::before{
  bottom: 7px;
}
.nav-toggle-label span::after{
  top: 7px;
}

nav{
    position: absolute;
    text-align: left;
    top: 100%;
    left: 0;
    background: rgba(20, 21, 22, .4);
    width: 100%;
    transform: scale(1, 0);
    transform-origin: top;
    transition: transform 400ms ease-in-out;
}

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

nav li {
  margin-bottom: 1em;
  margin-left: 1em;
}

nav a {
  color: white;
  text-decoration: none;
  font-size: 1.2rem;
  text-transform: uppercase;
  font-family: 'Raleway', sans-serif;
  opacity: 0;
  transition: opacity 150ms ease-in-out;
  user-select: none;
}

nav a:hover {
  color: #000;
}

.nav-toggle:checked ~ nav {
   transform: scale(1,1);
}

.nav-toggle:checked ~ nav a {
  opacity: 1;
  transition: opacity 250ms ease-in-out 250ms;
}
.center{
  color: white;
 position: absolute;
 padding: -101px 0;
 border: 1px solid black;
 box-shadow: -1px 1px 100px black;
 -webkit-text-stroke: 2px black;
 text-align: center;
 font-size: 70px;
 width: 30%;
 top: 50%;
 left: 50%;
 margin-right: -50%;
 transform: translate(-50%, -50%);
}

@media screen and (min-width: 600px) {
  /*This should hide center when using mobile but for some reason it doesn't work am i doing something wrong?*/
  .center {
    display: none;
  }
  .nav-toggle-label{
    display: none;
  }

  .navibar{
    display: grid;
    grid-template-columns: 1fr auto minmax(600px, 3fr) 1fr;
  }
  .logo{
    grid-column: 2 / 3;
  }

  nav{
    all: unset;
    grid-column: 3 / 4;
    display: flex;
    justify-content: flex-end;
    align-items: center;
  }

  nav ul {
    display: flex;
  }

  nav li {
    margin-left: 3em;
    margin-bottom: 0;
  }
  nav a {
    opacity: 1;
    position: relative;
  }
  nav a::before {
    content: '';
    display: block;
    height: 5px;
    background: black;
    position: absolute;
    bottom: -.75em;
    left: 0;
    right: 0;
    transform: scale(0, 1);
    transition: transform ease-in-out 250ms;
  }
  nav a:hover::before{
    transform: scale(1,1);
  }
}


.parheader{
  box-sizing: border-box;
  min-height: 20vh;
  padding: 45vw 0 5vw;
  position: relative;
  transform-style: inherit;
  width: 100vw;
}

.parheader, .parheader:before{
  background: 50% 50% / cover;
}

.parheader::before{
  bottom: 0;
  content: "";
  left: 0;
  position: absolute;
  right: 0;
  top: 0;
  display: block;
  background-image: url(../kuvat/header.jpg);
  background-size: cover;
  transform-origin: center center 0;
  transform: translateZ(-1px) scale(2);
  z-index: -1;
  min-height: 100vh;
}

  .parheader * {
    font-weight: normal;
    letter-spacing: 0.2em;
    margin: 0;
    padding: 1em 0;
    height: 1em;
    position: relative
  }
  
  
<!DOCTYPE html>
<html>
<title>W3.CSS Template</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="css/nav.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Montserrat">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<style>
body,h1,h2,h3,h4,h5,h6 {font-family: "Lato", sans-serif}
.w3-bar,h1,button {font-family: "Montserrat", sans-serif}
.fa-laptop,.fa-bug {font-size:200px}
</style>
<body>
<!-- Navbar -->

<header>
      <div class="navibar">
        <a href="index.php"><img src="kuvat/logo.png" alt="logo" class="logo"></a>
      <input type="checkbox" id="nav-toggle" class="nav-toggle">

      <nav>
        <ul>
          <li><a href="index.php">Etusivu</a></li>
          <li><a href="sivut/tehtavat.php">Tehtävät</a></li>
          <li><a href="#">Tietoa</a></li>
          <li><a href="#">ota yhteyttä</a></li>
          <li><a href="#">Kirjaudu sisään</a></li>
        </ul>
      </nav>
      <label for="nav-toggle" class="nav-toggle-label">
        <span></span>
      </label>
      </div>

</header>


<!-- Header -->
<header>
    <div class="parheader">
    </div>
    <div class="center">
  <p>KOTISIVU</p>
</div>
</header>


</body>
</html>

所以我只是想学一点点,让 navigatorbar 没什么太令人印象深刻的东西,我遇到了这个奇怪的问题。当我在移动设备上尝试它时,它仍然显示应该隐藏的面板和文本,所以如果你们中的任何人可以帮助我。我面临的问题的一些截图:

截图 1

截图 2

不确定您是否可以从这些照片中看到任何内容,但透明面板和文字由于某种原因不会消失,所以请帮助我。不介意它只是测试的外观,我真的想让它工作。Stackoverflow 出于某种原因希望我输入更多详细信息。隐藏其他东西就像那个下拉按钮一样工作正常,但那个面板不会这样做。

标签: htmlcss

解决方案


更改此行

 @media screen and (min-width: 600px) 

对此:

 @media screen and (max-width: 600px) 

解释:

max-width: 600px //表示对宽度小于 600px 的屏幕尺寸进行媒体查询

min-width: 600px //表示对宽度超过 600px 的屏幕尺寸进行媒体查询

还要了解媒体查询也可能取决于屏幕高度。在这种情况下,您处理 max-height 和 min-height


推荐阅读