猿问

这段代码怎么封装好?

实现的功能是:

1.
页面下拉时固定nav

https://img.mukewang.com/5baf12a60001121d03830231.jpg

https://img.mukewang.com/5baf12b50001e5f004000770.jpg

https://img3.mukewang.com/5baf12c000010b1f03770407.jpg

https://img2.mukewang.com/5baf12cc0001ff7004450771.jpg

问题是两个栏目后端是分离成组件并且公用的(smarty)!
结构和公用是很大的限制,还有代码冗余,这段代码如何分装比较好,变化的参数写进
smartFloat_nav();
smartFloat_header();其中方法里面?


一只甜甜圈
浏览 706回答 1
1回答

桃花长相依

比较了一下你的代码,两段代码只有这么一点不一样所以可以封装成一个函数,最多只是 smartFloat_nav 和 smartFloat_mall 调用不同。共用部分不想暴露出来可以写成闭包(function() {    function smartFloat(position1, position2) {        var position = function(element) {            var top = element.position().top;            var left = element.position().left;            pos = element.css("position");            $(window).scroll(function() {                var scrolls = $(this).scrollTop();                if (scrolls >= top) {                    if (window.XMLHttpRequest) {                        element.css({                            position: "fixed",                            top: position1,                            left: left                        });                    } else {                        element.css({                            top: scrolls,                            left: left                        });                    }                } else {                    element.css({                        position: "absolute",                        top: position2,                        left: 0,                    });                }            });        };        return $(this).each(function() {            position($(this));        });    }    $.fn.smartFloat_mall = function() {        smartFloat("0.81rem", "2.32rem");    };    $.fn.smartFloat_nav = function() {        smartFloat("1.81rem", "2.32rem");    };})();
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答