css 在html背景图像消失在输入,当我插入p或span下

a64a0gku  于 2023-05-08  发布在  其他
关注(0)|答案(1)|浏览(141)

这里有两个<input>字段,其中有background-image,看起来正常。当我在第一个input之后和第二个(中间)之前添加两个<p><span>时,一切都没问题,但是如果我在中间添加一个<p>标签,并且在第二个输入之后或第一个输入之前添加一个,那么background-image相应地在第二个或第一个输入字段上消失。
有人能解释一下发生了什么吗?

form {
  background-color: blue;
}

input {
  background-color: transparent;
  border: 1px solid white;
}

input:first-child {
  background-image: url(./Images/user-icon.png);
  background-repeat: no-repeat;
}

input:last-child {
  background-image: url(./Images/lock-icon.png);
  background-repeat: no-repeat;
}
<form action="">
      <input type="text" name="" id="" />
      <p>text</p>
      <input type="password" name="" id="" />
      <p>text</p>
    </form>

我尝试了display:flex,display:block -这里也一样。

llew8vvj

llew8vvj1#

当你把一个p元素放在第二个input之后时,这个input就不再是最后一个子元素了。
在这个例子中,你可以通过使用last-of-type来解决这个问题:

form {
  background-color: blue;
}

input {
  background-color: transparent;
  border: 1px solid white;
}

input:first-of-type {
  background-image: url(https://picsum.photos/id/1015/300/300);
  background-repeat: no-repeat;
}

input:last-of-type {
  background-image: url(https://picsum.photos/id/1015/300/300);
  background-repeat: no-repeat;
}
<form action="">
  <input type="text" name="" id="" />
  <p>text</p>
  <input type="password" name="" id="" />
  <p>text</p>
</form>

同样,您可以对第一个输入使用first-of-type,以覆盖在此之前有一个p元素的情况。

相关问题