我有这样的代码:
<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