Css专注于输入div出现

Gan*_*Gan 4 css focus

我有这样的代码:

<div class="lighter">
  <form method="get" action="http://www.google.pl" id="search">
    <span>
      <input id="button_search" type="image" src="images/search.png" id="button_search"/>
    </span>
    <span>
      <input type="text" class="search rounded" placeholder="Search...">
    </span>
    <div class= "list_search">
      <ul>
        <li class="search_link"><a href="">Search all of Movies</a></li>
        <li class="search_link"><a href="">Advanced Search</a></li>
      </ul>
    </div>
  </form>
</div>
Run Code Online (Sandbox Code Playgroud)

是否可以简单地使用css来产生这样的效果:当输入type ="text"处于焦点时,list_search会出现?如果有,怎么样?

非常感谢您的帮助

Nix*_*Nix 24

如果您能够稍微更改标记,那么使用纯CSS实际上可以实现这一点.

div {
    background: #f0a;
    display: none;
    height: 200px;
    width: 200px; }

input:focus + div { display: block; }
Run Code Online (Sandbox Code Playgroud)

我基本上做的是,首先隐藏div,当输入字段具有焦点时,立即的下一个兄弟匹配div将其display模式更改为block.

为了使它工作,它必须是下一个兄弟,因为你不能沿着DOM树向上移动,所以你需要解开你的input领域.来自span.

看我的小提琴:http://jsfiddle.net/TheNix/U28sd/

编辑:
"相邻选择器"(+)应该在IE7及更高版本中工作(虽然我认为异步加载的内容可能存在一些问题).请注意,元素必须紧跟在之后,所以它不是"匹配Y的下一个元素",而是"紧跟在X之后的元素,如果它匹配Y".

有时候,如果你知道标记并且你喜欢破解,你可以"计算"你的方式.例如,如果标记完全匹配,input + div + div则会以第二个div为目标.当然,我不会推荐它,因为它会在标记的最微小变化时爆炸,并且维持起来很痛苦.

有关选择器的更多信息,请访问:http://www.w3.org/TR/CSS2/selector.html#adjacent-selectors