单击按钮通过容器掩码

时间:2015-03-25 20:55:47

标签: html css css3

我有一个带有一些可点击项的容器,并且在容器的底部,有一个渐变,我正在添加.container:after以创建淡入淡出效果。我仍然希望底部的项目可以点击,但也会受到淡入淡出的影响,因此将可点击项目后面的淡入淡出不起作用。

http://jsfiddle.net/mwjj7hff/1/

HTML:

<div class="container">
    <ul>
        <li>Item</li>
        <li>Item</li>
        <li>Item</li>
        <li>Item</li>
        <li>Item</li>
        <li>Item</li>
        <li>Item</li>
        <li>Item</li>
        <li>Item</li>
        <li>Item</li>
        <li>Item</li>
        <li>Item</li>
        <li>Item</li>
        <li>Item</li>
        <li>Item</li>
        <li>Item</li>
    </ul>
</div>

CSS:

.container {
    border: 1px solid #ccc;
    font-family: sans-serif;
    height: 400px;
    overflow: hidden;
    position: relative;
    width: 200px;
}

.container:after {
    background: linear-gradient(to bottom, rgba(255, 255, 255, .3) 0%, white 100%);
    bottom: 0;
    content: " ";
    height: 150px;
    display: block;
    position: absolute;
    width: 100%;
}

ul {
    list-style-type: none;
    margin: 0;
    padding: 0;
}

li {
    cursor: pointer;
    margin: 3px;
    padding: 3px;
    text-align: center;
}

li:hover {
   background: #99d; 
}

1 个答案:

答案 0 :(得分:2)

快速,简单的解决方案是将pointer-events: none添加到伪元素。

这样做,您基本上可以点击

  

MDN - pointer-events: none

     

元素永远不是鼠标事件的目标;但是,如果这些后代将指针事件设置为某个其他值,则鼠标事件可能会以其后代元素为目标。在这些情况下,鼠标事件将在事件捕获/冒泡阶段期间在发送/来自后代的路径上触发此父元素上的事件侦听器。

Updated Example

.container:after {
    background: linear-gradient(to bottom, rgba(255, 255, 255, .3) 0%, white 100%);
    bottom: 0;
    content: " ";
    height: 150px;
    display: block;
    position: absolute;
    width: 100%;
    pointer-events: none;
}

pointer-events的浏览器支持可以是found here - 目前为87.29%。