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

如何创建不同级别的粘性标头?

严扬
2023-03-14
问题内容

我想以一种优雅的方式在用户滚动时在窗口顶部“收集”多级标题,并position:sticky让我获得90%的访问权限。以下代码段的工作方式与我想要的一样,但有一个例外:标题2b到达顶部时,标题3b仍然可见。由于标头3b是标头2a的“子级”,因此我希望标头2b到达顶部后,滚动标头即可滚动或以某种方式隐藏。(可以预料,标题1b和标题2d都有相同的问题。)

我知道我在这里拥有CSS 应该 是如何工作的,但是有没有一种优雅的方法可以使其按我的要求工作呢?我试着给p一个background- colorwhite和搞乱z-index,但我没有任何运气。

h1, h2, h3 {

  position: -webkit-sticky;

  position: sticky;

  top: 0px;

}



h1 {

  background-color: red;

  height: 35px;

}

h2 {

  background-color: blue;

  height: 25px;

  top: 35px;

}

h3 {

  background-color: green;

  height: 20px;

  top: 60px;

}


<h1>Header 1a</h1>

<p>Lorem ipsum dolor sit amet, no qui quis eloquentiam.</p>

<h2>Header 2a</h2>

<p>Lorem ipsum dolor sit amet, no qui quis eloquentiam.</p>

<h3>Header 3a</h3>

<p>Lorem ipsum dolor sit amet, no qui quis eloquentiam.</p>

<h3>Header 3b</h3>

<p>Lorem ipsum dolor sit amet, no qui quis eloquentiam.</p>

<h2>Header 2b</h2>

<p>Lorem ipsum dolor sit amet, no qui quis eloquentiam.</p>

<h3>Header 3c</h3>

<p>Lorem ipsum dolor sit amet, no qui quis eloquentiam.</p>

<h3>Header 3d</h3>

<p>Lorem ipsum dolor sit amet, no qui quis eloquentiam.</p>

<h1>Header 1b</h1>

<p>Lorem ipsum dolor sit amet, no qui quis eloquentiam.</p>

<h2>Header 2c</h2>

<p>Lorem ipsum dolor sit amet, no qui quis eloquentiam.</p>

<h3>Header 3e</h3>

<p>Lorem ipsum dolor sit amet, no qui quis eloquentiam.</p>

<h3>Header 3f</h3>

<p>Lorem ipsum dolor sit amet, no qui quis eloquentiam.</p>

<h2>Header 2d</h2>

<p>Lorem ipsum dolor sit amet, no qui quis eloquentiam.</p>

<h3>Header 3g</h3>

<p>Lorem ipsum dolor sit amet, no qui quis eloquentiam.</p>

<h3>Header 3h</h3>

<p>Lorem ipsum dolor sit amet, no qui quis eloquentiam.</p>

问题答案:

我认为执行此操作的逻辑方法是考虑嵌套div,如下所示:

h1,

h2,

h3 {

  position: -webkit-sticky;

  position: sticky;

  top: 0px;

  margin:0;

}



h1 {

  background-color: red;

  height: 35px;

  z-index:3;

}



h2 {

  background-color: blue;

  height: 25px;

  top:35px;

  z-index:2;

}



h3 {

  background-color: green;

  height: 20px;

  top:60px;

  z-index:1;

}


<div>

  <h1>Header 1a</h1>

  <p>Lorem ipsum dolor sit amet, no qui quis eloquentiam.</p>

  <div>

    <h2>Header 2a</h2>

    <p>Lorem ipsum dolor sit amet, no qui quis eloquentiam.</p>

    <div>

      <h3>Header 3a</h3>

      <p>Lorem ipsum dolor sit amet, no qui quis eloquentiam.</p>

      <h3>Header 3b</h3>

      <p>Lorem ipsum dolor sit amet, no qui quis eloquentiam.</p>

    </div>

  </div>

  <div>

    <h2>Header 2b</h2>

    <p>Lorem ipsum dolor sit amet, no qui quis eloquentiam.</p>

    <div>

      <h3>Header 3c</h3>

      <p>Lorem ipsum dolor sit amet, no qui quis eloquentiam.</p>

      <h3>Header 3d</h3>

      <p>Lorem ipsum dolor sit amet, no qui quis eloquentiam.</p>

    </div>

  </div>

</div>

<div>

  <h1>Header 1b</h1>

  <p>Lorem ipsum dolor sit amet, no qui quis eloquentiam.</p>

  <div>

    <h2>Header 2c</h2>

    <p>Lorem ipsum dolor sit amet, no qui quis eloquentiam.</p>

    <div>

      <h3>Header 3e</h3>

      <p>Lorem ipsum dolor sit amet, no qui quis eloquentiam.</p>

      <h3>Header 3f</h3>

      <p>Lorem ipsum dolor sit amet, no qui quis eloquentiam.</p>

    </div>

  </div>

  <div>

    <h2>Header 2d</h2>

    <p>Lorem ipsum dolor sit amet, no qui quis eloquentiam.</p>

    <div>

      <h3>Header 3g</h3>

      <p>Lorem ipsum dolor sit amet, no qui quis eloquentiam.</p>

      <h3>Header 3h</h3>

      <p>Lorem ipsum dolor sit amet, no qui quis eloquentiam.</p>

    </div>

  </div>

</div>


 类似资料:
  • 我正在尝试使用CSS创建一个粘性背景,类似这样的东西(粉红色背景将被完全填充,但例如,我保持了最小可见高度) 但是我似乎不能重叠2个粉红色和黄色的div,如果我试图改变位置:绝对和相对,那么内容中的文本就会像这样溢出 有什么方法可以在避免溢出的同时创建所需的背景吗? 编辑 如果您正在寻找完全的背景填充解决方案,请检查此链接: 如何适应粘性背景图像并防止css溢出?

  • 为了在我们的JUnit测试中使用H2数据库而不是调用Oracle,我被阻止在H2上创建别名以模拟一些Oracle兼容性: > 我首先为日期到字符的转换声明了to_char的别名:可以

  • 我目前正在开发一个api级别在21-29之间的android应用程序。我的问题是api级别29以下不支持某些权限。例如权限不需要声明api级别29以下。当我定义这个权限并获取所有权限,然后要求用户授予权限时,低于api级别29的应用程序正在崩溃。我需要为不同的api级别定义不同的权限或者如何处理这个问题? 下面是我的manifest.xml 这是我获得所有权限的代码

  • 公共类DoSomething{private static final Logger Logger=LoggerFactory.getLogger(DoSomething.class); 我试图创建一个LogMessage的对象。并在DoSomething类的方法中使用它。这是好的还是我应该移动方法中的行?

  • 假设一个对象有10个实例,其中有一些字段。其中一个字段指定ID。另外两个字段包含有关位置(纬度和经度)的数据。一个字段包含日期时间信息。 在这10个例子中,ID保持不变,但与日期、时间和位置相关的字段发生了变化。 上述数据是虚拟数据。但你可以观察到id保持不变,只是位置和时间发生了变化。 使用java, sping-data-elasticsearch我能够把信息在弹性搜索。 我面临的问题是,在弹

  • 我正在尝试创建基于不同级别的“不同”附加器,但到目前为止,我找不到一种隔离日志级别的方法。。。。 我需要一种方法,能够土地只有INFO优先排序的日志被追加。因为INFO级别的日志记录也会显示DEBUG标记的日志记录器...这对我没有帮助。 另一件事是,对于“相同”包,我无法定义不同的日志附加器: 在这里,我得到了如下错误: