表单/表格

jQuery+CSS3炫酷高级搜索框设计效果

阿里云

这是一款使用 jQuery 和 CSS3 制作的炫酷高级搜索框设计效果。在这个高级搜索框设计中,当用户点击了搜索按钮之后,会出现搜索输入框,以及一个带相关搜索链接的面板供用户选择。这种高级搜索框的设计对于用户来说是非常好的用户体验。用户点击了搜索框之后,可以在链接面板中看到一些建议的搜索链接,以及各种栏目类别。用户可以通过搜索一个关键字来得到更多的信息。下图是该高级搜索框效果的 GIF 图片预览。

HTML 结构

该高级搜索框的 HTML 结构有 3 个部分组成:一个<header>元素,用于包裹导航条。一个 div.cd-main-search,用于制作搜索框。还有一个 main.cd-main-content 是页面的主体部分。

也想出现在这里?联系我们
创客主机
  1. <header class="cd-main-header animate-search">
  2.   <div class="cd-logo">
  3.   <a href="#0">
  4.     <img src="img/cd-logo.svg" alt="Logo">
  5.   </a></div>
  6.  
  7.   <nav class="cd-main-nav-wrapper">
  8.     <a href="#search" class="cd-search-trigger cd-text-replace">Search</a>
  9.  
  10.     <ul class="cd-main-nav">
  11.       <li><a href="#0">Products</a></li>
  12.       <!-- additional navigation items -->
  13.     </ul>
  14.   </nav>
  15.  
  16.   <a href="#0" class="cd-nav-trigger cd-text-replace">
  17.     Menu<span></span>
  18.   </a>
  19. </header>
  20.  
  21. <main class="cd-main-content">
  22.   <!-- your content here -->
  23. </main>
  24.  
  25. <div id="search" class="cd-main-search">
  26.   <form>
  27.     <input type="search" placeholder="Search...">
  28.  
  29.     <div class="cd-select">
  30.       <span>in</span>
  31.       <select name="select-category">
  32.         <option value="all-categories">all Categories</option>
  33.         <!-- additional options here -->
  34.       </select>
  35.       <span class="selected-value">all Categories</span>
  36.     </div>
  37.   </form>
  38.  
  39.   <div class="cd-search-suggestions">
  40.     <div class="news">
  41.       <h3>News</h3>
  42.       <ul>
  43.         <li>
  44.           <a class="image-wrapper" href="#0">
  45.             <img src="img/placeholder.png" alt="News image">
  46.           </a>
  47.           <h4><a class="cd-nowrap" href="#0">...</a></h4>
  48.           <time datetime="2016-01-12">Feb 03, 2016</time>
  49.         </li>
  50.  
  51.         <!-- additional news here -->
  52.       </ul>
  53.     </div> <!-- .news -->
  54.  
  55.     <div class="quick-links">
  56.       <h3>Quick Links</h3>
  57.       <ul>
  58.         <li><a href="#0">Find a store</a></li>
  59.         <!-- additional quick links here -->
  60.       </ul>
  61.     </div>
  62.   </div> <!-- .cd-search-suggestions -->
  63.  
  64.   <a href="#0" class="close cd-text-replace">Close Form</a>
  65. </div> <!-- .cd-main-search -->

CSS 样式

在小屏幕设备上(视口小于 1024 像素),导航菜单和搜索框被隐藏,只在屏幕的右上方显示一个汉堡包按钮。当用户点击了汉堡包按钮之后,<main>和<header>元素会通过添加 nav-is-visible class 向左滑动进入屏幕。

  1. .cd-main-header, .cd-main-content {
  2.   position: relative;
  3.   transition: transform 0.3s;
  4. }
  5. .cd-main-header.nav-is-visible, .cd-main-content.nav-is-visible {
  6.   transform: translateX(-260px);
  7. }

在大屏幕设备上,搜索框被放置在导航菜单上,默认是隐藏的,只显示一个搜索图标。当用户点击了.cd-search-trigger 元素之后,搜索框表单上会被添加一个.is-visible class,搜索框会被显示出来。

  1. @media only screen and (min-width: 1024px) {
  2.   .cd-main-search {
  3.     position: absolute;
  4.     z-index: 2;
  5.     top: 0;
  6.     left: 0;
  7.     height: 100%;
  8.     width: 100%;
  9.     opacity: 0;
  10.     visibility: hidden;
  11.     transition: opacity 0.3s, visibility 0.3s;
  12.   }
  13.   .cd-main-search.is-visible {
  14.     /* search form open */
  15.     opacity: 1;
  16.     visibility: visible;
  17.   }
  18. }

为了制作搜索框的动画,特效中在<header>元素上添加了.animate-search class。这个 class 会触发 2 个不同的 CSS3 动画:对搜索框使用 cd-slide-in 动画,对高级搜索面板使用 cd-3d-rotation 动画。

  1. @media only screen and (min-width: 1024px) {
  2.   .animate-search .cd-main-search.is-visible {
  3.     /* trigger search form animation if <header> has the .animate-search class */
  4.     animation: cd-slide-in 0.3s;
  5.   }
  6.   .animate-search .is-visible .cd-search-suggestions {
  7.     /* trigger the dropdown animation if <header> has the .animate-search class */
  8.     transform-origin: center top;
  9.     animation: cd-3d-rotation 0.5s 0.3s;
  10.     animation-fill-mode: backwards;
  11.   }
  12. }
  13. @keyframes cd-slide-in {
  14.   0% {
  15.     transform: translateY(-100%);
  16.   }
  17.   100% {
  18.     transform: translateY(0);
  19.   }
  20. }
  21.  
  22. @keyframes cd-3d-rotation {
  23.   0% {
  24.     transform: perspective(1000px) rotateX(-90deg);
  25.   }
  26.   100% {
  27.     transform: perspective(1000px) translateY(0);
  28.   }
  29. }

如果你想要淡入淡出的动画效果,只需要简单的从<header>元素中移除.animate-search class。对于高级搜索面板中的项目列表,要确保 div.cd-select 的宽度随用户的选择而改变。<select>元素是绝对定位的(因此它不占用空间),span.selected-value 元素用于显示可选择的选项。

  1. @media only screen and (min-width: 1024px) {
  2.   .cd-main-search .cd-select {
  3.     position: absolute;
  4.     right: 0;
  5.     overflow: hidden;
  6.   }
  7.   .cd-main-search select {
  8.     /* the <select> element is not visible - it is covered by the .selected-value element */
  9.     position: absolute;
  10.     right: 0;
  11.     opacity: 0;
  12.     color: transparent;
  13.   }
  14.   .cd-main-search .selected-value {
  15.     color: #ffffff;
  16.     pointer-events: none;
  17.   }
  18.   .cd-main-search select, .cd-main-search .selected-value {
  19.     padding: 0.5em 1.7em 0.5em .3em;
  20.     font-size: 1.4rem;
  21.     border-radius: 3px;
  22.   }
  23. }

JavaScript

在初始的 HTML 结构中,导航菜单位于<header>元素中。在小屏幕设备上,导航菜单被移动到屏幕之外,默认隐藏。这些都通过 jQuery 代码来动态改变。另外 div.cd-main-search 元素也会做相同的操作:默认它在导航菜单之外,在小屏幕设备中,会将它移动到 nav.cd-main-nav-wrapper 元素之内。

  1. var navigationWrapper = $('.cd-main-nav-wrapper'),
  2.   navigation = navigationWrapper.children('.cd-main-nav'),
  3.   searchForm = $('.cd-main-search'),
  4.   navigationTrigger = $('.cd-nav-trigger'),
  5.   mainHeader = $('.cd-main-header');
  6. function moveNavigation(){
  7.   var screenSize = checkWindowWidth(); //returns 'mobile' or 'desktop'
  8.     if ( screenSize == 'desktop' && (navigationTrigger.siblings('.cd-main-search').length == 0) ) {
  9.       //desktop screen - insert navigation and search form inside <header>
  10.       searchForm.detach().insertBefore(navigationTrigger);
  11.     navigationWrapper.detach().insertBefore(searchForm).find('.cd-serch-wrapper').remove();
  12.   } else if( screenSize == 'mobile' && !(mainHeader.children('.cd-main-nav-wrapper').length == 0)) {
  13.     //mobile screen - move navigation and search form after .cd-main-content element
  14.     navigationWrapper.detach().insertAfter('.cd-main-content');
  15.     var newListItem = $('<li class="cd-serch-wrapper"></li>');
  16.     searchForm.detach().appendTo(newListItem);
  17.     newListItem.appendTo(navigation);
  18.   }
  19. }

jQuery+CSS3 炫酷高级搜索框设计效果

已有 457 人购买
查看演示升级 VIP立刻购买

演示地址 下载地址
收藏
(0)

发表回复

热销模板

Ashade - 作品展示摄影相册WordPress汉化主题
LensNews

本站承接 WordPress / PbootCMS / DedeCMS 等
系统建站、仿站、开发、定制等业务!