当前位置: 首页 > 知识库问答 >
问题:

“position:sticky;”属性如何工作?

狄富
2023-03-14

我想让导航栏贴在视区的顶部,一旦用户滚动页面,但它不起作用,我不知道为什么。如果你能帮忙,这里是我的HTML和CSS代码

null

.container {
  min-height: 300vh;
}
.nav-selections {
  text-transform: uppercase;
  letter-spacing: 5px;
  font: 18px "lato",sans-serif;
  display: inline-block;
  text-decoration: none;
  color: white;
  padding: 18px;
  float: right;
  margin-left: 50px;
  transition: 1.5s;
}

.nav-selections:hover{
  transition: 1.5s;
  color: black;
}

ul {
  background-color: #B79b58;
  overflow: auto;
}

li {
  list-style-type: none;
}
<main class="container">
  <nav style="position: sticky; position: -webkit-sticky;">
    <ul align="left">
      <li><a href="#/contact" class="nav-selections" style="margin-right:35px;">Contact</a></li>
      <li><a href="#/about" class="nav-selections">About</a></li>
      <li><a href="#/products" class="nav-selections">Products</a></li>
      <li><a href="#" class="nav-selections">Home</a></li>
    </ul>
  </nav>
</main>

null

共有2个答案

濮阳弘扬
2023-03-14

检查祖先元素是否有溢出集(例如overflow:hidden);试着切换它。您可能必须在DOM树上爬得比您预期的更高=)。

这可能会影响您在后代元素上的位置:sticky

左丘嘉言
2023-03-14

粘性定位是相对定位和固定定位的混合体。元素将被视为相对定位,直到它跨过指定的阈值,在该阈值处被视为固定定位。
...
必须指定至少具有toprightbottomleft之一的阈值,以使粘滞定位的行为符合预期。否则就与相对定位分不清了。[图片来源:MDN]

因此,在您的示例中,您必须使用top属性来定义它在最后应该粘贴的位置。

null

html, body {
  height: 200%;
}

nav {
  position: sticky;
  position: -webkit-sticky;
  top: 0; /* required */
}

.nav-selections {
  text-transform: uppercase;
  letter-spacing: 5px;
  font: 18px "lato", sans-serif;
  display: inline-block;
  text-decoration: none;
  color: white;
  padding: 18px;
  float: right;
  margin-left: 50px;
  transition: 1.5s;
}

.nav-selections:hover {
  transition: 1.5s;
  color: black;
}

ul {
  background-color: #B79b58;
  overflow: auto;
}

li {
  list-style-type: none;
}
<nav>
  <ul align="left">
    <li><a href="#/contact" class="nav-selections" style="margin-right:35px;">Contact</a></li>
    <li><a href="#/about" class="nav-selections">About</a></li>
    <li><a href="#/products" class="nav-selections">Products</a></li>
    <li><a href="#" class="nav-selections">Home</a></li>
  </ul>
</nav>
 类似资料:
  • 问题内容: 第一次使用Java开发,第一次使用Android开发,因此这是一个新手问题。 我目前有以下代码: 简短问题: 什么是 的.class 属性来完成,f.ex. 在’ C = NewTourny 的.class ‘? 为什么我不能将c转换为Tourny(所有这些类的父类)? 长问题: 目前,这可以处理整个应用程序中的所有按钮导航,并且工作正常。但是,如您所见,当我将c强制转换为Class时

  • 问题内容: 我已经成功地使用了Python属性,但看不到它们如何工作。如果我取消引用类之外的属性,我只会得到一个类型的对象: 但是,如果我将一个属性放在一个类中,则行为会大不相同: 我注意到未绑定仍然是对象,因此类实例化必须在做魔术,但是那是什么魔术呢? 问题答案: 正如其他人指出的那样,它们使用称为描述符的语言功能。 当您通过类访问实际属性对象时,返回该属性对象的原因在于该属性如何实现特殊方法:

  • 我们知道,在maven项目中,我们可以设置以下属性来为插件maven-compiler-plugin指定java版本: 问题是,如果要使用上述属性,我们是否应该在本地安装jdk8呢?

  • 问题内容: 如果我遵循此处描述的JavaFX属性定义,那么我尝试执行的操作将正常工作。现在,我想使用Java Beans属性适配器从Java Beans对象定义属性。由于没有文档,我无法弄清楚它是如何工作的。 假设我有一个简单的POJO类: 和一个PersonProperty: 最后是一个测试: 我希望看到: 而是什么也没有出现。 如果我在personTest的末尾添加 问题答案: 我认为这里的问

  • 问题内容: 实际如何运作?是否可以对未指定的元素起作用?它是否偏向于具有指定元素的元素(即使它们位于顶部)? 这样的数字是否必须为负数? 或不?所有正数(以递增值表示)会以最后一个在顶部,中间在中间,第一个在底部为结尾吗? 问题答案: 允许使用负整数和正整数。 必须在元素上设置位置。 不过,在深入了解这些细节之前,让我从头开始进行解释。 每个网页都由所谓的堆栈上下文组成。从字面上看,您可以将它们视

  • 是因为我的文件名精度设置为秒吗? 是因为我只设置了吗? 或者这是怎么回事? 我的目标是建立一个滚动配置,记录最近5次应用程序运行的情况。