2017-02-27 59 views
0

我使用一個特定的區域mcustomscrollbar插件,和我有一個問題,當我覆蓋到這個因素,我不能滾動下元件。我只能在藍色區域滾動,我也想滾動另一個區域。我試圖觸發mousewheel event,但沒有運氣。不能使一個元素滾動在滾動時此元素疊加

任何幫助,非常感謝!
這裏是我的問題的片段:

(function($){ 
 
     jQuery(window).load(function(){ 
 
      jQuery(".list").mCustomScrollbar(); 
 
     }); 
 
    })(jQuery); 
 
    
 
    jQuery('.list').mCustomScrollbar({ 
 
      theme:"dark-3" 
 
    }); 
 
     
 
    $(".overlay").on("mousewheel", function(){ 
 
     jQuery(".list").trigger("mousewheel"); 
 
    }) 
 
.list{ 
 
    height: 100px; 
 
    overflow-y: auto; 
 
    overflow-x: auto; 
 
    
 
} 
 
.overlay { 
 
    position: fixed; 
 
    opacity: 1; 
 
    visibility: visible; 
 
    top: 0; 
 
    left: 0; 
 
    width: 100%; 
 
    height: 100%; 
 
    z-index: 999; 
 
    background-color: rgba(255, 255, 255, .5); 
 
    -webkit-transition: opacity .15s ease-out; 
 
    -moz-transition: opacity .15s ease-out; 
 
    transition: opacity .15s ease-out; 
 
} 
 

 
.inner-list { 
 
    width: 30%; 
 
    float:left; 
 
    background: lightblue; 
 
    position: relative; 
 
    z-index: 9999; 
 
    overflow: hidden; 
 
} 
 

 
.question { 
 
     position: absolute; 
 
    right: 120px; 
 
    top: 40px; 
 
} 
 

 
.row{ 
 
    list-style-type: none; 
 
    overflow: hidden; 
 
    width: 200px; 
 
    height: 20px; 
 
} 
 
.row:hover{ 
 
    background-color: #E0EBEE; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<script src="http://malihu.github.io/custom-scrollbar/3.0.0/jquery.mCustomScrollbar.concat.min.js"></script> 
 
<link href="http://malihu.github.io/custom-scrollbar/3.0.0/jquery.mCustomScrollbar.min.css" rel="stylesheet"/> 
 

 

 
<div class="container"> 
 
<ul class="list"> 
 
    <div class="inner-list"> 
 
     <li class="row" id="1">1</li> 
 
     <li class="row" id="2">2</li> 
 
     <li class="row" id="3">3</li> 
 
     <li class="row" id="4">4</li> 
 
     <li class="row" id="5">5</li> 
 
     <li class="row" id="6">6</li> 
 
     <li class="row" id="7">7</li> 
 
     <li class="row" id="8">8</li> 
 
     <li class="row" id="9">9</li> 
 
     <li class="row" id="10">10</li> 
 
     <li class="row" id="11">11</li> 
 
     <li class="row" id="12">12</li> 
 
     <li class="row" id="13">13</li> 
 
     <li class="row" id="14">14</li> 
 
     <li class="row" id="15">15</li> 
 
     <li class="row" id="16">16</li> 
 
     <li class="row" id="17">17</li> 
 
     <li class="row" id="18">18</li> 
 
     <li class="row" id="19">19</li> 
 
     <li class="row" id="20">20</li> 
 
    </div> 
 
    </ul> 
 
     <p class="question">Why can't scroll here?</p> 
 
     <div class="overlay"></div> 
 
</div>

回答

1

問題是與.overlay,它是內容的上方,用戶動作被禁用。你可以簡單的使用pointer-events: none。它不適用於IE11,因此您可以使用display: inline-block以使其適用於IE11。

.overlay { 
    pointer-events: none; 
    display: inline-block 
} 
+0

日Thnx的答覆,但我不能用這個,CUS覆蓋我有一些的下拉列表中不應該被點擊,根據,如果我關掉了覆蓋所有的事件,我將能夠點擊的那些元素。 –

+0

你在說什麼下拉菜單?在這種情況下,你仍然可以使用'pointer-events:none'作爲該下拉列表 – Lucian

+0

在我的項目中,我只在這裏描述了我的問題。但是,它已經暗示了我的想法並不是一個壞主意。讓我嘗試! –

0

因爲你檢查,如果用戶DIV,不是體內scolled。

(function($) { 
 
    jQuery(window).load(function() { 
 
    jQuery(".list").mCustomScrollbar(); 
 
    }); 
 
})(jQuery); 
 

 
jQuery('.list').mCustomScrollbar({ 
 
    theme: "dark-3" 
 
}); 
 

 
$("body").on("mousewheel", function() { 
 
    jQuery(".list").trigger("mousewheel"); 
 
})
.list { 
 
    height: 100px; 
 
    overflow-y: auto; 
 
    overflow-x: auto; 
 
} 
 

 
.overlay { 
 
    position: fixed; 
 
    opacity: 1; 
 
    visibility: visible; 
 
    top: 0; 
 
    left: 0; 
 
    width: 100%; 
 
    height: 100%; 
 
    z-index: 999; 
 
    background-color: rgba(255, 255, 255, .5); 
 
    -webkit-transition: opacity .15s ease-out; 
 
    -moz-transition: opacity .15s ease-out; 
 
    transition: opacity .15s ease-out; 
 
} 
 

 
.inner-list { 
 
    width: 30%; 
 
    float: left; 
 
    background: lightblue; 
 
    position: relative; 
 
    z-index: 9999; 
 
    overflow: hidden; 
 
} 
 

 
.question { 
 
    position: absolute; 
 
    right: 120px; 
 
    top: 40px; 
 
} 
 

 
.row { 
 
    list-style-type: none; 
 
    overflow: hidden; 
 
    width: 200px; 
 
    height: 20px; 
 
} 
 

 
.row:hover { 
 
    background-color: #E0EBEE; 
 
}
<div class="container"> 
 
    <ul class="list"> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
    <script src="http://malihu.github.io/custom-scrollbar/3.0.0/jquery.mCustomScrollbar.concat.min.js"></script> 
 
    <link href="http://malihu.github.io/custom-scrollbar/3.0.0/jquery.mCustomScrollbar.min.css" rel="stylesheet" /> 
 

 
    <div class="inner-list"> 
 
     <li class="row" id="1">1</li> 
 
     <li class="row" id="2">2</li> 
 
     <li class="row" id="3">3</li> 
 
     <li class="row" id="4">4</li> 
 
     <li class="row" id="5">5</li> 
 
     <li class="row" id="6">6</li> 
 
     <li class="row" id="7">7</li> 
 
     <li class="row" id="8">8</li> 
 
     <li class="row" id="9">9</li> 
 
     <li class="row" id="10">10</li> 
 
     <li class="row" id="11">11</li> 
 
     <li class="row" id="12">12</li> 
 
     <li class="row" id="13">13</li> 
 
     <li class="row" id="14">14</li> 
 
     <li class="row" id="15">15</li> 
 
     <li class="row" id="16">16</li> 
 
     <li class="row" id="17">17</li> 
 
     <li class="row" id="18">18</li> 
 
     <li class="row" id="19">19</li> 
 
     <li class="row" id="20">20</li> 
 
    </div> 
 
    </ul> 
 
    <p class="question">Why can't scroll here?</p> 
 

 
</div>

1

您不能滾動,因爲在div <div class="overlay"></div>是您<div class="container">的頂部。
更改寬度96%100%.overlay類。

(function($){ 
 
     jQuery(window).load(function(){ 
 
      jQuery(".list").mCustomScrollbar(); 
 
     }); 
 
    })(jQuery); 
 
    
 
    jQuery('.list').mCustomScrollbar({ 
 
      theme:"dark-3" 
 
    }); 
 
     
 
    $(".overlay").on("mousewheel", function(){ 
 
     jQuery(".list").trigger("mousewheel"); 
 
    })
.list{ 
 
    height: 100px; 
 
    overflow-y: auto; 
 
    overflow-x: auto; 
 
    
 
} 
 
.overlay { 
 
    position: fixed; 
 
    opacity: 1; 
 
    visibility: visible; 
 
    top: 0; 
 
    left: 0; 
 
    width: 96%; 
 
    height: 100%; 
 
    z-index: 999; 
 
    background-color: rgba(255, 255, 255, .5); 
 
    -webkit-transition: opacity .15s ease-out; 
 
    -moz-transition: opacity .15s ease-out; 
 
    transition: opacity .15s ease-out; 
 
} 
 

 
.inner-list { 
 
    width: 30%; 
 
    float:left; 
 
    background: lightblue; 
 
    position: relative; 
 
    z-index: 9999; 
 
    overflow: hidden; 
 
} 
 

 
.question { 
 
     position: absolute; 
 
    right: 120px; 
 
    top: 40px; 
 
} 
 

 
.row{ 
 
    list-style-type: none; 
 
    overflow: hidden; 
 
    width: 200px; 
 
    height: 20px; 
 
} 
 
.row:hover{ 
 
    background-color: #E0EBEE; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<script src="http://malihu.github.io/custom-scrollbar/3.0.0/jquery.mCustomScrollbar.concat.min.js"></script> 
 
<link href="http://malihu.github.io/custom-scrollbar/3.0.0/jquery.mCustomScrollbar.min.css" rel="stylesheet"/> 
 

 

 
<div class="container"> 
 
<ul class="list"> 
 
    <div class="inner-list"> 
 
     <li class="row" id="1">1</li> 
 
     <li class="row" id="2">2</li> 
 
     <li class="row" id="3">3</li> 
 
     <li class="row" id="4">4</li> 
 
     <li class="row" id="5">5</li> 
 
     <li class="row" id="6">6</li> 
 
     <li class="row" id="7">7</li> 
 
     <li class="row" id="8">8</li> 
 
     <li class="row" id="9">9</li> 
 
     <li class="row" id="10">10</li> 
 
     <li class="row" id="11">11</li> 
 
     <li class="row" id="12">12</li> 
 
     <li class="row" id="13">13</li> 
 
     <li class="row" id="14">14</li> 
 
     <li class="row" id="15">15</li> 
 
     <li class="row" id="16">16</li> 
 
     <li class="row" id="17">17</li> 
 
     <li class="row" id="18">18</li> 
 
     <li class="row" id="19">19</li> 
 
     <li class="row" id="20">20</li> 
 
    </div> 
 
    </ul> 
 
     <p class="question">Why can't scroll here?</p> 
 
     <div class="overlay"></div> 
 
</div>

+0

Thnx的回覆,但這隻適用於當你在滾動,而不是覆蓋區! :( –

+0

@ TeutaKoraqi好了解你的問題,我可以知道你爲什麼需要覆蓋div嗎? –

+0

當點擊一個圖標時,這個覆蓋圖將被打開,並且會有一部分內容可見,就像這個藍色區域一樣。區域會出現長內容的情況,並且會出現滾動,並且我應該可以滾動內容,同時鼠標滾動到疊加層上,而不僅僅是在可見內容中。我很清楚嗎? –