过渡输入宽度

时间:2015-05-17 17:02:32

标签: html css css-transitions

我有输入搜索字段。当我点击它时,我需要它从右到左变得更宽,表现平滑过渡,即输入位于页面的右侧,当我点击它时,它应该以一定数量的像素向左伸展并变为更宽的。

这是我的css:

#header #search input {
background: #FFF;
padding: 1px 1px 1px 5px;
width: 178px;
height: 21px;
border: 1px solid #CCCCCC;
border-radius: 6px;
-webkit-transition: all .5s;
-moz-transition: all .5s;
transition: all .5s;

}
#header #search input:focus {
background: #FFF;
padding: 1px 1px 1px 5px;
width: 300px;
height: 21px;
border: 1px solid #CCCCCC;

你可以帮我实现吗?

3 个答案:

答案 0 :(得分:7)



input[type="search"] {
background: #FFF;
padding: 1px 1px 1px 5px;
    position: relative; top: 0; left: 0;
width: 178px;
height: 21px;
    outline: none;
border: 1px solid #CCCCCC;
border-radius: 6px;
-webkit-transition: all .5s;
-moz-transition: all .5s;
transition: all .5s;

}
input[type="search"]:focus {
background: #FFF;
padding: 1px 1px 1px 5px;
width: 300px;
height: 21px;
border: 1px solid #CCCCCC;
  top: 0;
  right: 100%;    
}  

<div style="text-align:right;">
<input type="search" id="search" />
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:2)

绝对定位输入并将右属性设置为零:

position:absolute;
right:0;

在聚焦时强制向左扩展。

<强> jsFiddle example

答案 2 :(得分:1)

使用position:relative。

使容器偏移父项
#header, #search {
    width: 100%;
    position: relative;
}

然后使用position:absolute定位您的输入并使用right。

#header #search input {
    position: absolute;
    right: 0px;
    background: #FFF;
    padding: 1px 1px 1px 5px;
    width: 178px;
    height: 21px;
    border: 1px solid #CCCCCC;
    border-radius: 6px;
    -webkit-transition: all .5s;
    -moz-transition: all .5s;
    transition: all .5s;
}

#header #search input:focus {
background: #FFF;
padding: 1px 1px 1px 5px;
width: 300px;
height: 21px;
border: 1px solid #CCCCCC;

您的动画现在会向左延伸。