部分下拉菜单不可见
Part of drop-down menu is not visible
我正在尝试创建下拉菜单,但是当我添加 position: absolute;
和 display: block;
时,我看不到第二个 ul
元素的全部。我想看到两个 ul
元素,所以我可以添加一个 hover
和一个 display
并完成下拉菜单。
我尝试使用 z-index
和 overflow
,但没有任何效果。
@import url("https://fonts.googleapis.com/css2?family=Roboto+Slab:wght@100;200;300;400;500;600;700;800;900&display=swap");
* {
margin: 0;
padding: 0;
-webkit-box-sizing: border-box;
box-sizing: border-box;
text-decoration: none;
font-family: 'Roboto Slab', serif;
}
html {
font-size: 10px;
}
body {
background-color: #1C1B1A;
}
ul {
list-style: none;
}
a {
text-decoration: none;
color: #fff;
}
h1,
h2,
h3 {
color: #fff;
}
header nav {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
position: relative;
width: 100%;
font-size: 2rem;
}
header nav h1 {
font-size: 3.5rem;
font-weight: 350;
text-transform: uppercase;
padding-left: 5rem;
}
header nav .links {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
background: #6B653C;
height: 100%;
padding: 1rem;
padding-left: 5rem;
padding-right: 5rem;
-webkit-clip-path: polygon(2.75rem 0, 100% 0, 100% 100%, 0 100%);
clip-path: polygon(2.75rem 0, 100% 0, 100% 100%, 0 100%);
}
header nav .links ul {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
}
header nav .links ul li {
margin: 1rem;
text-transform: uppercase;
position: relative;
}
header nav .links ul li ul {
display: block;
position: absolute;
top: 2.2rem;
background: #6B653C;
}
header nav .links ul li ul li {
margin-left: 0;
color: #ffffff;
}
<body>
<header>
<nav>
<h1>logo</h1>
<div class="links">
<ul>
<li><a href="#">link</a></li>
<li><a href="#">link</a></li>
<li><a href="#">link</a></li>
<li><a href="#">link</a></li>
<li><a href="#">link</a>
<ul>
<li><a href="#">link</a></li>
<li><a href="#">link</a></li>
<li><a href="#">link</a></li>
</ul>
</li>
<li><a href="#"><i class="fas fa-user"></i></a></li>
</ul>
</div>
</nav>
</header>
</body>
下面是一个简化的代码,因为你的代码太乱了;)
你让代码太复杂了。例如,使用了错误的font-weight: 350
字体,但googleapis.com
decalaration中只有数百个。
为什么需要这么多版本的字体,毕竟 [100,200, ..., 900],它会极大地降低页面速度。您可以使用 html strong
或 b
元素。
:root {
--olive: #6b653c;
}
@import url("https://fonts.googleapis.com/css2?family=Roboto+Slab:wght@100;200;300;400;500;600;700;800;900&display=swap");
*,
:after,
:before {
box-sizing: border-box;
}
html {
height: 100%;
}
body {
background-color: #1c1b1a;
text-decoration: none;
margin: 0;
font-size: 1rem;
font-family: "Roboto Slab", serif;
}
ul {
list-style: none;
padding: 0;
}
a {
text-decoration: none;
color: #fff;
}
h1,
h2,
h3 {
color: #fff;
}
header {
height: 78px;
}
nav {
display: flex;
align-items: center;
}
h1 {
font-size: 2.5rem;
font-weight: 500;
text-transform: uppercase;
padding-left: 40px;
margin: 0;
}
.links {
position: relative;
margin-left: auto;
background: var(--olive);
padding-right: 20px;
}
.links:before {
content: "";
position: absolute;
left: -30px;
border-right: 0px solid transparent;
border-left: 30px solid transparent;
border-bottom: 50px solid var(--olive);
}
.links ul li {
display: inline-block;
position: relative;
font-size: 1rem;
text-transform: uppercase;
}
.links ul li {
margin-left: 20px;
}
.sub-menu ul {
display: none;
position: absolute;
left: -20px;
background: var(--olive);
padding: 10px 20px;
}
.sub-menu ul li {
margin: 0;
}
.sub-menu:hover ul {
display: block;
}
<header>
<nav>
<h1>logo</h1>
<div class="links">
<ul>
<li><a href="#">link</a></li>
<li><a href="#">link</a></li>
<li><a href="#">link</a></li>
<li><a href="#">link</a></li>
<li class="sub-menu"><a href="#">link</a>
<ul>
<li><a href="#">link</a></li>
<li><a href="#">link</a></li>
<li><a href="#">link</a></li>
</ul>
</li>
<li><a href="#"><i class="fas fa-user"></i>last</a></li>
</ul>
</div>
</nav>
</header>
我正在尝试创建下拉菜单,但是当我添加 position: absolute;
和 display: block;
时,我看不到第二个 ul
元素的全部。我想看到两个 ul
元素,所以我可以添加一个 hover
和一个 display
并完成下拉菜单。
我尝试使用 z-index
和 overflow
,但没有任何效果。
@import url("https://fonts.googleapis.com/css2?family=Roboto+Slab:wght@100;200;300;400;500;600;700;800;900&display=swap");
* {
margin: 0;
padding: 0;
-webkit-box-sizing: border-box;
box-sizing: border-box;
text-decoration: none;
font-family: 'Roboto Slab', serif;
}
html {
font-size: 10px;
}
body {
background-color: #1C1B1A;
}
ul {
list-style: none;
}
a {
text-decoration: none;
color: #fff;
}
h1,
h2,
h3 {
color: #fff;
}
header nav {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
position: relative;
width: 100%;
font-size: 2rem;
}
header nav h1 {
font-size: 3.5rem;
font-weight: 350;
text-transform: uppercase;
padding-left: 5rem;
}
header nav .links {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
background: #6B653C;
height: 100%;
padding: 1rem;
padding-left: 5rem;
padding-right: 5rem;
-webkit-clip-path: polygon(2.75rem 0, 100% 0, 100% 100%, 0 100%);
clip-path: polygon(2.75rem 0, 100% 0, 100% 100%, 0 100%);
}
header nav .links ul {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
}
header nav .links ul li {
margin: 1rem;
text-transform: uppercase;
position: relative;
}
header nav .links ul li ul {
display: block;
position: absolute;
top: 2.2rem;
background: #6B653C;
}
header nav .links ul li ul li {
margin-left: 0;
color: #ffffff;
}
<body>
<header>
<nav>
<h1>logo</h1>
<div class="links">
<ul>
<li><a href="#">link</a></li>
<li><a href="#">link</a></li>
<li><a href="#">link</a></li>
<li><a href="#">link</a></li>
<li><a href="#">link</a>
<ul>
<li><a href="#">link</a></li>
<li><a href="#">link</a></li>
<li><a href="#">link</a></li>
</ul>
</li>
<li><a href="#"><i class="fas fa-user"></i></a></li>
</ul>
</div>
</nav>
</header>
</body>
下面是一个简化的代码,因为你的代码太乱了;)
你让代码太复杂了。例如,使用了错误的font-weight: 350
字体,但googleapis.com
decalaration中只有数百个。
为什么需要这么多版本的字体,毕竟 [100,200, ..., 900],它会极大地降低页面速度。您可以使用 html strong
或 b
元素。
:root {
--olive: #6b653c;
}
@import url("https://fonts.googleapis.com/css2?family=Roboto+Slab:wght@100;200;300;400;500;600;700;800;900&display=swap");
*,
:after,
:before {
box-sizing: border-box;
}
html {
height: 100%;
}
body {
background-color: #1c1b1a;
text-decoration: none;
margin: 0;
font-size: 1rem;
font-family: "Roboto Slab", serif;
}
ul {
list-style: none;
padding: 0;
}
a {
text-decoration: none;
color: #fff;
}
h1,
h2,
h3 {
color: #fff;
}
header {
height: 78px;
}
nav {
display: flex;
align-items: center;
}
h1 {
font-size: 2.5rem;
font-weight: 500;
text-transform: uppercase;
padding-left: 40px;
margin: 0;
}
.links {
position: relative;
margin-left: auto;
background: var(--olive);
padding-right: 20px;
}
.links:before {
content: "";
position: absolute;
left: -30px;
border-right: 0px solid transparent;
border-left: 30px solid transparent;
border-bottom: 50px solid var(--olive);
}
.links ul li {
display: inline-block;
position: relative;
font-size: 1rem;
text-transform: uppercase;
}
.links ul li {
margin-left: 20px;
}
.sub-menu ul {
display: none;
position: absolute;
left: -20px;
background: var(--olive);
padding: 10px 20px;
}
.sub-menu ul li {
margin: 0;
}
.sub-menu:hover ul {
display: block;
}
<header>
<nav>
<h1>logo</h1>
<div class="links">
<ul>
<li><a href="#">link</a></li>
<li><a href="#">link</a></li>
<li><a href="#">link</a></li>
<li><a href="#">link</a></li>
<li class="sub-menu"><a href="#">link</a>
<ul>
<li><a href="#">link</a></li>
<li><a href="#">link</a></li>
<li><a href="#">link</a></li>
</ul>
</li>
<li><a href="#"><i class="fas fa-user"></i>last</a></li>
</ul>
</div>
</nav>
</header>