资讯专栏INFORMATION COLUMN

如何看源码之Ruby China搜索框动画实现

cnsworder / 3187人阅读

摘要:欢迎交换友链进击的程序媛微博江小湖不要脸的自恋一下我觉得我看源码的能力越来越强了,想看到搜索框动画效果很不错,想试着实现一下。例如只做了输入框的显示隐藏。但是看源码没有设置,有两个属性引起我的注意和,可以猜测这个动画的实现由实现的渐变。

</>复制代码

  1. 欢迎交换友链 Laker"s Blog--进击的程序媛
    Github:https://github.com/younglaker
    微博: 江小湖Laker

不要脸的自恋一下——我觉得我看源码的能力越来越强了,2333~

想看到 Ruby China 搜索框动画效果很不错,想试着实现一下。最初我的想法是用jQuery的animate:

</>复制代码

  1. $("input").animate({width: "toggle"});

</>复制代码

  1. 题外话,toggle值意味着宽度在0和原本宽度之间切换.

如果这样用的话,input就要设为display: none; 并且给input一个初始的长度。

例如 Demo (只做了输入框的显示隐藏)。

但是看 Ruby China 源码没有设置display: none;,有两个属性引起我的注意:width: 0px;transition: all .3s;, 可以猜测这个动画的实现由 transition 实现 width 的渐变。

在不断点击搜索和取消搜索中可以看到,form 上在增加、删除 .active,所以搜索是否被触发的标记绑定在 form 上。

再看CSS,发现搜索框、查询按钮、关闭按钮都在动画触发后有个新的样式出现,名字如.header .form-search.active .XXX,看到这个.form-search.active就确定他们的动画是通过 form 上的 .active 来标记的。

然后我抠出以下主要代码:

</>复制代码

  1. 本例中将会用到JavaScript触发 CSS transition ,详细介绍请看我的另一篇文章《花式使用CSS3 transition》。

HTML:

</>复制代码

CSS:

</>复制代码

  1. .header {
  2. width: 250px;
  3. height: 50px;
  4. position: relative;
  5. display: block;
  6. }
  7. .search-block {
  8. float: right;
  9. }
  10. .header .form-search .fa {
  11. color: #333;
  12. }
  13. .header .form-search {
  14. font-size: 14px;
  15. position: relative;
  16. margin-top: 13px;
  17. margin-right: 10px;
  18. padding: 0 15px;
  19. width: auto;
  20. }
  21. .header .form-search .form-control {
  22. font-size: 12px;
  23. border: none;
  24. width: 0px;
  25. height: 100%;
  26. padding: 6px 1px 4px 1px;
  27. margin-left: 4px;
  28. background: transparent;
  29. -webkit-transition: all .3s;
  30. -moz-transition: all .3s;
  31. transition: all .3s;
  32. box-sizing: border-box;
  33. color: #333;
  34. }
  35. //输入框的动画部分
  36. .header .form-search.active .form-control {
  37. width: 150px !important;
  38. cursor: text;
  39. }
  40. .fa-search:before {
  41. content: "f002";
  42. }
  43. .header .form-search .fa-search {
  44. cursor: pointer;
  45. position: absolute;
  46. top: 6px;
  47. right: 0;
  48. -webkit-transition: all .3s;
  49. -moz-transition: all .3s;
  50. transition: all .3s;
  51. }
  52. // 搜索按钮的动画部分
  53. .header .form-search.active .fa-search {
  54. left: 0;
  55. right: auto;
  56. }
  57. .header .form-search .btn-close {
  58. position: absolute;
  59. top: 6px;
  60. right: 0px;
  61. cursor: pointer;
  62. -webkit-transform: scale(0, 0);
  63. -moz-transform: scale(0, 0);
  64. transform: scale(0, 0);
  65. -webkit-transition: all .3s;
  66. -moz-transition: all .3s;
  67. transition: all .3s;
  68. }
  69. // 取消搜索的动画部分
  70. .header .form-search.active .btn-close {
  71. -webkit-transform: scale(1, 1);
  72. -moz-transform: scale(1, 1);
  73. transform: scale(1, 1);
  74. }

JavaScript:

</>复制代码

  1. $(".btn-search").on("click", function() {
  2. $(".form-search").addClass("active");
  3. });
  4. $(".btn-close").on("click", function() {
  5. $(".form-search").removeClass("active");
  6. });

View Demo

小结

我也不是一眼就看出来的,抠这个效果花了大半天,也是蛮菜的。

分享自己一点点小经验:

长期写代码的经验积累

多猜测多尝试,不断重复原网站的效果,看看代码有什么变化

把想到的关键词就google一下,也许能得到启发

多看源码,刚开始很累,后来就习惯的。我经常会看各种网站源码,框架也大致看过jQuery、Framework 7。前端这块的源码还是比较容易看的。

多模仿多练习。光看别人的代码不够,试着用自己的方式写写,然后对照别人的代码比对不足。我仿jQuery写了Octjs,仿jCanvas写了EasyCanvas(我从初学开始就有个毛病,如果不能理解一个框架、插件的原理,我用着心里就不踏实 >_<)。

想起老博客里写过读豆瓣源码的文章,是我大三时候写的,当时也比较稚嫩,算是第一次看复杂源码,毕竟文件多、代码已压缩混淆。以供参考:《豆瓣绑定事件的方法初探》 (大学时候的博客真是蛮逗比的,哈哈)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/78419.html

相关文章

  • 如何源码Ruby China搜索动画实现

    摘要:欢迎交换友链进击的程序媛微博江小湖不要脸的自恋一下我觉得我看源码的能力越来越强了,想看到搜索框动画效果很不错,想试着实现一下。例如只做了输入框的显示隐藏。但是看源码没有设置,有两个属性引起我的注意和,可以猜测这个动画的实现由实现的渐变。 欢迎交换友链 Lakers Blog--进击的程序媛Github:https://github.com/younglaker微博: 江小湖Laker ...

    plus2047 评论0 收藏0
  • 前端资源系列(4)-前端学习资源分享&前端面试资源汇总

    摘要:特意对前端学习资源做一个汇总,方便自己学习查阅参考,和好友们共同进步。 特意对前端学习资源做一个汇总,方便自己学习查阅参考,和好友们共同进步。 本以为自己收藏的站点多,可以很快搞定,没想到一入汇总深似海。还有很多不足&遗漏的地方,欢迎补充。有错误的地方,还请斧正... 托管: welcome to git,欢迎交流,感谢star 有好友反应和斧正,会及时更新,平时业务工作时也会不定期更...

    princekin 评论0 收藏0

发表评论

0条评论

cnsworder

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<