如何创建移动的导航栏CSS HTML?

问题描述 投票:1回答:1

我创建了一个网站,起始导航栏位于第一部分的中间。但是,我想创建一些内容,当您滚动浏览第一部分时,导航栏和标题会向上移动到顶部,直到到达顶部,然后像普通的标题和导航栏一样位于顶部(固定在结束,而不是开始时的绝对定位)。这是我的HTML和CSS代码。我需要JavaScript吗?谢谢!

* {
  margin: 0;
  padding: 0;
}

body {
  width: 100%;
  height: 100vh;
  background: url(https://images.squarespace-cdn.com/content/v1/5b47dd31a9e028b8190b6ad4/1577742949961-Y1FS4223B1A76MMFL9JP/ke17ZwdGBToddI8pDm48kHH9S2ID7_bpupQnTdrPcoF7gQa3H78H3Y0txjaiv_0fDoOvxcdMmMKkDsyUqMSsMWxHk725yiiHCCLfrh8O1z4YTzHvnKhyp6Da-NYroOW3ZGjoBKy3azqku80C789l0nQwvinDXPV4EYh2MRzm-RRB5rUELEv7EY2n0AZOrEupxpSyqbqKSgmzcCPWV5WMiQ/marc+show.jpg) no-repeat center center/cover fixed;
}

html {
  scroll-behavior: smooth;
  scroll-snap-type: y mandatory;
}

.navbar {
  position: fixed;
  top: 63.5%;
  left: 0px;
  width: 100vw;
  justify-content: flex-end;
  display: flex;
}

.navbar ul {
  display: flex;
  flex-direction: row-reverse;
  margin: 0 70px;
}

.navbar ul li a {
  text-decoration: none;
  color: white;
  transition: color 0.5s;
}

.navbar ul li {
  list-style: none;
  padding: 0px 10px;
  margin: 5px;
  font-family: 'Roboto', sans-serif;
  font-size: 17px;
}

section {
  display: flex;
  flex-direction: column;
  width: 100vw;
  height: 100vh;
  align-items: center;
  justify-content: center;
  scroll-snap-align: center;
  color: white;
  background: rgba(0, 0, 0, 0.1);
}

.navbar ul li a:hover {
  color: rgba(200, 200, 200, 0.8);
}

.Marc {
  position: absolute;
  top: 62.5%;
  left: 65px;
  font-family: 'Roboto', sans-serif;
  font-size: 40px;
  color: white;
}

.Marc a {
  text-decoration: none;
  color: white;
}

.List {
  position: absolute;
  top: 63%;
  left: 29%;
}

.List ul li {
  list-style: none;
  margin: 0 0 25px 0;
}

.List ul li a {
  color: white;
  font-family: 'Roboto', sans-serif;
}
<div id="container">
  <nav class="navbar">
    <ul>
      <li><a href="#ABOUT">ABOUT</a></li>
      <li><a href="#BOOKING">BOOKING</a></li>
      <li><a href="#MERCH">MERCH</a></li>
      <li><a href="#TICKETS">TICKETS</a></li>
    </ul>
  </nav>
  <div class="Marc">
    <a href="#">MARC'S PAGE</a>
  </div>
  <div class="List">
    <ul>
      <li><a href="http://www.youtube.com">youtube</a></li>
      <li><a href="http://www.instagram.com">instagram</a></li>
      <li><a href="http://www.facebook.com">facebook</a></li>
      <li><a href="http://www.twitter.com">twitter</a></li>
    </ul>
  </div>
  <section>
  </section>
  <section id="TICKETS">
    <h1>Tickets</h1>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Praesentium odit quae, sequi sit ex numquam.</p>
  </section>
  <section id="MERCH">
    <h1>Merch</h1>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Praesentium odit quae, sequi sit ex numquam.</p>
  </section>
  <section id="BOOKING">
    <h1>Booking</h1>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Praesentium odit quae, sequi sit ex numquam.</p>
  </section>
  <section id="ABOUT">
    <h1>About</h1>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Praesentium odit quae, sequi sit ex numquam.</p>
  </section>
</div>
javascript jquery html css
1个回答
2
投票

使用粘贴位置

body {
  height: 300vh;
  border: 4px dashed #000;
}

.spacer {
  height: calc(50vh - 1em);
}


nav {
  position: sticky;
  top: 0;
}
<div class="spacer"></div>
<nav>NAVIGATION</nav>

代码示例-简化了

* {
  margin: 0;
  padding: 0;
}

html {
  scroll-behavior: smooth;
  scroll-snap-type: y mandatory;
}

body {
  background: url(https://images.squarespace-cdn.com/content/v1/5b47dd31a9e028b8190b6ad4/1577742949961-Y1FS4223B1A76MMFL9JP/ke17ZwdGBToddI8pDm48kHH9S2ID7_bpupQnTdrPcoF7gQa3H78H3Y0txjaiv_0fDoOvxcdMmMKkDsyUqMSsMWxHk725yiiHCCLfrh8O1z4YTzHvnKhyp6Da-NYroOW3ZGjoBKy3azqku80C789l0nQwvinDXPV4EYh2MRzm-RRB5rUELEv7EY2n0AZOrEupxpSyqbqKSgmzcCPWV5WMiQ/marc+show.jpg) no-repeat center center/cover fixed;
  font: 14px/1.4 'Roboto', sans-serif;
  color: white;
}

ul {
  list-style: none;
}

a {
   color: white;
   transition: 0.24s;
   text-decoration: none;
}

a:hover {
  opacity: 0.7;
}

section {
  display: flex;
  flex-direction: column;
  height: 100vh;
  align-items: center;
  justify-content: center;
  scroll-snap-align: center;
  color: white;
  background: rgba(0, 0, 0, 0.1);
}

section#MENU {
  position: sticky;
  top: 0;
  z-index: 10;
  flex-flow: row nowrap;
  height: 60px;
}
section.MENU--pre {
  height: calc(65vh - 30px); /* 100vh - 60px, so use -30px */
}
section.MENU--post {
  height: calc(35vh - 30px); /* 100vh - 60px, so use -30px */
}

.Marc {
  font-size: 30px;
  padding: 0 30px;
}
.Navbar {
  padding: 0 30px;
}
.Navbar ul {
  display: flex;
}
.Navbar ul li a {
  display: block;
  font-size: 17px;
  padding: 0px 10px;
}
<section id="HOME" class="MENU--pre"></section>

<section id="MENU">
  <div class="Marc">
    <a href="#HOME">MARC</a>
  </div>
  <nav class="Navbar">
    <ul>
      <li><a href="#ABOUT">ABOUT</a></li>
      <li><a href="#BOOKING">BOOKING</a></li>
      <li><a href="#MERCH">MERCH</a></li>
      <li><a href="#TICKETS">TICKETS</a></li>
    </ul>
  </nav>
</section>

<section class="MENU--post"></section>

<section id="ABOUT">
  <h1>About</h1>
  <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Praesentium odit quae, sequi sit ex numquam.</p>
</section>

<section id="BOOKING">
  <h1>Booking</h1>
  <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Praesentium odit quae, sequi sit ex numquam.</p>
</section>

<section id="MERCH">
  <h1>Merch</h1>
  <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Praesentium odit quae, sequi sit ex numquam.</p>
</section>

<section id="TICKETS">
  <h1>Tickets</h1>
  <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Praesentium odit quae, sequi sit ex numquam.</p>
</section>
© www.soinside.com 2019 - 2024. All rights reserved.