css – 悬停一个伪元素,使另一个伪元素出现?

前端之家收集整理的这篇文章主要介绍了css – 悬停一个伪元素,使另一个伪元素出现?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图生成一个屏幕,其中利用:before和:after伪元素,但我想知道这样的功能是否实际上是可能的.

我有一个包装器div,它绕着一个输入(允许这个包装上的伪元素).

就像是:

  1. +-----------------------------------+
  2. | +-------------------------------+ |
  3. | | | | <-- wrapper div
  4. | +-------------------------------+ <-- input element
  5. +-----------------------------------+

但是,我正在寻找一个位于div之后的伪元素.

  1. +-----------------------------------++-------+
  2. | +-------------------------------+ | |¯¯¯| |
  3. | | | | / |
  4. | +-------------------------------+ | ! |<--pseudo element
  5. +-----------------------------------++-------+

我想要能够悬停这个伪元素,并且显示另一个伪元素.

  1. .wrap {
  2. position: relative;
  3. height: 30px;
  4. width: 200px;
  5. display: inline-block;
  6. }
  7. .wrap input {
  8. position: absolute;
  9. top: 0;
  10. left: 0;
  11. height: 100%;
  12. width: 100%;
  13. }
  14. .wrap:after {
  15. content: "?";
  16. position: absolute;
  17. top: 0;
  18. left: 100%;
  19. height: 30px;
  20. width: 30px;
  21. font-size: 30px;
  22. text-align: center;
  23. }
  24. .wrap:before {
  25. content: "";
  26. position: absolute;
  27. top: 100%;
  28. left: 0;
  29. height: 60px;
  30. width: 100%;
  31. background: tomato;
  32. opacity:0.2;
  33. }
  1. <div class="wrap">
  2. <input placeholder="input element" type="text" />
  3. </div>

从上面的代码段设计,有一种方法:当元素改变它的不透明度时,我只有:after元素,而不是wrap div本身(注意:html不能改变,因此为什么这个问题)?

我试过使用像:

  1. .wrap:not(input):hover:before{

将输入宽度改为90%后,这并没有什么变化

解决方法

我知道这不是你所要求的,但直到css可以选择父母(它是通过),你可以再添加一个HTML元素:
  1. <div class="wrap">
  2. <div class="inner_wrap">
  3. <input placeholder="input element" type="text" />
  4. </div>
  5. </div>

CSS:

  1. .wrap {
  2. position: relative;
  3. height: 30px;
  4. width: 200px;
  5. display: inline-block;
  6. }
  7. .wrap input {
  8. position: absolute;
  9. top: 0;
  10. left: 0;
  11. height: 100%;
  12. width: 100%;
  13. }
  14. .wrap:after {
  15. content: "?";
  16. position: absolute;
  17. top: 0;
  18. left: 100%;
  19. height: 30px;
  20. width: 30px;
  21. font-size: 30px;
  22. text-align: center;
  23. }
  24. .inner_wrap:before {
  25. content: "";
  26. position: absolute;
  27. top: 100%;
  28. left: 0;
  29. height: 60px;
  30. width: 100%;
  31. background: tomato;
  32. opacity:0.2;
  33. display:none;
  34. }
  35. .wrap:hover .inner_wrap:before{
  36. display:block;
  37. }
  38. .wrap .inner_wrap:hover:before{
  39. display:none;
  40. }

http://fiddle.jshell.net/0vwn1w9t/

猜你在找的CSS相关文章