【问题标题】:Mixin scenario, trying to converting cssMixin 场景,尝试转换 css
【发布时间】:2014-07-29 21:50:57
【问题描述】:

当我在以下场景中将 CSS 转换为 LESS CSS 时遇到问题。

在下面的 CSS 中,:hover.active 类具有相同的属性。

CSS:

.sideNav ul li:hover,
.sideNav ul li.active {background-color:#fff;border:1px solid #d0d0d0;border-right:none;border-bottom:1px solid transparent;margin-right:-1px}

这里是如何在li.active 中使用mixins from &:hover

更少的 CSS:

    .sideNav{
        width:201px;
        margin-bottom:50px;
        float:@left;
        position:fixed;
        ul{
            margin-top:-1px;
            li{
                padding:10px 5px 10px 6px;
                margin:0 0 0 6px;
                border:1px solid transparent;
                border-right:none;
                cursor:pointer;
                border-top:1px solid #d0d0d0;
                overflow:hidden;
                &:hover{
                    background-color:#fff;
                    border:1px solid #d0d0d0;
                    border-right:none;
                    border-bottom:1px solid transparent;
                    margin-right:-1px;
                }
                li.active{

                    /* How to call "&:hover" mixin here */

                }
            }
        }
    }

谢谢

【问题讨论】:

    标签: css less lesscss-resources


    【解决方案1】:

    在您的情况下无需使用 mixins,只需像使用常规 CSS 一样:

    &:hover,
    &.active{
        background-color:#fff;
        border:1px solid #d0d0d0;
        border-right:none;
        border-bottom:1px solid transparent;
        margin-right:-1px;
    }
    

    如果你真的想使用 mixin,你需要定义一个 mixin,而不是使用 CSS 声明:

    /* Mixin definition, notice the () */
    .myhover() {
        background-color:#fff;
        border:1px solid #d0d0d0;
        border-right:none;
        border-bottom:1px solid transparent;
        margin-right:-1px;
    }
    .sideNav{
        width:201px;
        margin-bottom:50px;
        float:@left;
        position:fixed;
        ul{
            margin-top:-1px;
            li{
                padding:10px 5px 10px 6px;
                margin:0 0 0 6px;
                border:1px solid transparent;
                border-right:none;
                cursor:pointer;
                border-top:1px solid #d0d0d0;
                overflow:hidden;
                &:hover{
                    /* Call the mixin */
                    .myhover();
                }
                &.active{
                    .myhover();
                }
            }
        }
    }
    

    【讨论】:

    • 它的工作。好主意。谢谢。但是还有一个关于这个父 li.active a{} 的问题现在该怎么写?
    • hover 和 active 分开是没有意义的,&:hover, &.active { } 对于li.active a {} 你可以写&.active a {} 或者你可以把anchor 放在&.active { a {} } 里面没有区别
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    相关资源
    最近更新 更多