让Input支持background-attachment:fixed
文章类别:
div+css | 发表日期:2010-5-6 9:06:03
办法很简单:
- 给Input添加一个外围标记:Label
- 给Label设置背景,用传统的background-position方式。
- 设置Input的background:transparent;
- 即可看到“底层”的背景了,且避免了使用background-attachment。
应该是完美了吧:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test</title>
<style type="text/css">
#login{width:415px;height:36px;position:relative;background:#FC9A0C;}
#login .key{width:324px;height:25px;overflow:hidden;border:solid 1px #E68A0D;position:absolute;left:5px;top:4px;padding:0 5px;background:#efb url(http://home.blueidea.com/image/app/homepage.gif) 310px center no-repeat;}
#login .key input{width:324px;height:25px;overflow:hidden;background:transparent;padding:0;line-height:25px;border:none;color:#555;padding:0;outline:0;}
#login .smt_area{width:69px;height:27px;position:absolute;right:5px;top:4px;background:url(http://home.blueidea.com/attachment/201003/25/381636_1269525914BoDu.png);}
#login .smt_area input{filter:Alpha(opacity=0);opacity:0;width:69px;height:27px;cursor:pointer;}
</style>
</head>
<body>
<div id="login">
<label class="key"><input type="text" name="key" /></label>
<label class="smt_area"><input type="submit" value="Submit" onfocus="this.blur()" /></label>
</div>
</body>
</html>看见文本框旁边的橙色按钮了吗,被Label套住并且完全透明的那个?灵感就来源于它。
同样的原理也适用于textarea:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>textarea</title>
</head>
<body>
<div>
<label style="background:url(http://home.blueidea.com/image/app/homepage.gif) 20px 20px no-repeat;display:inline-block;"><textarea rows="10" cols="50" style="background:transparent;">请输入超多字符!! </textarea></label>
</div>
</body>
</html>另外,记得不要漏掉上面这个示例中个display:inline-block;,不然标准浏览器就看不见背景图了。