我正在尝试使用& :: before之前的元素添加图像,并通过调整填充/边距将其放在它的父元素之上。我无法将img放在它的父元素的“顶部”上。它位于父级的框内。我试过设置两个元素来显示:块。我试图使用相对/绝对位置。我没有解决方案就调整了边距/填充。
HTML:
<div class="foo">
<div class="title">title</div>
<div class="body">text</div>
</div>
LESS / CSS:
.foo {
display:block;
padding: 1em;
&:before {
background-image: url("bar.svg");
padding: .25in;
background-repeat: no-repeat;
background-position: top left;
background-position: top outside;
background-color: white;
content: "";
display: block;
max-width: (@column + .45in);
margin-left: -.15in;
margin-top:-.5in;
}
}
我希望调整伪元素上的边距值会产生预期的结果。然而,这种情况并非如此。有没有我不知道的限制?
感谢您的时间和帮助。
答案 0 :(得分:1)
首先,我假设“在顶部”表示在.foo
元素之前“显示”。我假设您根据它看起来尝试使用您的代码。通常情况下,我会将“在顶部”解释为更高的z-index
并重叠一个元素,但我不认为这就是你所要求的。
其次,除非我不熟悉某些内容(绝对可能),否则outside
没有background-position
个关键字;因此,这似乎是一个错误(虽然我不希望它导致你面临的问题)。
第三,我认为你的基本前提应该是。 This fiddle demonstrates a shifting of the :before
element to be "before" its .foo
parent。可能是您em
单位和in
单位的混合使用导致了一些问题。这不是确保您获得所需定位的好方法。我会将您的单位保留在em
。
答案 1 :(得分:0)
伪元素默认内联显示。此外,它们被放置在元素的内容区域内。
要使其显示在该元素的“顶部”,请将显示设置为阻止。
最后,伪元素应该使用 content 属性进行初始化。
.foo::before {
content: url(./bar.svg);
display: block;
}