【问题标题】:Scroll vertically with fixed columns使用固定列垂直滚动
【发布时间】:2015-09-21 21:31:58
【问题描述】:

我有一个包含动态内容的固定大小的容器。内容是一系列不同高度的项目。我希望这些项目垂直流动(每个项目都在前一个项目的下方),但能够在特定项目上注入分栏符。我使用 JavaScript 来注入分栏符,从而知道需要多少列,从而可以在某处注入总列数(如果有帮助)。

这是我一直在使用的,我认为曾经在 Chrome 中工作过的东西。希望将 A1-A5 放在一列中,将 B1-B2 放在第二列中。整个section 应该垂直滚动,而不是水平滚动。

section { width:400px; height:300px; font:9pt sans-serif; overflow:auto }
div { margin-bottom:1em; -webkit-column-break-inside:avoid }
h3 { margin:0; background:#000; color:#fff; padding:4px; font-size:9pt }
span { display:block; height:45px; background:#ddd; padding:4px }

/* The following are injected by JavaScript */
section { -webkit-column-count:2 }
#B1 { -webkit-column-break-before:always }
<section>
  <div id="A1"><h3>A1</h3><span>content</span></div>
  <div id="A2"><h3>A2</h3><span>content</span></div>
  <div id="A3"><h3>A3</h3><span>content</span></div>
  <div id="A4"><h3>A4</h3><span>content</span></div>
  <div id="A5"><h3>A5</h3><span>content</span></div>
  <div id="B1"><h3>B1</h3><span>content</span></div>
  <div id="B2"><h3>B2</h3><span>content</span></div>
</section>

正如在 Chrome 中看到的那样,上面的 sn-p 将 A4 包装到第二列并创建水平滚动的三列。 如何实现两列垂直滚动的愿望?

更改全局 CSS 并使用 JavaScript 将新的自定义 CSS 应用到每个 &lt;div&gt; 对我来说很容易,但是(由于复杂的原因)我很难使用 JavaScript 修改 DOM。我更喜欢不修改 DOM 的解决方案。

【问题讨论】:

标签: javascript html css multiple-columns


【解决方案1】:

我相信您遇到的问题与在第一个 css 块中定义“section”元素的高度有关。这样做:

section { width:400px; height:auto; font:9pt sans-serif; overflow:auto }

有了这个改动,一切都会好起来的。 jsfiddle here

你会失去固定的大小。我找不到不符合此要求的配置。

【讨论】:

  • 这可能可行;它要求我将&lt;section&gt; 包装在另一个元素中,并将固定高度和溢出放在那个元素上。因为这需要更改 DOM,所以我将推迟将此答案标记为已接受,直到/除非其他答案不存在。
  • 我在不更改 DOM 的情况下尝试了很多测试,但它看起来很奇怪。例如,它在“overflow-y:scroll”上添加了垂直滚动条,但仍然使用水平滚动。如果你设置了“overflow-x:scroll” 那么没有垂直滚动条但是有一个水平滚动条。就好像它想做正确的事却想不通。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 2019-03-27
  • 2012-06-10
  • 2012-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多