子元素scroll父元素容器不跟随滚动JS实现

$.fn.scrollUnique = function() {
    return $(this).each(function() {
        var eventType = ‘mousewheel‘;
        if (document.mozHidden !== undefined) {
            eventType = ‘DOMMouseScroll‘;
        }
        $(this).on(eventType, function(event) {
            // 一些数据
            var scrollTop = this.scrollTop,
                scrollHeight = this.scrollHeight,
                height = this.clientHeight;

            var delta = (event.originalEvent.wheelDelta) ? event.originalEvent.wheelDelta : -(event.originalEvent.detail || 0);        

            if ((delta > 0 && scrollTop <= delta) || (delta < 0 && scrollHeight - height - scrollTop <= -1 * delta)) {
                // IE浏览器下滚动会跨越边界直接影响父级滚动,因此,临界时候手动边界滚动定位
                this.scrollTop = delta > 0? 0: scrollHeight;
                // 向上滚 || 向下滚
                event.preventDefault();
            }
        });
    });
};

$(‘#test‘).scrollUnique();

本文转自 张鑫旭的文章http://www.zhangxinxu.com/wordpress/2015/12/element-scroll-prevent-parent-element-scroll-js/

时间: 2024-10-12 07:37:23

子元素scroll父元素容器不跟随滚动JS实现的相关文章

判断一个元素是否是另一个元素的子元素或者父元素

判断一个元素是否是另一个元素的子元素或者父元素:在实际应用中有时候会判断某个元素是另一个元素的子元素或者父元素,下面就通过代码实例介绍一下. //判断:当前元素是否是被筛选元素的子元素 jQuery.fn.isChildOf=function(b){ return (this.parents(b).length>0); }; //判断:当前元素是否是被筛选元素的子元素或者本身 jQuery.fn.isChildAndSelfOf=function(b){ return (this.closest

jQuery中兄弟元素、子元素和父元素的获取

我们这里主要总结jQuery中对某元素的兄弟元素.子元素和父元素的获取,原声的Javascript代码对这些元素的获取比较麻烦一些,而jQuery正好对这些方法进行封装,让我们更加方便的对这些元素进行获取和操作. jQuery提供的方法 上来就把jQuery提供的方法摆在这里是不是有点不好呀,不过,我们从jQuery的方法名称上就能知道这些方法是干嘛的了. parent(selector) 查找父元素,可传入selector进行过滤(下同) parents(selector) 查找所有的祖先节点

子元素浮动时无法撑开父元素,父元素高度为0的解决方法

当子元素浮动时无法撑开父元素,父元素高度为0.这时可以通过在浮动的子元素后清除浮动来使父元素获得正确的高度. <div> <div style="float:left;height:200px;">child</div> <div style="clear:both;"></div> </div>

jQuery选择器--&gt;当前元素的父元素的兄弟元素的子元素

<script> // jQuery 加载函数 $(function () { // 设置文本框的readonly属性 $(":text").attr("readonly","readonly"); // 点击事件 $(":text").click(function () { // 获取当前元素的父元素的指针 也就是 爸爸在他们的兄弟中排行老几 var i = $(this).parent().index(); /

让子元素在父元素中水平居中align-items

做案例中,我们会发现让子元素在父元素中垂直居中,要设置margin和padding等,各种设置才能垂直居中 现在可以使用CSS3中的align-items实现 align-items 定义子元素在父元素交叉轴上如何对齐的,大多数不理解交叉轴是什么,下面举例来说明,不多说直接上代码 现在是这样显示的,我需要让子元素在父元素中垂直居中 1需要给父元素加display:flex;(不明白的可以先查下,后期会说明这个属性的作用) 2.再给父元素(也就是box)加align-items:center; 效

justify-content 定义子元素在父元素水平位置排列的顺序

justify-content 定义子元素在父元素水平位置排列的顺序,需要和display:flex使用才会生效. 有五个属性: 1.flex-start(默认值)  左对齐 2.flex-end 右对齐 3.center 居中 4.sapce-between 两端对齐,子元素之间的间距相等 5.space-around 每个子元素两侧的间距相等. 代码 效果 flex-end 右对齐 代码 效果 center 居中 代码 效果 sapce-between 两端对齐,子元素之间的间距相等(个人觉

[ jquery 选择器 :nth-last-of-type() ] 选取指定(p)父元素下的从后向前数的指定第一个子元素(无关目标元素在父元素中所处的位置)

选取指定(p)父元素下的从后向前数的指定第一个子元素(无关目标元素在父元素中所处的位置): 实例: <!DOCTYPE html> <html lang='zh-cn'> <head> <title>Insert you title</title> <meta http-equiv='description' content='this is my page'> <meta http-equiv='keywords' conte

子元素浮动 父元素不能自动调节高度的问题

我们知道,子元素浮动或者相对定位,元素都会脱离文档流.而父元素如果没有设置固定高度,在计算高度时,就不会计算浮动子元素所占的高度.但是,有时候我们需要父元素计算其所有子元素的的高度(包括浮动元素)来调整自己的宽高,以便调节自身的背景 border等,此时,只需要给父元素添加css属性: overflow:auto; zoom : 1; 父元素就会自动计算包括浮动子元素内所有子元素的高度来调整自己的高度.

CSS子元素居中(父元素宽高已知,子元素未知)

<style> .container{width:400px; height:400px; position:relative;} .center{position:absolute; left:0; top:0; bottom:0; right:0; margin:auto; width:50px; height:50px; //宽高可以不写 } </style> <div class="container"> <div class=&quo