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)
谢谢
边框会影响布局,我建议您简单地切换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)