- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
首先,这个例子只能在支持 :nth-child
的浏览器中运行,比如 Chrome 或 FireFox。我有一个无序列表,其中奇数列表项向左浮动并向左浮动,偶数列表项向右浮动并向右浮动。像这样:
HTML:
<ul class="waterfall">
<li style="height: 100px;">1</li>
<li style="height: 200px;">2</li>
<li style="height: 50px;">3</li>
<li style="height: 100px;">4</li>
<li style="height: 200px;">5</li>
<li style="height: 50px;">6</li>
<li style="height: 50px;">7</li>
<li style="height: 50px;">8</li>
</ul>
CSS:
.waterfall {width:302px;}
.waterfall LI {
min-width: 150px;
background-color: #CCC;
margin-top: 2px;
}
.waterfall LI:nth-child(odd) {
float: left;
clear: left;
text-align: right;
}
.waterfall LI:nth-child(even) {
float: right;
clear: right;
text-align: left;
}
目标:
所有奇数编号的列表项都应向左浮动,并相互堆叠,除了 2 像素的边距外,它们之间没有间隙。偶数列表项也是如此,只是它们应该向右浮动。
问题简而言之:
我很困惑为什么在这个例子中,LI #5 不能出现在 LI #4 上方,LI #8 不能出现在 LI #7 上方。换句话说,为什么 LI #5 清除 LI #2,而 LI #8 清除 LI #5?另外,为什么 LI #3 不清除 LI #2(我不想这样做,但如果 LI #5 正在清除 LI #2,为什么 LI #3 不加入派对)?
长话短说
到目前为止,我的想法有些不确定。如果第一个元素稍后在标记中定义,那么浏览器似乎不希望元素的顶部出现在另一个元素的顶部之上。是真的吗?
我知道 float 元素放在一条线上,任何不适合那条线的 float 元素都会跳到新的一行并从那里流动(与绝对定位元素的自由流动概念相反) .换句话说, float 元素从文档流中移除,但不像绝对定位元素那样字面意思,因为 float 元素仍然相对于它开始的任何行定位,并且它仍然占用文档流中的空间。那么, float 元素挂起的下一条“线”是如何确定的呢?在此示例中,为什么 LI #3 没有清除 LI #2,但 LI #5 清除了?
我不想要的:
通过更改标记、放弃 float 或使用 JavaScript 使此布局有效的巧妙解决方案。我知道该怎么做。我只是希望学习花车的神秘方式。
最佳答案
它并不像你想象的那么神秘,你在 jsFiddle 中的图表实际上很好地说明了它。用文字解释可能很困难,但我会试一试:
本质上,1 向左浮动,2 向右浮动,然后 3 向左浮动并向上移动到 2 下方,因为没有规则必须向右清除。
当谈到向右浮动的 4 时, 有一个规则,因此您会看到一个硬突破是 4 步低于 2。这开始了循环,因为 5 现在占据了它旁边的位置4 又一次没有什么能阻止 6 加入 4,因为它不需要向左清除。
7 必须小于 5 的原因与 4 必须小于 3 的原因相同,然后再开始。如评论中所述, float 元素不会将它们从流中移除,这就是为什么您可以在 p
中 float img
而不是以您的照片方式结束的部分原因位于页面顶部,这个概念也可能真正帮助您准确了解正在发生的事情。
这到底有帮助还是只会让事情变得更困惑?
关于html - 为什么一些 float 元素决定清除两者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10388697/
这是一道函数依赖题。 我知道当 x->yz 然后 x->y 和 x->z 时。但是上面的依赖关系可能吗? 最佳答案 If xy determines z can x determine z and y
我有一个奇怪的问题。 Line 61: $this->_currentRoute = Default_Model_Routes::getInstance()->getCurrentRoute(); .
我正在开发一种工具来比较两个波形文件的波形相似性。例如,我有一个持续时间为 1 分钟的波形文件,我使用第一个波形文件制作了另一个波形文件,但每 5 秒生成一次数据,间隔为 5 秒至 0。 现在我的软件
我遇到了一个奇怪的问题,尽管我打赌有一个巧妙的方法可以解决它。 情况是我有一个具有三列排序状态的表:完全未排序,在这种情况下我不希望出现任何图标,按升序排序,在这种情况下我想要一个向上箭头,以及按降序
Java 语言规范提供了criteria用于确定(格式良好的)执行是否满足“Java 内存模型的因果关系要求”。让我们假设执行是有限的。我试图了解是否存在多项式时间算法来证明或反驳这种情况。 真的,我
Java 语言规范提供了criteria用于确定(格式良好的)执行是否满足“Java 内存模型的因果关系要求”。让我们假设执行是有限的。我试图了解是否存在多项式时间算法来证明或反驳这种情况。 真的,我
我正在编写一个简单的Bank类,其中包含Account。我希望人员能够开设一个新的受密码保护的银行帐户,并从其帐户中提取和存入资金。账户设在银行内。银行和帐户类应提供哪些服务? 假设 p 已在银行 b
我的标题概括了这一点。我有一个将要开发的简单业务线应用程序,并且很好奇如何确定我应该针对哪个 .NET 版本。支持 Win XP SP3 会很好,但不是必需的。它将用于索引多页 tiff,因此导入一批
已锁定。这个问题及其答案是locked因为这个问题是题外话,但却具有历史意义。目前不接受新的答案或互动。 你是否真的“尝试过”(意味着在其中编程,而不仅仅是阅读有关它的文章)Erlang并决定在项目中
我正在尝试使用 ExceptionFilterAttribute 为 Web Api 实现异常处理。我已经继承了ExceptionFilterAttribute 类并覆盖了onException 方法
前一段时间在一次编程比赛中我遇到了一个令人费解的问题,此后一直困扰着我。虽然我没有逐字记住,但我会尽力重现: Jack starts at 0 on the number line and jumps
我有什么: 我有一个主要内容区域,后面跟着两个旁白: #primary,#secondary,#tertiary{float:left; width:33%;} Primary
我无法正确操作键盘。 整个 View 充满了文本字段。 当我使用通知将 View 向上移动时,上方的文本框不再可见: override func viewDidLoad() { super.v
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我在尝试获取父对象来过滤子事件时遇到问题。 在下面的示例中,我在旋转框上设置了一个事件过滤器。事件过滤器检测旋转框上的鼠标按下事件。然后,我希望父对象根据某些标准接受或忽略该事件。 问题是它似乎接受了
我使用从 std::system_error 继承的类进行错误处理,我想控制调用 what() 时返回的内容。原因:标准(C++11 和 C++1y CD 草案 - N3690,下面的 § 引用是后者
我正在用 Swift 构建一个 iOS 应用程序,它的起始页有 6 个按钮。这些按钮中的每一个都将连接到一个 TableView Controller ,其数据由 NSFetchedResultsCo
我想构建这样的东西 数据存储| mycode.py | RESTful API | mywebapp.py(Django 或 Tornado) 我检查了 Django 的 Piston,但似乎这样我就
究竟如何更改 RichTextBox 中的字体? 环顾四周给了我似乎不再有效的旧答案。我认为这就像执行 richtextbox1.Font = Font.Bold; 或类似操作一样简单。原来不是,所以
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 7 年前。 Improve this qu
我是一名优秀的程序员,十分优秀!