CSS选择器:应用:专注于导航栏

时间:2017-07-06 20:08:42

标签: html css css-selectors less

遵循ADA标准,我需要在用户的鼠标悬停在导航栏上时使用导航栏进行扩展(使用:悬停),或者如果用户的鼠标专注于导航栏中的某个项目。

虽然我能够把它看作第一部分,但我无法实现第二个要求。

以下是演示我当前实现的代码段:

https://codepen.io/neotriz/pen/MoBMvz?editors=1100

CSS:

.nav-template {
    height: 100%;
    position: absolute;
    transition: width 0.3s linear;
    display: flex;
    overflow: hidden;
    background: black;
    width: 70px;
    &:hover{
        width: 150px;
    }

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

        li {
            margin: 0;
            padding: 0;
            cursor: pointer;
            &:hover {
                background-color: rgba(255, 255, 255, 0.12);
            }
            a {
                color: white;
                height: 40px;
                margin-left: 12px;
                margin-right: 35px;
                padding-bottom: 10px;
                display: flex;
                align-items: center;
                text-decoration: none;
            }
        }
    }
}

如果我将&:focus应用于&:hover,它似乎不起作用,因为它认为需要选择整个导航栏以扩展它,因为假设专注于每个单独的项目

我目前的实施是否需要进行一些改造?

1 个答案:

答案 0 :(得分:1)

试试像这样的事情

HTML

<div tabindex="1" class="nav-template">
  <ul>
    <li><a href="#">Home</a></li>
    <li><a href="#">About</a></li>
    <li><a href="#">Contact</a></li>
  </ul>
</div>

LESS

.nav-template {
    height: 100%;
    position: absolute;
    display: flex;
    overflow: hidden;
    background: black;
    ul {
        list-style-type: none;
        margin: 0;
        padding: 0;
    transition: width 0.3s linear;
        li {
            margin: 0;
            padding: 0;
            cursor: pointer;
            a {
                color: white;
                height: 40px;
                margin-left: 12px;
                margin-right: 35px;
                padding-bottom: 10px;
                display: flex;
                align-items: center;
                text-decoration: none;
                width:70px;
                transition:all ease 0.5s;
        &:focus,&:hover {
                width: 100px;
        background-color: rgba(255, 255, 255, 0.12);
            }
            }
        }
    }
}

CSS

.nav-template {
  height: 100%;
  position: absolute;
  display: flex;
  overflow: hidden;
  background: black;
}
.nav-template ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
  transition: width 0.3s linear;
}
.nav-template ul li {
  margin: 0;
  padding: 0;
  cursor: pointer;
}
.nav-template ul li a {
  color: white;
  height: 40px;
  margin-left: 12px;
  margin-right: 35px;
  padding-bottom: 10px;
  display: flex;
  align-items: center;
  text-decoration: none;
  width:70px;
  transition:all ease 0.5s;
}
.nav-template ul li a:focus,
.nav-template ul li a:hover {
  width: 100px;
  background-color: rgba(255, 255, 255, 0.12);
}

使用:专注于锚标签增加其宽度,:焦点在div上工作但这里的问题是当你聚焦它时直接关注锚标签而不是div或li或ul

为转换添加这些规则

.nav-template ul li a{
width:70px;
transition:all ease 0.5s;
}

Link For reference

尝试一下

希望这会有所帮助...