如何让边框重叠?

Dan*_*Chu 6 css html5 css-selectors css3 css-float

我试图让头部的边框顶部有一种颜色,当在导航上悬停/活动时,它的一部分将变为另一种颜色.

同样,为什么我的li:hover标签,当我这样做border-top仍然返回我border-bottom?

我想在一张照片中实现的目标 如前所述,我也希望在开启时hover,边界过渡将超出图中的绿色边界线.

我怎样才能做到这一点?

这是我到目前为止所拥有的

/*** Page ***/
html,body {
    margin: 0;
}

/*** Navigation ***/
.navbar {
    background-color: #ecf0f1;
}
.navbar > .main-nav > ul,
li {
    list-style-type: none;
    text-decoration: none;
}
.navbar > .main-nav > ul {
    min-height: 60px;
    margin: 0;
    padding: 0;
    overflow: hidden;
    box-sizing: border-box;
    border-top: 8px solid #d1d064;
}
.navbar > .main-nav > ul > li {
    text-align: center;
    min-width: 150px;
    position: relative;
    top: -2px;
    display: block;
    float: left;
}
.navbar > .main-nav > ul > li a {
    display: block;
    color: #737373;
    text-align: center;
    padding: 20px 16px;
    text-decoration: none;
    font-family: 'Lato', sans-serif;
    font-weight: 800;
}
.navbar > .main-nav > ul > li.active {
    border-top: 8px solid #0F9E5E;
}
.navbar > .main-nav > ul > li:after {
    display: block;
    content: '';
    border-top: solid 3px #a8a8b6;
    transform: scaleX(0);
    transition: transform 250ms ease-in-out;
}
.navbar > .main-nav > ul > li:hover:after {
    transform: scaleX(1);
}
.navbar > .main-nav {
    max-width: 1480px;
    margin: 0 auto;
}
Run Code Online (Sandbox Code Playgroud)
<link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet">
    <link href="https://cdnjs.cloudflare.com/ajax/libs/hover.css/2.1.0/css/hover-min.css" rel="stylesheet">
</head>

<body>
<br><br><br><br><br><br>
    <nav class="navbar">
        <div class="main-nav">
            <ul>
                <li class="active"><a href="#">Home</a></li>
                <li><a href="#">Second</a></li>
                <li><a href="#">Third</a></li>
            </ul>
        </div>
    </nav>
</body>
Run Code Online (Sandbox Code Playgroud)

谢谢

Azi*_*ziz 5

边框会影响布局,我建议您简单地切换box-shadow以更改颜色:

.navbar > .main-nav > ul > li.active,
.navbar > .main-nav > ul > li:hover {
  box-shadow: 0 -8px 0 #0F9E5E;
}
Run Code Online (Sandbox Code Playgroud)

工作演示:

.navbar > .main-nav > ul > li.active,
.navbar > .main-nav > ul > li:hover {
  box-shadow: 0 -8px 0 #0F9E5E;
}
Run Code Online (Sandbox Code Playgroud)
.navbar {
  background-color: #ecf0f1;
}
.navbar::after {
  content: '';
  clear: both;
  display: block;
}
.navbar > .main-nav > ul,
li {
  list-style-type: none;
  text-decoration: none;
}
.navbar > .main-nav > ul {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  border-top: 8px solid #d1d064;
}
.navbar > .main-nav > ul > li {
  text-align: center;
  min-width: 150px;
  position: relative;
  display: block;
  float: left;
}
.navbar > .main-nav > ul > li a {
  display: block;
  color: #737373;
  text-align: center;
  padding: 20px 16px;
  text-decoration: none;
  font-family: 'Lato', sans-serif;
  font-weight: 800;
}
.navbar > .main-nav > ul > li.active,
.navbar > .main-nav > ul > li:hover {
  box-shadow: 0 -8px 0 #0F9E5E;
}
Run Code Online (Sandbox Code Playgroud)

以及为什么对于li:hover标签,当我进行border-top设置时仍返回我border-bottom-bottom?

这是由以下CSS引起的:

.navbar > .main-nav > ul > li:after {
  display: block;
  content: '';
  border-top: solid 3px #a8a8b6;
  transform: scaleX(0);
  transition: transform 250ms ease-in-out;
}

.navbar > .main-nav > ul > li:hover::after {
  transform: scaleX(1);
}
Run Code Online (Sandbox Code Playgroud)