1

我已经设置了一个测试用例,其中一个 CSS 伪元素 (::after) 显示在鼠标悬停在给定的 (parent-) 元素上。到目前为止一切正常,但是伪元素的负上边距会影响父元素而不是生成的元素。(虽然负左边距按预期工作。)

任何人都可以解释这种行为和/或知道解决方法吗?

4

2 回答 2

3

首先要注意的是,当您使用 时::after,DOM 看起来像这样:

<div class="land" lang="de">[content of element]<after></after></div>

因此,它的行为方式完全相同*:(使用 Chrome 或 Firefox)
http://jsfiddle.net/MLThM/7/

并删除了一些无关的属性:http:
//jsfiddle.net/MLThM/8/

父元素移动的原因是折叠边距

“修复”的一种方法是添加overflow: hidden到:http .land:
//jsfiddle.net/MLThM/9/

并将修复应用于您的原始演示:http:
//jsfiddle.net/MLThM/10/

* = 让我们暂时忘记可能存在的错误,它们::after::before当前问题无关。

于 2011-07-18T14:53:09.967 回答
3

您始终可以将容器 div 设置为position:relative,然后将新内容设置为absolute. 这样您就不会影响包含 div 的任何边距。

示例:http: //jsfiddle.net/MLThM/6/

于 2011-07-18T14:44:13.887 回答