前军教程网

中小站长与DIV+CSS网页布局开发技术人员的首选CSS学习平台

实战-header的布局及交互(Html+Css+jQuery)

默认效果:


展开效果:

废话不多说,直接上代码:

Html Code:
<div class=" header" id="eventDetailNavMain">
<a href="javascript:void(0)" class="fl h-logo" title="logo">LOGO</a>
<!-- 按钮 -->
<a href="javascript:;" class="fr h-nu-btn" id="hNuBtn">
  <span class="h-nu-default-icon">
    </span> //-->h-nu-default-icon 放默认图标
    //-->h-nu-close-icon 放关闭X 图标
    <i class="common-icon h-nu-close-icon"></i>
</a>				
<div class="h-nu-box">
  //这里还可以放登陆-退出等div的box,布局要做好扩展
  <div class="h-nav-box">//h-nav-box 这个是导航box
    <ul class="nav nav-tabs clearfix ">
      <li class="item itemli">
        <a href="/" class="anchoritem">首页</a>
</li>
<li class="item itemli active">
  <a href="#dsinfo" class="anchoritem">大赛简介</a>
</li>
<li class="item itemli">
  <a href="#zzjg" class="anchoritem">组织机构</a>
</li>
<li class="item itemli">
  <a href="#scplan" class="anchoritem">赛程安排</a>
</li>
<li class="item itemli">
  <a href="#jxset" class="anchoritem">奖项设置</a>
</li>
<li class="item itemli">
  <a href="#works" class="anchoritem">参赛作品要求</a>
</li>
<li class="item itemli">
  <a href="#dspw" class="anchoritem">评审委员会</a>
</li>
<li class="item itemli">
  <a href="javascript:;" class="anchoritem applicjob">实习招聘</a>
</li>
</ul>
//这里可以是 其他box,这里放的是一个a标签
<a href="/" class="apply-link" target="_blank">
  报名入口
</a>
</div>
</div>
</div>
//hNuMask 是背景遮罩曾,可以全局的
 <a href="javascript:;" class="c-mask" id="cMask"></a>

注意:??锚点定位栏目结构:-->赛程安排 id="scplan"
<div class="resume-contitle">
  <div class="title-mod" id="scplan"></div>
	<h2 class="title-text">赛程安排</h2>
</div>
<style>//锚点准确跳转的关键样式
  .title-mod {
      position: absolute;
      left: 0;
      top: -60px;
      width: 100%;
      height: 60px;
      z-index: -1;
  }
</style>
Css Code
//-->遮罩的样式
.cMask {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0,0,0,.8);
    z-index: 15;
    display: none;
 }
.cMask.show {
    display: block;
}
.header {
    background: #060634;
    display: none;
    border: 1px solid #352CC5;
    box-shadow: 0 6px 10px 0 rgba(0,0,0,0.10);
    height: 46px;
    line-height: 46px;
    font-size: 12px;
    color: #FFFFFF;
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 20;
}

//按钮
.h-nu-btn {
    width: 46px;
    height: 46px;
    position: relative; //如果logo文字太长,把图标挤下来了,可以考虑fixed
    top: 0;
    right: 0;
}
.header .h-nu-default-icon {
    width: 46px;
    height: 46px;
    display: block;
    background: #352CC5 url(../img/default_icon.png) center;
    background-repeat: no-repeat;
}
.header .h-nu-close-icon {
    width: 46px;
    height: 46px;
    display: none; //默认是隐藏的
    background: #352CC5 url(../img/close.png) center no-repeat;
    top: 0px;
    position: absolute;
}
//header 点击的时候,新增active的时候,关闭图标显示。
.header.active .h-nu-close-icon {
    display: block;
}
//header 点击的时候,新增active的时候,ul所在box显示。
.header.active .h-nu-box {
    display: block;
}
-->ul.nav样式 太普遍了,就...省略了.
.ofh {
    overflow: hidden;
}
Js Code
function activeSideBarFixed() { //滚动吸顶
  var $activeSideBar = $('.nav-resumewrap');//要吸顶的ul
  var navTop = 0;
  if ($activeSideBar[0]) {
    navTop = $activeSideBar.offset().top;
  }
  $(window).scroll(function() {
    var scrolltop = document.documentElement.scrollTop || document.body.scrollTop;
    if (scrolltop > navTop) {
      sideTop = scrolltop - navTop;
      $activeSideBar.addClass('fixed');
      //添加fixed样式即:.nav-resumewrap.fixed{...}
    } else {
      $activeSideBar.removeClass('fixed');
    }
  });
};
//toast 方法
function ajax_handle_message(msg){//操作信息提示方法
    var $handleMessagePop = $('#handleMessagePop');
    $handleMessagePop.text(msg).addClass('show');
    setTimeout(function(){
        $handleMessagePop.removeClass('show').empty();
    },1000);
};
function hNuToggle() {
    var $hNuBtn = $('#hNuBtn'),
        $hNuMask = $('#cMask'),//全局遮罩元素
        $html = $('html'),
        winHeight = $(window).height() + 'px',
        isOfh = false;
   //-->图标点击执行事件
    $hNuBtn.off('click').on('click', function() {
        var $t = $(this);
        $t.parent().toggleClass('active');
        $hNuMask.toggleClass('show');
        $html.toggleClass('ofh');
        isOfh = $html.hasClass('ofh');
        if (isOfh) {
            $html.css('height', winHeight);
        }

    });
  //-->遮罩点击执行事件
    $hNuMask.off('click').on('click', function() {
        var $t = $(this);
        $t.removeClass('show');
        $hNuBtn.parent().removeClass('active');
    });
   //点击子元素,关闭header的选中active效果
    $('.h-nu-box .itemli').off('click').on('click', function() {
        $hNuBtn.parent().removeClass('active');
    });
   
    $('.applicjob').off('click').on('click', function() {
        ajax_handle_message('敬请期待');
    });
};

$(function() {
    activeSideBarFixed();
    hNuToggle();
  
   //锚点定位栏目,用的是bootstrapjs的功能,target对应ul的包围box即可
    $('body').scrollspy({
        target: '#eventDetailNavMain'
    });
})

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言