滑动搜索框,具有整页叠加效果

时间:2013-01-12 13:55:33

标签: jquery overlay slide search-box

我想在我自己的网站上实现这种搜索框(点击顶部菜单中的“cerca”):http://www.solidstudio.it/#

如何在点击上显示滑动水平效果以显示搜索表单以及整页叠加效果?

你知道一些这方面的教程还是可以帮助我构建?

非常感谢你, DémianP。

3 个答案:

答案 0 :(得分:1)

jsBin demo

我更喜欢悬停:)

<强> HTML:

  <ul id="nav">

    <li><a href="#">portfolio. </a></li>
    <li><a href="#">agenzia. </a></li>
    <li><a href="#">contatti. </a></li>
    <li id="search"><a href="#">cerca.</a><input type="text" placeholder="Entra un termine" /></li>
    <li></li>

  </ul>

<强> CSS:

/* OVERLAY */

#overlay{
  position:absolute;
  z-index:9; /*input is 10*/
  display:none;
  width:100%;
  height:100%;
  background:url(http://www.solidstudio.it/wp-content/themes/solid/css/images/mask_black.png);
}

/* PAGE */
a{text-decoration:none;}

#nav{
  list-style:none;
  padding:0;
}
#nav li{
  position:relative;
  float:left;
  padding:40px 5px;
  cursor:pointer;
}
#nav li:hover{
  background:#000;
}
#nav li:hover a{
  color:#fff;
  border-bottom:1px solid #fff;
}
#nav a{
  display:block;
  border-bottom:1px solid #000;
  width:100px;
  margin:10px;
  color:#000;
  padding-bottom:10px;
}
li#search{
  z-index:10;
}
#nav input{
  display:none;
  position:absolute;
  top:50px;
  left:15px;
  background:transparent;
  border:none;
  border-bottom:1px solid #fff;
  height:31px;
  width:230px;
  color:#0ff;
  font-size:21px;
  font-family:Century Gothic, sans-serif;
  font-weight:400;
}

<强> jQuery的:

$('#search').on('mouseenter mouseleave', function( e ){
  var mEnt      = e.type=='mouseenter';

  var opacity   = mEnt ? 1      : 0      ;
  var width     = mEnt ? 250    : 100    ;
  var show_hide = mEnt ? 'show' : 'hide' ;

  $(this).stop().animate({width: width}, 400);
  $('a', this).stop().fadeTo(400, !opacity);
  $('input', this).stop().fadeTo(400,opacity);
  $('#overlay').stop().fadeTo(400, opacity, function(){
    $(this)[show_hide]();
  });

}); 

答案 1 :(得分:0)

它只是一个滑动效果,只要用户鼠标在文本框内聚焦,jquery就会通过动画增加文本框的宽度。这是一个例子

让我们说你的文本框是这样的:

<input type="text" id="textbox" style="width: 100px;" />

jquery代码将如下所示

$('#box').focus(function()
{
$(this).attr('data-default', $(this).width());
$(this).animate({ width: 150 }, 'slow');
}).blur(function()
{
var w = $(this).attr('data-default');
$(this).animate({ width: w }, 'slow');
});

data-default用于存储临时值

答案 2 :(得分:0)

这样的东西? http://jsfiddle.net/McELm/

当然,你可以改善风格。

HTML:

<a href="#">search</a>
<form action="#" type="post">
  <input type="text" class="search" value="search" />
</form>

的CSS:

* {
  font-family:Arial, Helvetica, sans-serif;
}
a {
  position:relative;
  background:#000;
  color:#FFF;
  text-decoration:underline;
  font-size:12px;
  height:20px;
  padding:5px 20px;
}

form {
  background:#000;
  position:relative;
  padding:5px 20px;
  margin:0;
  height:20px;
  width:38px;
  display:none;
}

form input.search {
  position:absolute;
  border:none;
  background:#000;
  color:#FFF;
  font-size:12px;
  height:20px;
  width:38px;
  text-decoration:underline;
  margin:0;
  padding:0;
}

JS:

$('a').click(function(e){
  e.preventDefault();

  $(this).hide();

  $('form, input.search').show().animate({width:'200px'},300,   function(){
    $('input.search').focus();
  });

});