jQuery:使用css+jQuery模拟键盘
今天在阅读Nettuts+的Feed时看到了这个模拟键盘的效果,很是喜欢。便查看的源码后,了解了实现的原理,自己重新编写了CSS和JS代码,现效果如下:
1.html代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | <div id="container">
<textarea id="write" rows="6" cols="60"></textarea>
<ul id="keyboard">
<li class="symbol"><span class="off">`</span><span class="on">~</span></li>
<li class="symbol"><span class="off">1</span><span class="on">!</span></li>
<li class="symbol"><span class="off">2</span><span class="on">@</span></li>
<li class="symbol"><span class="off">3</span><span class="on">#</span></li>
<li class="symbol"><span class="off">4</span><span class="on">$</span></li>
<li class="symbol"><span class="off">5</span><span class="on">%</span></li>
<li class="symbol"><span class="off">6</span><span class="on">^</span></li>
<li class="symbol"><span class="off">7</span><span class="on">&</span></li>
<li class="symbol"><span class="off">8</span><span class="on">*</span></li>
<li class="symbol"><span class="off">9</span><span class="on">(</span></li>
<li class="symbol"><span class="off">0</span><span class="on">)</span></li>
<li class="symbol"><span class="off">-</span><span class="on">_</span></li>
<li class="symbol"><span class="off">=</span><span class="on">+</span></li>
<li class="delete lastitem">delete</li>
<li class="tab">tab</li>
<li class="letter">q</li>
<li class="letter">w</li>
<li class="letter">e</li>
<li class="letter">r</li>
<li class="letter">t</li>
<li class="letter">y</li>
<li class="letter">u</li>
<li class="letter">i</li>
<li class="letter">o</li>
<li class="letter">p</li>
<li class="symbol"><span class="off">[</span><span class="on">{</span></li>
<li class="symbol"><span class="off">]</span><span class="on">}</span></li>
<li class="symbol lastitem"><span class="off">\</span><span class="on">|</span></li>
<li class="capslock">caps lock</li>
<li class="letter">a</li>
<li class="letter">s</li>
<li class="letter">d</li>
<li class="letter">f</li>
<li class="letter">g</li>
<li class="letter">h</li>
<li class="letter">j</li>
<li class="letter">k</li>
<li class="letter">l</li>
<li class="symbol"><span class="off">;</span><span class="on">:</span></li>
<li class="symbol"><span class="off">'</span><span class="on">"</span></li>
<li class="enter lastitem">enter</li>
<li class="left-shift">shift</li>
<li class="letter">z</li>
<li class="letter">x</li>
<li class="letter">c</li>
<li class="letter">v</li>
<li class="letter">b</li>
<li class="letter">n</li>
<li class="letter">m</li>
<li class="symbol"><span class="off">,</span><span class="on">< </span></span></li>
<li class="symbol"><span class="off">.</span><span class="on">></span></li>
<li class="symbol"><span class="off">/</span><span class="on">?</span></li>
<li class="right-shift lastitem">shift</li>
<li class="space lastitem">space</li>
</ul>
</div> |
2. CSS代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | * { margin:0; padding:0;} body { font:10px Tahoma, Geneva, sans-serif; background:#eee;} #container { width:430px; margin:10px;} #write { border:none; width:410px; height:120px; background:#fff; padding:5px; margin-bottom:5px; -moz-border-radius:5px; -webkit-border-radius:5px; border:1px solid #f9f9f9; font-size:11px;} #keyboard { list-style:none;} #keyboard li { float:left; width:20px; height:20px; line-height:20px; text-align:center; background:#fff; margin:0 5px 5px 0; -moz-border-radius:5px; -webkit-border-radius:5px; border:1px solid #f9f9f9;} .tab, .capslock, .left-shift, .space { clear:left;} #keyboard li.lastitem { margin-right:0;} #keyboard li.delete { width:70px;} #keyboard li.tab { width:70px;} #keyboard li.capslock { width:75px;} #keyboard li.enter { width:40px;} #keyboard li.left-shift { width:80px;} #keyboard li.right-shift { width:65px;} #keyboard li.space { width:420px;} #keyboard li:hover, .hover { position:relative; top:1px; left:1px; cursor:pointer; border-color:#e5e5e5;} .on { display:none;} .uppercase { text-transform:uppercase;} |
为了兼容IE6和IE7,需在head标签对间加上如下代码:
1 2 3 4 5 | <!--[if lt ie 8]>
<style type="text/css">
#write { margin-left:-10px;}
</style>
< ![endif]--> |
3. JS代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | $(document).ready(function() { var $writeBox = $('#write'), shift = false, capslock = false; $('#keyboard li').hover(function() { $(this).addClass('hover'); }, function() { $(this).removeClass('hover'); }).click(function() { var $this = $(this), charater = $this.html(); // 一键两意 if($this.hasClass('symbol')) charater = $('span:visible', $this).html(); // Button detele if($this.hasClass('delete')) { var html = $writeBox.html(); $writeBox.html(html.substring(0, html.length-1)); return false; }; // Button tab if($this.hasClass('tab')) charater = '\t'; // Button capslock if($this.hasClass('capslock')) { $('.letter').toggleClass('uppercase'); capslock = true; return false; }; // Button enter if($this.hasClass('enter')) charater = '\n'; // Button shift if($this.hasClass('left-shift') || $this.hasClass('right-shift')) { $('.letter').toggleClass('uppercase'); $('.symbol span').toggle(); shift = (shift === true) ? false : true; capslock = false; return false; }; // Button space if($this.hasClass('space')) charater = ' '; // 转换为大写 if($this.hasClass('uppercase')) charater = charater.toUpperCase(); // 输出所按的键值 $writeBox.html($writeBox.html() + charater); }); }); |
此效果由:http://net.tutsplus.com/tutorials/javascript-ajax/creating-a-keyboard-with-css-and-jquery/中的效果改编而来。
- 上一篇: jQuery:书籍展示效果
- 下一篇: Plugins:开发人员必备的Firefox插件(个人在用)
哇,这个效果真好!
不过除了用来输密码,暂时想不到还能用到其他什么地方去。。
哇,很好很强大啊
很漂亮的站,我喜欢~~
有意加友情链接的话~~到俺小站留言~~
加QQ:1040156166
以便看一看你想要的博客名字~~
我的IT博客和你友情链接了,专业的IT技术博客与你友情链接,希望能够通过,审核,加上我的博客,我已经加上你的博客,
http://www.xpcmd.cn
太强大了,不顶不行。
呵呵,技术人才。
您好,已经做好贵站的链接,如果回访觉得合适就换个链接吧,我博客有的内容不是新的,但米是新的。。
博客只要能给访客带来收获就是行的,譬如www.ihiro.org,我的博客就太垃圾了。