- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有很多复选框,目前我想将它们放在 3 列中,每列都有一个 div。
但是我非常反复无常,明天可能想将它们放在 10 或 20 列中,我可能想将其旋转为行或任何其他类型的 div。
3 列的示例:
<div class="column-1">
<input type="checkbox" id="foo-1">Checkbox # 1
<input type="checkbox" id="foo-2">Checkbox # 2
<input type="checkbox" id="foo-3">Checkbox # 3
</div>
<div class="column-2">
<input type="checkbox" id="foo-4">Checkbox # 4
<input type="checkbox" id="foo-5">Checkbox # 5
<input type="checkbox" id="foo-6">Checkbox # 6
</div>
<div class="column-3">
<input type="checkbox" id="foo-7">Checkbox # 7
<input type="checkbox" id="foo-8">Checkbox # 8
<input type="checkbox" id="foo-9">Checkbox # 9
</div>
我首先尝试使用 3 个 while 循环来执行此操作,如下所示:
@{
int i = 0;
IEnumerable<foo> bar = new List<foo>(){foo1,foo2,foo3,foo4,foo5,foo6};
}
<div id="column-1">
while (i < bar.Count() / 3)
{
baz = bar.ElementAt(i);
<input type="checkbox" id="foo-@i" checked='@baz.CheckIt' />@baz.DisplayText
i++;
}
</div>
<div id="column-2">
@while (i < bar.Count() * 2 / 3)
{
baz = bar.ElementAt(i);
<input type="checkbox" id="foo-@i" checked='@baz.CheckIt' />@baz.DisplayText
i++;
}
</div>
<div id="column-3">
@while (i < bar.Count())
{
baz = bar.ElementAt(i);
<input type="checkbox" id="foo-@i" checked='@baz.CheckIt' />@baz.DisplayText
i++;
}
</div>
这很好用,但如果我想使用超过 3 列,就会变得非常难看。老实说已经很丑了。它还不允许轻松更改列数。它也可以更改为 for 循环,每个循环从不同的值(分别为 0、1、2)开始并将 i
递增 3,但这仍然是 3 个循环。
我还尝试使用一些模数运算符在单个循环中执行此操作(伪代码):
i = 0
foreach(checkbox in list)
{
if(i % numberOfColumns == 0)
{
createNewRow()
}
placeCheckBox()
i++
}
在我看来,这更加简洁易读。然而,这会产生大量的行 div,这对我的目的来说效果不佳。还有一个问题是实际上让复选框位于 div 中。上面的两个解决方案可以组合起来创建列而不是行,这看起来更好,但仍然存在与第二个解决方案相同的问题。
我觉得一定有一种更简单更好的方法来做到这一点,而不必对列数进行硬编码,因为没有人愿意编写 20 个基本的 while 循环。
那么有没有一种可扩展且简洁的方法来为分隔为多个 div 的列表中的每个项目生成 html 标签?如果有,那是什么?
最佳答案
这会将 T 的 IEnumerable 拆分为 T 的 IEnumerable 的 IEnumerable。(也许我应该刚刚返回数组。)如果给它 100 并将其分成三组,您将得到 34 组。前 33 组将有 3 个元素,最后一个将有一个。
public static IEnumerable<IEnumerable<T>> SplitIntoSetsOfSpecifiedLength<T>
(this IEnumerable<T> source, int itemsPerSet) // naming is hard
{
var sourceArray = source as T[] ?? source.ToArray();
var result = new List<IEnumerable<T>>();
for (var index = 0; index < sourceArray.Length; index += itemsPerSet)
{
result.Add(sourceArray.Skip(index).Take(itemsPerSet));
}
return result;
}
为了说明,给定一个从 1 到 20 的数字列表的输入,
var splitIntoThreeLists = oneToTwenty.SplitIntoSetsOfSpecifiedLength(7);
将返回三组:
1 8 15
2 9 16
3 10 17
4 11 18
5 12 19
6 13 20
7 14
单元测试
[TestMethod]
public void splits_20_into_sets_of_seven()
{
var values = Enumerable.Range(1, 20);
var splitValues = values.SplitIntoSetsOfSpecifiedLength(7).ToList();
// three sets
Assert.AreEqual(splitValues.Count(), 3);
// the first set contains the first seven numbers.
Assert.IsTrue(splitValues[0].SequenceEqual(Enumerable.Range(1, 7)));
// the second set contains the next seven numbers
Assert.IsTrue(splitValues[1].SequenceEqual(Enumerable.Range(8, 7)));
// the third set contains the last six
Assert.IsTrue(splitValues[2].SequenceEqual(Enumerable.Range(15, 6)));
}
关于c# - 如何将列表或 IEnumerable 拆分为 N 大小的较小列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36611224/
是否可以告诉hive某个表“很小”,即应将其复制到所有节点并在RAM中进行操作? 最佳答案 尝试以下提示: /*+ MAPJOIN(small_table) */ UPDATE 顺便说一句,还有其他
给定的是一个大(但不是巨大)的字符串数组(数量为 1000-5000 个单个字符串)。我想对这些字符串执行一些计算和其他操作。因为在处理那个大数组时它总是停止工作,所以我重写了我的函数以递归地获取较小
当我在大小为 (640,480) 的 JFrame 中添加 JPanel 时,JPanel 的大小为 (638449)。我需要 JPanel 与 JFrame 完全匹配! 我发现的一个临时解决方法是将
我目前正在尝试响应设计。我需要在父 div 变小的同时保持图像居中。 见图片说明: 我不想用它作为背景。下面的代码会一直把它放在div框的左上角 #img_wrap {
当我必须捕获生成器中可能发生的异常时,如何使 try block 尽可能小? 典型的情况是这样的: for i in g(): process(i) 如果 g() 可以引发我需要捕获的异常,第一种
目前尝试让 Accordion 项目在 Bootstrap 中工作一切都很好,直到我尝试关闭所有 Accordion 菜单。突然之间,标题比未折叠时小得多。 当一个打开时 当全部关闭时 我正在使用指南
目前尝试让 Accordion 项目在 Bootstrap 中工作一切都很好,直到我尝试关闭所有 Accordion 菜单。突然之间,标题比未折叠时小得多。 当一个打开时 当全部关闭时 我正在使用指南
一个应用程序托管一个具有三个接口(interface)的 Web 服务,用于三个单独且独立的操作,所有这些操作都在应用程序的不同组件中实现,彼此独立,例如在不同的包等中,所以他们对彼此了解不多,只共享
我正在尝试使用 border-radius 属性设计一个主要内容容器具有圆 Angular 的网站。但是,我保持侧边栏和顶部导航栏固定,因此当用户向上或向下滚动时它们不会移动。它类似于在 Google
我正在构建我网站的响应式版本。 虽然我很高兴大多数 float 的 div 被迫在屏幕下方,但有一些 div 我需要保持彼此相邻,即使屏幕区域小于这些 div 的总宽度。在这种情况下,我想按比例缩小它
我正在为我的元素使用 Twitter Bootstraps 网格。我有以下 HTML: Some text Some text
我有一个小宽度的 div 并且可以看到溢出。我有一个更大的表,里面只有一个单元格和一个文本: A small text with spaces...
我有一个设计得很好的架构,其中 Controller 转到访问与数据库通信的存储库的服务。 因此, Controller 中的逻辑保持在最低限度,但我仍然有非常微妙的代码片段来执行一些任务,例如 验证
我在一个布局中有两个 View 。我将分别称它们为 View A 和 View B。 ┌──────┐ │┌─┐┌─┐│ ││A││B││ │└─┘└─┘│ └──────┘ 父布局(包括View A
整个页面的父元素是一个居中的 div,最大宽度限制为 960px。页面上的所有其他元素都是该父 div 的子元素。简化结构如下: 虽然父 div 的宽度不应超过 960px,但我
我应该链接到完整的 jQuery UI -还是-提供精简的自定义副本? 来自 Google 等 CDN 的完整 jQuery-UI 与提供定制的最小版本之间存在非常显着的大小差异。此外,还可以将 jQ
我正在尝试制作一条图像拇指的“线”,它在鼠标移动时滚动。我让它工作了,但我现在的问题是我想在侧面做一个“填充”,这样我就不必将鼠标一直拉到侧面才能看到第一个/最后一个拇指。但我真的无法让它工作:/ 这
我是一名优秀的程序员,十分优秀!