当前位置:编程学习 > 网站相关 >>

纯CSS实现平滑伸缩的搜索框

有个朋友看到一个能伸缩的搜索框,叫我给他做。我到他所说的网站看了一下,马上告诉他:这个能伸缩的框框得用 js 辅助才能实现,要是为了图方便,在页面上调用一个百十来K的js框架,就太不值得了,建议他不要实现这个功能了。但是,今天又看到类似的一个搜索框,仔细扒了代码,才发现,这个伸缩功能只用CSS就可以实现!我又误人子弟了......

经常使用IE的朋友(园里应该不多了吧)请换个浏览器测试,因为....这个代码依然不能用在IE上....

这个先看一下效果比较好:
http://www.threesnow.com/code/087/

然后就是实现方式了。先定义默认的文本框样式:

 


input, textarea{ 
    color: #666; 
    padding: 6px; 
    margin: 10px; 
    outline: none; 
    overflow:hidden; 
    border-radius: 5px; 
    background: #fafafa; 
    border: 1px solid #ddd;

要利用CSS实现文本框在获得焦点时实现平滑伸缩,关键因素有两个,其中一个就是使用 focus 伪类设置想要变化的长度:


.style1{ 
    width: 150px; 

.style1:focus{ 
    width: 230px; 

.style2{ 
    float: right; 
    width: 150px; 

.style2:focus{ 
    width: 230px; 

.style3{ 
    width: 10%; 

.style3:focus{ 
    width: 98%; 

.style4{ 
    height: 2em; 
    width: 230px; 

.style4:focus{ 
    height: 8em; 

另一个关键因素就是针对文本框设置浏览器的私有属性设置,以此来控制伸缩的平滑变化,设置如下:


input, textarea{ 
    color: #666; 
    padding: 6px; 
    margin: 10px; 
    outline: none; 
    overflow:hidden; 
    border-radius: 5px; 
    background: #fafafa; 
    border: 1px solid #ddd; 
    -moz-box-shadow: inset 1px 1px 10px rgba(0,0,0,0.1); 
    -webkit-box-shadow: inset 1px 1px 10px rgba(0,0,0,0.1); 
    box-shadow: inset 1px 1px 10px rgba(0,0,0,0.1); 
    -webkit-transition: all .3s; 
    -moz-transition: all .3s; 
    -o-transition: all .3s; 
}

再把HTML代码加上,效果就出来了。


<input class="style1" type="text" value="向右伸长一点点" /> 
<br /> 
<input class="style2" type="text" value="向左伸长一点点" /> 
<br /> 
<input class="style3" type="text" value="什么?你的搜索词很长?这个够用吗?" /> 
<br /> 
<textarea class="style4">下面有什么东西呢?  
 
祝君好运!
~~~~</textarea>
 

另外,在此再一次对IE表示一下失望。

 

 

摘自 爱莲学堂

补充:Web开发 , 其他 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,