导航栏随屏幕移动而变化

5 篇文章 0 订阅

先吐槽一下下,好久没有整理东西了,最近忙死啦,天天加班到十点,不过这样会成长很快,也是蛮开心的!好了开始整理一下下!

项目中用到了头部导航需要随着鼠标的滑动而变化,所以上网查了很多资料,其实很简单就能实现的效果。

//css 部分---------------------

.header-top {
  padding: 1em 0;
  /*background: #337AB7;*/
  background-color: rgba(51,122,183,0);
  position: fixed;
  z-index: 10000;
  width: 100%;
 }
 .header-top-false{
     background: rgba(51,122,183,0.9);
     transition:0.2s all;
    -webkit-transition:0.2s all;
    -moz-transition:0.2s all;
    -o-transition:0.2s all;
    -ms-transition:0.2s all;
 }


<!--导航栏北京色随scrollY的距离变化而变化-->
<script>
(function(){
  pos = 0;
  ticking = false;
  var header = document.querySelector(".header-top");
  window.addEventListener("scroll", function(e){
    pos = window.scrollY;
    if(pos > 300&&!ticking){
      header.classList.add("header-top-false");
      $('.logo').show(200);
      ticking = true;
    }
    if(pos < 300 && ticking){
      header.classList.remove("header-top-false");
      $('.logo').hide(200);
      ticking = false;
    }
  });
})();
</script>
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要实现这种响应式布局,可以使用CSS的flexbox布局。首先,将整个页面分为左侧边栏和右侧内容两部分,使用flexbox布局将它们排成一行。并且设置左侧边栏的宽度为固定的值,右侧内容的宽度为自适应的值: ```html <div class="container"> <div class="sidebar">左侧边栏</div> <div class="content">右侧内容</div> </div> ``` ```css .container { display: flex; flex-wrap: nowrap; } .sidebar { width: 200px; /* 左侧边栏宽度固定 */ flex-shrink: 0; } .content { flex-grow: 1; /* 右侧内容宽度自适应 */ } ``` 接下来,实现左侧边栏可以动态调整宽度。可以使用JavaScript监听鼠标移动事件,当鼠标在左侧边栏和右侧内容的分界线上按下并拖动时,改变左侧边栏的宽度,右侧内容的宽度也会随之自适应。同时,顶部导航栏和左侧边栏可以使用CSS的position属性设置为固定,不会随着滑动而移动: ```html <div class="container"> <div class="header">顶部导航栏</div> <div class="sidebar">左侧边栏</div> <div class="content">右侧内容</div> </div> ``` ```css .header { position: fixed; top: 0; left: 0; right: 0; height: 50px; } .sidebar { position: fixed; top: 50px; left: 0; bottom: 0; width: 200px; flex-shrink: 0; } .content { margin-left: 200px; /* 右侧内容的左边距为左侧边栏的宽度 */ } ``` ```javascript var isDragging = false; var container = document.querySelector('.container'); var sidebar = document.querySelector('.sidebar'); var content = document.querySelector('.content'); var startX = 0; var startWidth = 0; sidebar.addEventListener('mousedown', function(e) { isDragging = true; startX = e.pageX; startWidth = sidebar.offsetWidth; }); document.addEventListener('mousemove', function(e) { if (!isDragging) { return; } var newWidth = startWidth + (e.pageX - startX); sidebar.style.width = newWidth + 'px'; content.style.marginLeft = newWidth + 'px'; }); document.addEventListener('mouseup', function(e) { isDragging = false; }); ``` 这样就可以实现左侧栏目固定,左侧边栏可以动态调整宽度,右侧内容随着屏幕宽度变化变化,左侧边栏和顶部导航栏固定不会随着滑动。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值