如何在Google Chrome浏览器的可滚动容器中实现元素的反向堆叠?

脊柱发育

通过下面的代码,我已经达到了我想要的效果,但是它似乎只能在Firefox和Edge中工作。在Chrome中,元素可以根据需要进行堆叠,但是没有水平滚动条,因此最右边的项目是隐藏的,用户无法访问。

如您所见,页眉和页脚保持不变,而my-app元素是唯一可滚动的部分。左侧的项目显示在右侧项目的上方,而一直到右侧的项目可通过滚动获得。

body {
  margin: 0;
  height: 100vh;
}

my-app {
  display: flex;
  height: 100vh;
  flex-direction: column;
}

header, footer {
  height: 25px;
  background-color: black;
  color:white;
}

main {
  display: flex;
  flex-direction: row-reverse;
  flex-grow: 1;
  justify-content: flex-end;
  margin: 0;
  overflow-x: auto;
  width: 100vw;
}

.card {
  --card-height: 200px;
  --card-width: 250px;

  align-items: center;
  background: linear-gradient(rgba(179, 156, 95, 1), rgba(150, 117, 24, 1));
  border-radius: 5px;
  box-shadow: 1.5rem 0 2rem #222;
  color: #000;
  display: flex;
  flex-direction: column;
  height: var(--card-height);
  justify-content: center;
  min-width: var(--card-width);
  position: relative;
  text-align: center;
  transition: all .15s ease-in-out;
  transition: margin .3s ease-in-out;
  width: var(--card-width);
}

.card:not(:last-of-type) {
    margin-left: calc(var(--card-width) * -.5);
}

.card:hover:not(:last-of-type) {
    margin-left: 0;
}
<my-app>
  <header>Header</header>
  <main>
    <div class="card">1</div>
    <div class="card">2</div>
    <div class="card">3</div>
    <div class="card">4</div>
    <div class="card">5</div>
    <div class="card">6</div>
    <div class="card">7</div>
    <div class="card">8</div>
    <div class="card">9</div>
    <div class="card">10</div>
    <div class="card">11</div>
    <div class="card">12</div>
    <div class="card">13</div>
    <div class="card">14</div>
    <div class="card">15</div>
  </main>
  <footer>Footer</footer>
</my-app>

如果我将应用于main的css更改为:

main {
  ...
  flex-direction: row;
  ...
  justify-content: flex-start;
  ...
}

然后出现滚动条,但未正确堆叠物品(右侧的物品与左侧的物品重叠)。

如果我走一步,并添加direction: rtl;main风格为好,布局按预期工作,但默认滚动位置一路到屏幕的右侧(这是有道理的)。我可能可以保留此代码,并添加一些JavaScript来更改页面加载时的滚动位置,但这些操作似乎都非常hacky。有没有更好的方法来实现我正在寻找的布局,该布局可以在Chrome,Firefox和Edge中使用?

科什

看起来像一个额外的包装器可以解决您的问题:

body {
  margin: 0;
  height: 100vh;
}

my-app {
  display: flex;
  height: 100vh;
  flex-direction: column;
}

header,
footer {
  height: 25px;
  background-color: black;
  color: white;
}

main {
  flex-grow: 1;
  margin: 0;
  overflow-x: auto;
  width: 100vw;
}

.wrapper {
  display: flex;
  flex-direction: row-reverse;
  justify-content: flex-end;
}

.card {
  --card-height: 200px;
  --card-width: 250px;
  align-items: center;
  background: linear-gradient(rgba(179, 156, 95, 1), rgba(150, 117, 24, 1));
  border-radius: 5px;
  box-shadow: 1.5rem 0 2rem #222;
  color: #000;
  display: flex;
  flex-direction: column;
  height: var(--card-height);
  justify-content: center;
  min-width: var(--card-width);
  position: relative;
  text-align: center;
  transition: all .15s ease-in-out;
  transition: margin .3s ease-in-out;
  width: var(--card-width);
}

.card:not(:last-of-type) {
  margin-left: calc(var(--card-width) * -.5);
}

.card:hover:not(:last-of-type) {
  margin-left: 0;
}
<my-app>
  <header>Header</header>
  <main>
    <div class="wrapper">
      <div class="card">1</div>
      <div class="card">2</div>
      <div class="card">3</div>
      <div class="card">4</div>
      <div class="card">5</div>
      <div class="card">6</div>
      <div class="card">7</div>
      <div class="card">8</div>
      <div class="card">9</div>
      <div class="card">10</div>
      <div class="card">11</div>
      <div class="card">12</div>
      <div class="card">13</div>
      <div class="card">14</div>
      <div class="card">15</div>
    </div>
  </main>
  <footer>Footer</footer>
</my-app>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在焦点更改时停止浏览器自动滚动容器

来自分类Dev

如何在 flexbox 中制作嵌套的可滚动容器?

来自分类Dev

如何在Google Chrome浏览器中运行Postman

来自分类Dev

鼠标滚轮滚动可导致Google Chrome浏览器中的放大/缩小

来自分类Dev

如何在Codename one中向下滚动可滚动容器?

来自分类Dev

如何使嵌套元素在可拖动容器中不可拖动?

来自分类Dev

如何在Google Chrome浏览器中重新加载Chrome PDF Viewer?

来自分类Dev

如何在Google Chrome浏览器中激活JavaScript调试器?

来自分类Dev

如何在移动浏览器中垂直固定元素,但仍然允许水平滚动?

来自分类Dev

如何在Google Chrome浏览器中添加启动选项/命令行选项

来自分类Dev

如何在Windows任务面板中更改Google Chrome浏览器窗口顺序

来自分类Dev

如何在Google Chrome浏览器中添加启动选项/命令行选项

来自分类Dev

暂停后如何在Google Chrome浏览器中查看异常消息?

来自分类Dev

如何在Google Chrome浏览器中获取5.1音频?

来自分类Dev

如何在Google Chrome浏览器中停止GIF动画?

来自分类Dev

如何在Google Chrome浏览器桌面版中查看网页的移动版本?

来自分类Dev

如何在Google Chrome浏览器的书签中添加收藏夹图标?

来自分类Dev

如何在Google Chrome浏览器中禁用Facebook通知?

来自分类Dev

如何在Windows 10的Google Chrome浏览器中获取重新定义的标签?

来自分类Dev

如何在Google Chrome浏览器中永久禁用WebGL?

来自分类Dev

如何在Google Chrome浏览器中快速更改用户个人资料?

来自分类Dev

如何在Google Chrome浏览器中撤消样式的网页编辑

来自分类Dev

如何在Google Chrome浏览器中检索隐藏的扩展程序

来自分类Dev

如何在Google Chrome浏览器中删除Stackoverflow Cookie和证书?

来自分类Dev

如何在Google Chrome浏览器中进行多个浏览会话?

来自分类Dev

如何在Chrome浏览器中调试AngularJS

来自分类Dev

如何在Chrome中禁用浏览器缓存

来自分类Dev

如何在Chrome浏览器中调试AngularJS

来自分类Dev

如何在Chrome浏览器中运行硒测试?

Related 相关文章

  1. 1

    如何在焦点更改时停止浏览器自动滚动容器

  2. 2

    如何在 flexbox 中制作嵌套的可滚动容器?

  3. 3

    如何在Google Chrome浏览器中运行Postman

  4. 4

    鼠标滚轮滚动可导致Google Chrome浏览器中的放大/缩小

  5. 5

    如何在Codename one中向下滚动可滚动容器?

  6. 6

    如何使嵌套元素在可拖动容器中不可拖动?

  7. 7

    如何在Google Chrome浏览器中重新加载Chrome PDF Viewer?

  8. 8

    如何在Google Chrome浏览器中激活JavaScript调试器?

  9. 9

    如何在移动浏览器中垂直固定元素,但仍然允许水平滚动?

  10. 10

    如何在Google Chrome浏览器中添加启动选项/命令行选项

  11. 11

    如何在Windows任务面板中更改Google Chrome浏览器窗口顺序

  12. 12

    如何在Google Chrome浏览器中添加启动选项/命令行选项

  13. 13

    暂停后如何在Google Chrome浏览器中查看异常消息?

  14. 14

    如何在Google Chrome浏览器中获取5.1音频?

  15. 15

    如何在Google Chrome浏览器中停止GIF动画?

  16. 16

    如何在Google Chrome浏览器桌面版中查看网页的移动版本?

  17. 17

    如何在Google Chrome浏览器的书签中添加收藏夹图标?

  18. 18

    如何在Google Chrome浏览器中禁用Facebook通知?

  19. 19

    如何在Windows 10的Google Chrome浏览器中获取重新定义的标签?

  20. 20

    如何在Google Chrome浏览器中永久禁用WebGL?

  21. 21

    如何在Google Chrome浏览器中快速更改用户个人资料?

  22. 22

    如何在Google Chrome浏览器中撤消样式的网页编辑

  23. 23

    如何在Google Chrome浏览器中检索隐藏的扩展程序

  24. 24

    如何在Google Chrome浏览器中删除Stackoverflow Cookie和证书?

  25. 25

    如何在Google Chrome浏览器中进行多个浏览会话?

  26. 26

    如何在Chrome浏览器中调试AngularJS

  27. 27

    如何在Chrome中禁用浏览器缓存

  28. 28

    如何在Chrome浏览器中调试AngularJS

  29. 29

    如何在Chrome浏览器中运行硒测试?

热门标签

归档