css快速的导航下拉菜单动画效果

这是一个带变形动画特效的下拉导航菜单特效。该导航菜单在菜单项之间切换时,下拉菜单会快速的根据菜单内容的大小来动态变形,显示合适的下拉菜单大小,效果非常棒。

HTML

该导航菜单的HTML结构如下:

<header class="cd-morph-dropdown">
  <a href="#0" class="nav-trigger">Open Nav<span aria-hidden="true"></span></a>
   
  <nav class="main-nav">
    <ul>
      <li class="has-dropdown gallery" data-content="about">
        <a href="#0">About</a>
      </li>
  
      <li class="has-dropdown links" data-content="pricing">
        <a href="#0">Pricing</a>
      </li>
  
      <li class="has-dropdown button" data-content="contact">
        <a href="#0">Contact</a>
      </li>
    </ul>
  </nav>
   
  <div class="morph-dropdown-wrapper">
    <div class="dropdown-list">
      <ul>
        <li id="about" class="dropdown gallery">
          <!-- dropdown content here -->
        </li>
  
        <li id="pricing" class="dropdown links">
          <!-- dropdown content here -->
        </li>
  
        <li id="contact" class="dropdown button">
          <!-- dropdown content here -->
        </li>
      </ul>
  
      <div class="bg-layer" aria-hidden="true"></div>
    </div> <!-- dropdown-list -->
  </div> <!-- morph-dropdown-wrapper -->
</header>

CSS样式请参照源码中的css/style.css文件。
Javascript

为了实现这个导航菜单,特效中创建了一个morphDropdown对象。并使用bindEvents ()方法来处理元素的事件。
function morphDropdown( element ) {
  this.element = element;
  this.mainNavigation = this.element.find('.main-nav');
  this.mainNavigationItems = this.mainNavigation.find('.has-dropdown');
  this.dropdownList = this.element.find('.dropdown-list');
  //...
   
  this.bindEvents();
}
bindEvents()方法用于在.has-dropdown和.dropdown元素上检测鼠标进入和鼠标离开事件。
morphDropdown.prototype.bindEvents = function() {
  var self = this;
   
  this.mainNavigationItems.mouseenter(function(event){
    //hover over one of the nav items -> show dropdown
    self.showDropdown($(this));
  }).mouseleave(function(){
    //if not hovering over a nav item or a dropdown -> hide dropdown
    if( self.mainNavigation.find('.has-dropdown:hover').length == 0 && self.element.find('.dropdown-list:hover').length == 0 ) self.hideDropdown();
  });
   
  //...
};       
showDropdown方法用于处理宽度、高度和.dropdown-list元素的translateX值,以及放大和缩小.bg-layer元素。
morphDropdown.prototype.showDropdown = function(item) {
  var selectedDropdown = this.dropdownList.find('#'+item.data('content')),
    selectedDropdownHeight = selectedDropdown.innerHeight(),
    selectedDropdownWidth = selectedDropdown.children('.content').innerWidth(),
    selectedDropdownLeft = item.offset().left + item.innerWidth()/2 - selectedDropdownWidth/2;
  
  //update dropdown and dropdown background position and size
  this.updateDropdown(selectedDropdown, parseInt(selectedDropdownHeight), selectedDropdownWidth, parseInt(selectedDropdownLeft));
   
  //add the .active class to the selected .dropdown and .is-dropdown-visible to the .cd-morph-dropdown 
  //...
};
  
morphDropdown.prototype.updateDropdown = function(dropdownItem, height, width, left) {
  this.dropdownList.css({
      '-moz-transform': 'translateX(' + left + 'px)',
      '-webkit-transform': 'translateX(' + left + 'px)',
    '-ms-transform': 'translateX(' + left + 'px)',
    '-o-transform': 'translateX(' + left + 'px)',
    'transform': 'translateX(' + left + 'px)',
    'width': width+'px',
    'height': height+'px'
  });
  
  this.dropdownBg.css({
    '-moz-transform': 'scaleX(' + width + ') scaleY(' + height + ')',
      '-webkit-transform': 'scaleX(' + width + ') scaleY(' + height + ')',
    '-ms-transform': 'scaleX(' + width + ') scaleY(' + height + ')',
    '-o-transform': 'scaleX(' + width + ') scaleY(' + height + ')',
    'transform': 'scaleX(' + width + ') scaleY(' + height + ')'
  });
};     

时间: 2024-12-27 03:30:20

css快速的导航下拉菜单动画效果的相关文章

基于JS快速实现导航下拉菜单动画效果附源码下载_javascript技巧

这是一个带变形动画特效的下拉导航菜单特效.该导航菜单在菜单项之间切换时,下拉菜单会快速的根据菜单内容的大小来动态变形,显示合适的下拉菜单大小,效果非常棒. 快速的导航下拉菜单动画效果如下所示: 效果演示         源码下载 HTML 该导航菜单的HTML结构如下: <header class="cd-morph-dropdown"> <a href="#0" class="nav-trigger">Open Nav&

JS实现快速的导航下拉菜单动画效果附源码下载_javascript技巧

这是一个带变形动画特效的下拉导航菜单特效.该导航菜单在菜单项之间切换时,下拉菜单会快速的根据菜单内容的大小来动态变形,显示合适的下拉菜单大小,效果非常棒. 查看演示     下载源码 HTML 该导航菜单的HTML结构如下: <header class="cd-morph-dropdown"> <a href="#0" class="nav-trigger">Open Nav<span aria-hidden=&qu

html5-如何用HTML和CSS编写一个导航下拉菜单,要鼠标经过显示

问题描述 如何用HTML和CSS编写一个导航下拉菜单,要鼠标经过显示 如题如何用HTML和CSS编写一个导航下拉菜单,要鼠标经过显示,只要一个就行 解决方案 hover就好了,ie6-不支持,不过也不需要考虑ie6了.. <!doctype html> <style> ul.menu, ul.menu li{margin:0px;padding:0px;list-style:none;position:relative;} ul.menu li{line-height:25px}

jQuery实现的导航下拉菜单效果示例_jquery

本文实例讲述了jQuery实现的导航下拉菜单效果.分享给大家供大家参考,具体如下: <!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"> <h

js实现兼容性好的微软官网导航下拉菜单效果_javascript技巧

本文实例讲述了js实现兼容性好的微软官网导航下拉菜单效果.分享给大家供大家参考.具体如下: 这是一款微软官网导航菜单,兼容好的下拉菜单,微软官网导航效果,在IE6下没有动画效果,顺便也把IE6的效果给加上,兼容IE6.现在微软的官方网站正在使用,我觉得非常不错. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/js-microsoft-web-nav-menu-codes/ 具体代码如下: <!DOCTYPE html PUBLIC "-/

jquery实现二级导航下拉菜单效果_jquery

下拉菜单实现很简单,纯css也能实现,但是我不擅长,用jquery也就两行代码,于是就用jquery+css实现简单二级下拉菜单导航,分享给大家供大家参考,具体内容如下 运行效果图: 具体代码:第一步:确定导航的html格式 <ul id="nav"> <li><a href="#">首页</a> <ul> <li><a href="#">PHP编程</a&

CSS技巧分享:如何用css制作横排二级下拉菜单

原文:CSS技巧分享:如何用css制作横排二级下拉菜单 导航菜单是每个网站所必备的功能,也是每个学习制作网站的朋友所必须接触的,如何用css样式制作一个简单漂亮的二级下拉菜单呢,下来小编就一步一步教大家来制作横排二级下拉菜单,让我共同来学习吧. 首页我们打看dreamweaver或其它编辑器,创建一个名为nav的导航菜单 <div class="nav"> <ul> <li><a href="#">栏目一</a&

jquery实现简单的二级导航下拉菜单效果_jquery

本文实例讲述了jquery实现简单的二级导航下拉菜单效果.分享给大家供大家参考.具体如下: jQuery代码实现的二级导航菜单效果,非常简洁,喜欢简洁风格的朋友您可以下载哦.菜单最多支持两级,CSS的配合也是挺重要的,不多说了,要代码的就直接复制吧. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/jquery-2jxl-menu-codes/ 具体代码如下: <title>jquery二级导航菜单</title> <styl

jQuery结合CSS制作动态的下拉菜单_jquery

当要在一个有限的导航菜单空间放一个大的子菜单时,我们一般采用下拉菜单的形式来弥补空间的不足.本文将带大家用最少的时间,使用jQuery和CSS结合制作一个动态的下拉菜单. XHTML 首先是要在页面的head部分引入jquery库,这是必须的. <script type="text/javascript" src="js/jquery.js"></script> 接着我使用一个无序列表来构建菜单. <ul class="men