当前位置: 首页 > 面试题库 >

当元素包裹在另一个元素中时,为什么position:sticky不起作用?

叶元凯
2023-03-14
问题内容

我正在试验粘性导航,但遇到了问题。问题是,当我将导航栏放在其他元素中时,它不再具有粘性。

.nav-wrapper{

  position: absolute;

  bottom: 0;

}



.nav-wrapper nav{

  position: sticky;

  top: 0;

}


    <div class="nav-wrapper">

     <nav>

      <a href="#"><li>Home</li></a>

      <a href="#"><li>About</li></a>

     </nav>

    </div>

问题答案:

粘性位置考虑父元素的行为。在您的情况下,父元素的高度由sticky元素定义,因此该元素没有粘性。

添加边框以更好地查看问题:

.nav-wrapper {

  position: absolute;

  bottom: 0;

  border: 2px solid;

}



.nav-wrapper nav {

  position: sticky;

  top: 0;

}



body {

  min-height:200vh;

}


<div class="nav-wrapper">

  <nav>

    <a href="#">

      <li>Home</li>

    </a>

    <a href="#">

      <li>About</li>

    </a>

  </nav>

</div>

现在将高度添加到父元素,看看发生了什么:

.nav-wrapper {

  position: absolute;

  bottom: 0;

  border: 2px solid;

  height:80vh;

}



.nav-wrapper nav {

  position: sticky;

  top: 0;

}



body {

  min-height:200vh;

}


<div class="nav-wrapper">

  <nav>

    <a href="#">

      <li>Home</li>

    </a>

    <a href="#">

      <li>About</li>

    </a>

  </nav>

</div>

粘性行为很好,因为父元素上有足够的高度,可以在特定阈值之后固定该元素。

粘性放置的元素是其计算的位置值为粘性的元素。它被看成相对定位 ,直到它的 包含块超过指定阈值
(例如,设置顶部为比自动其它值)它的流动根内(或容器它内滚动),在该点它被视为“卡住” ,直到满足 所述其包含块的相对边缘




 类似资料:
  • 我有一个场景,我们在Tinymce中定义了有效和无效元素。以下是这两个值: “无效的_元素”是为了防止输入JavaScript。通过以上设置,Tinymce不会阻止JavaScript,但如果我删除“valid_元素”,它就会开始工作。 我不确定我是否删除了“valid\u元素”,Tinymce将允许所有内容,这就是为什么保留“valid\u元素”。 Tinymce版本:5.6.2 相关问题,但在

  • img单击很少会失败,即使要获得单击的元素是相同的,也不会声称该元素不可单击。 我有一个对话框,包含一些按钮(关闭按钮与img X在里面)。 如您所见,元素是相同的。我开始怀疑这个元素的陈旧性,它的支持性,甚至元素移动的可能性。 下面是一个代码片段,其中包括调试消息,我将解释。 在执行单击之前: 正如您所看到的,内部HTML只是一个IMG: 因此,任何关于为什么会发生这种情况的建议都将非常感谢。

  • 问题内容: 我正在尝试将伪元素与元素一起使用。 考虑一下HTML和CSS … HTML CSS 这不会产生预期的效果(已在Chrome 13和Firefox 6中测试)。但是,它可以使用或元素。 为什么不? 有没有一种方法可以使伪元素与元素一起使用? 问题答案: 规范说 … 注意。该规范并未完全定义替换元素(例如HTML中的IMG)以及与替换元素的交互。这将在以后的规范中更详细地定义。 我猜这意味

  • 本文向大家介绍为什么建议Fragment包裹元素?它的简写是什么?相关面试题,主要包含被问及为什么建议Fragment包裹元素?它的简写是什么?时的应答技巧和注意事项,需要的朋友参考一下 为一个组件添加多个元素,可以讲你的子组件列表添加到一个分组中(<></>),并且不会再DOM增加额外节点

  • 问题内容: 如何检查一个DOM元素是否是另一个DOM元素的子元素?有内置的方法吗?例如,类似: 要么 如果没有,那么有什么想法怎么做?它还需要跨浏览器。我还应该提到,孩子可以嵌套在父级以下的多个级别。 问题答案: 更新: 现在有一种本地方法可以实现此目的。。在评论中也提到了答案。 旧答案: 使用该属性应该可以。从跨浏览器的角度来看,它也是非常安全的。如果已知这种关系是一级的,则可以简单地检查一下:

  • 经常看到绝对定位元素有一个空的div包着,其实是可以省略的,为什么这么写?,这么做是为了什么? 下面是例子 https://ant.design/components/modal-cn https://robertsspaceindustries.com/starmap