如何定位:之前&:之后伪元素在彼此之上?

Ila*_*Ila 17 html css css3 pseudo-element

将一个伪元素直接放在另一个伪元素之上的最佳方法是什么?

假设我想在标签旁边出现一个奇特的"复选框":

label:before {
  content: "\00a0";
  color: #FFF;
  height: 6px;
  width: 6px;
  display: inline-block;
}

label:after {
  content: "\00a0";
  height: 18px;
  width: 18px;
  display: inline-block;
  background: #ebd196;
  background-image: linear-gradient(top, #ebd196 4%, #e2b65d 5%, #ab8844 100%);
}
Run Code Online (Sandbox Code Playgroud)
<input id="pretty"><label for="pretty">Label text</label>
Run Code Online (Sandbox Code Playgroud)

伪元素的堆叠顺序是什么?是:之前出现在下面或上面:之后 - 哪个更适合作为边框,哪个填充?

什么是适用于标签,贴标签的最佳定位:之前和标签:之后获得正确的定位?

Ben*_*son 24

:before(或::before)被视为其所适用元素的第一个孩子,而:after(或::after)被视为最后一个孩子.因此,:after自然会涵盖:before.

https://developer.mozilla.org/en-US/docs/Web/CSS/::before

https://developer.mozilla.org/en-US/docs/Web/CSS/::after

我想最好的办法,以确保他们排队是使用position: relative;label,并position: absolute;在与相同的值沿伪元素top,bottom等等.

如果你想使用伪元素制作渐变边框,那么你可以这样做:

label {
    position: relative;
    display: inline-block;
    padding: 0 2px;
    margin: 2px;
}

label:before {
    content:"";
    position: absolute;
    top: 0;
    left: 0;
    z-index: -1;
    width: 100%;
    height: 100%;
    background: white;
}

label:after {
    content:"";
    position: absolute;
    top: -2px;
    bottom: -2px;
    left: -2px;
    right: -2px;
    z-index: -2;
    background: linear-gradient(to bottom, #1e5799 13%, #efe22f 79%);
}
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/QqzJg/

您可能会发现这很有用:

http://css-tricks.com/examples/GradientBorder/