经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » JavaScript » 查看文章
JS网站广告实现侧边栏滚动至div顶部后固定、鼠标滚动下拉侧边栏DIV固定
来源:cnblogs  作者:元小疯  时间:2021/1/25 11:11:13  对本文有异议

  网站或博客经常要挂广告,固定在侧边栏上,每次用到场景都不一样,每次都现找案例,今天把各个场景在这里汇总记录一下!

  目前遇到这两种固定div的场景:1、侧边栏滚动至div顶部后固定 ;2、滚动下拉侧边栏DIV固定

  场景一、JS 实现DIV 滚动至顶部后固定

       代码如下:

  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>DIV滚动至顶部后固定</title>
  6. </head>
  7. <body style="height:2000px;">
  8. <div style="height: 200px"></div>
  9. <div id="nav_keleyi_com" style="position:relative;top:0;background:#00f;width:100px; height:100px">
  10. Test Div
  11. </div>
  12. <script type="text/javascript">
  13. function menuFixed(id) {
  14. var obj = document.getElementById(id);
  15. var _getHeight = obj.offsetTop;
  16.  
  17. window.onscroll = function () {
  18. changePos(id, _getHeight);
  19. }
  20. }
  21.  
  22. function changePos(id, height) {
  23. var obj = document.getElementById(id);
  24. var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
  25. if (scrollTop < height) {
  26. obj.style.position = 'relative';
  27. } else {
  28. obj.style.position = 'fixed';
  29. }
  30. }
  31. window.onload = function () {
  32. menuFixed('nav_keleyi_com');
  33. }
  34. </script>
  35. </body>

  场景二、鼠标滚动下拉侧边栏DIV固定

    一般博客侧边栏高度小于主体内容区时,滚动条滚动到到侧边栏底部时,侧边栏固定。

  1. $.fn.scrollFix = function (opt) {
  2. var defaults = {
  3. baseTop: 50, // 初始top值
  4. main: ".main" // 主体区选择器
  5. };
  6. var settings = $.extend(defaults, opt);
  7. var $window = $(window),
  8. $this = $(this),
  9. windowHeight,
  10. scrollTop,
  11. thisHeight,
  12. $main = $(settings.main),
  13. mainHeight;
  14. $window.scroll(function () {
  15. windowHeight = $window.height();
  16. scrollTop = $window.scrollTop();
  17. mainHeight = $main.height();
  18. $this.each(function (idx, val) {
  19. thisHeight = $(this).height();
  20. // 当主体区高度小于侧边栏时不做处理
  21. if (mainHeight < thisHeight) {
  22. return false;
  23. }
  24. // 当主体区高度大于侧边栏,且下滚高度+窗口高度大于侧边栏高度时,固定侧边栏
  25. if (scrollTop + windowHeight > thisHeight) {
  26. $(this).css({
  27. position: 'fixed',
  28. bottom: "50px"
  29. // top: (thisHeight - windowHeight) > 0 ? -(thisHeight - windowHeight) - 30 : settings.baseTop
  30. // left: (idx*100) +"px"
  31. // 如果当前元素的高度大于窗口高度,则上移 当前元素高度与窗口高度的差值,
  32. // 否则紧贴窗口顶部
  33. });
  34. } else {
  35. $(this).css({
  36. position: 'static'
  37. });
  38. }
  39. });
  40. });
  41.  
  42. }

 注意:

         1、页面不生效,解决办法:首先看看文件路径、然后看是否是延迟加载、最后打开控制台看看是否有语法错误

         2、js生效了,div消失了,这种情况我遇到了,打开控制台发现div 的 top:8090 ,所以页面上看不到,固定后修改样式添加:obj.style.top= '10px';

         3、固定后css样式不对,这个时候通常是样式冲突或者继承的是父类样式,解决方案:重写固定后的样式!

      

原文链接:http://www.cnblogs.com/aitree/p/14314041.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号