html - 拨动开关前元件

标签 html css absolute bem

这让我有点发疯,所以我很感激任何帮助。

我正在尝试制作一个拨动开关,看起来它下面有一 block 颜色,只有当开关打开时才可见。

因此,当单击开关时,它会向右滑出(添加一些左边距),然后再次单击时它会滑回。就目前情况而言,我有两个 lis 彼此相邻,都是绝对位置,一个在另一个之上。我正在移动最上面的那个。但即使它们彼此重叠,底部的绿色背景也略微可见。这让我发疯。我试过溢出:隐藏在所有元素上。

HTML:

<ul class="post-list">
    <li class="post-list__month">January</li>
    <li class="post-list__month--hidden"></li>
</ul>  

CSS:

.post-list {
    list-style-type: none;
    box-sizing: border-box;
    position: relative;
    overflow: hidden;

    & li {
        height: 8rem;
        border-radius: 1rem;
        transition: all .5s;
    }

    &__month {
        font-size: 3rem;

        display: inline-block;
        position: absolute;

        background-color: white;
        border: 1px solid rgba(99, 71, 151, 0);
        padding: 2rem;
        z-index: 1;

        &:hover {
            margin-left: 2rem;
            border: 1px solid rgba(99, 71, 151, 0.1);
        }


        &--hidden {
            background-color: green;
            height: 100%;
            width: 7rem;
            border: 1px solid rgba(99, 71, 151, 0);
            overflow: hidden;
            z-index: 0;
        }

    }
}

fiddle 链接:https://jsfiddle.net/ez8mcjtw/

最佳答案

您如何看待使用更语义化的方法...比如一个简单的复选框?它不需要 JavaScript 来切换状态,并且可以在需要时用于将数据传递到服务器。这是一个简单的片段,告诉我你的想法:)

.switch{
    display: inline-block;
    cursor: pointer; 
    border: 2px solid #000;
    background-color: green;
}
.switch *{
   -moz-user-select: none;
   -khtml-user-select: none;
   -webkit-user-select: none;
   -ms-user-select: none;
   user-select: none;
} 
.switch__input{
    position: absolute;
    left: -9999px;
}
.switch__text{
    padding: 10px;
    display: inline-block;
    background-color: #fff;
    transition: all 250ms;
}  
.switch__input:checked + .switch__text{
    margin-left: 30px; 
} 
<label class="switch">
    <input type="checkbox" name="" class="switch__input" value=""> 
    <span class="switch__text">Click me!</span>
</label>

同样在 Codepen 上:https://codepen.io/niki_n14o/pen/eMoYZB

关于html - 拨动开关前元件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49782473/

相关文章:

javascript - 字体仅在之前在页面中使用过后才会出现在 Canvas 上

html - 如何调整选择选项文本?

css - 绝对定位的 div 中的死链接

javascript - 卡在页面加载 : Too much Javascript?

html - 父 div,未设置高度,高度超出几个像素以适应子 img 元素高度?为什么?

Css - 我们应该如何在没有表格的情况下使用 css 制作 3-6 列布局?

javascript - 在宏伟的弹出窗口初始化后记住悬停时的 div 顶部位置

jquery - 删除移动设备的 ScrollTop 功能的问题

html - 如何在 Rails 中的应用程序样式表之后包含 View 样式表?