谢谢你提前回复这个帖子。
我们已经为我们的网页创建了一个下拉菜单,但我们有一个关于填充的小问题。
请找到下面的代码。还发现附加的重置,我们已经使用(reset.css)的情况下,有一些相关的。
'
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Dexeus Rep</title>
<link rel="stylesheet" href="./resources/styles/reset.css">
</head>
<body>
<nav class="nav-bar">
<div class="nav-items">
<ul>
<li><a href="#">LINK 1</a>
<ul class="dropdown">
<li><a href="#">Link 1.1</a></li>
<li><a href="#">Link 1.2</a></li>
<li><a href="#">Link 1.3</a></li>
<li><a href="#">Link 1.4</a></li>
<li><a href="#">Link 1.5</a></li>
<li><a href="#">Link 1.6</a></li>
<li><a href="#">Link 1.7</a></li>
</ul>
</li>
<li><a href="#">LINK 2</a></li>
<li><a href="#">LINK 3</a></li>
</ul>
</div>
</nav>
</body>
<style>
.nav-bar {
background-color: black;
max-width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
position: fixed;
top: 0;
width: 100%;
height: 3.325em;
}
.nav-items {
display: flex;
align-items: center;
justify-content: center;
}
.nav-items ul {
display: flex;
color: orange;
}
.nav-items ul li {
color: white;
display: flex;
align-items: center;
font-size: 1em;
font-weight: 600;
padding-left: 1em;
padding-right: 1em;
height: 3.325em;
background-color: black;
}
ul li:hover {
background-color: orange;
}
ul li ul {
visibility: hidden;
display: none;
position: absolute;
margin-top: 1px;
top: 3.325em; /* same as nav-bar height */
/* height: 18em; */
}
.dropdown li{
position: relative;
}
ul li:hover > ul, ul li ul:hover {
visibility: visible;
display: flex;
flex-direction: column;
height: 18.5em;
}
</style>
'
重置:
@charset "UTF-8";
/*
Con este reset vamos a resolver:
👉 Unificar el uso de Custom Properties
👉 Problemas de box-model más generales
👉 Problemas con imagenes, vídeos e iconos svg
👉 Problemas con tipografías y etiquetas input en formularios
👉 Unificar la tipografía de todas las etiquetas de una web
*/
/* Aquí definimos las Custom properties */
:root {
--negro: #393939;
/* Tipografía */
--tipo-principal: Helvetica, Arial, sans-serif;
--tipo-secundaria: Verdana;
}
/* Las adaptamos al modo oscuro */
@media (prefers-color-scheme: dark) {
:root {
--negro: #ececec;
}
}
/* Opcional */
/* Configuramos si un usuario ha activado el modo alto contraste. (WD) */
/* Opcional */
/* Desactivamos los animations en el caso de que el usuario haya configurado el modo sin animation */
@media (prefers-reduced-motion: reduce) {
* {
-webkit-animation: none !important;
animation: none !important;
-webkit-transition: none !important;
transition: none !important;
}
}
/* Reseteamos los margin y paddings de todas las etiquetas */
* {
margin: 0;
padding: 0;
border: 0;
-webkit-box-sizing: border-box;
box-sizing: border-box;
vertical-align: baseline;
}
/* Evitamos problemas con las imagenes */
img, picture, video, iframe, figure {
max-width: 100%;
width: 100%;
display: block;
/* opcional */
-o-object-fit: cover;
object-fit: cover;
/* opcional */
-o-object-position: center center;
object-position: center center;
}
/* Reseteamos los enlaces para funcionar como cajas... */
a {
display: block;
text-decoration: none;
color: inherit;
font-size: inherit;
}
/* ... excepto los que se encuentran en párrafos */
p a {
display: inline;
}
/* Quitamos los puntos de los <li> */
li {
list-style-type: none;
}
/* Configuramos anclas suaves */
html {
scroll-behavior: smooth;
}
/* Desactivamos estilos por defecto de las principales etiquetas de texto */
h1, h2, h3, h4, h5, h6, p, span, a, strong, blockquote, i, b, u, em {
font-size: 1em;
font-weight: inherit;
font-style: inherit;
text-decoration: none;
color: inherit;
}
/* Evitamos problemas con los pseudoelementos de quotes */
blockquote:before, blockquote:after, q:before, q:after {
content: "";
content: none;
}
/* Configuramos el texto que seleccionamos */
::-moz-selection {
background-color: var(--negro);
color: var(--blanco);
}
::selection {
background-color: var(--negro);
color: var(--blanco);
}
/* Nivelamos problemas de tipografías y colocación de formularios */
form, input, textarea, select, button, label {
font-family: inherit;
font-size: inherit;
-webkit-hyphens: auto;
-ms-hyphens: auto;
hyphens: auto;
background-color: transparent;
color: inherit;
display: block;
/* opcional */
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}
/* Reseteamos las tablas */
table, tr, td {
border-collapse: collapse;
border-spacing: 0;
}
/* Evitamos problemas con los SVG */
svg {
width: 100%;
display: block;
fill: currentColor;
}
/* (Probándolo, no usar en producción) En el caso de añadir una */
/* p svg{
display: inline;
width: initial;
} */
/* Configuramos la tipografía para toda la web */
body {
min-height: 100vh;
font-size: 100%;
font-family: var(--tipo-principal);
color: var(--negro);
/* opcional */
line-height: 1.4em;
/* opcional */
-webkit-hyphens: auto;
-ms-hyphens: auto;
hyphens: auto;
/* opcional */
font-smooth: always;
/* opcional */
-webkit-font-smoothing: antialiased;
/* opcional */
-moz-osx-font-smoothing: grayscale;
}
问题是,我们对第一个列表元素应用了右填充和左填充,以便使文本居中(LINK1、LINK2、LINK3),因此当下拉菜单出现时,左填充不知何故产生了一个间隙(图中的红线),下拉菜单与原始菜单不在一条线上。
也许有一个更好的方法来创建下拉菜单,但是,正如我们从头开始学习的那样,即使提出了更好的解决方案,也最好能对这个特定的案例进行解释。
谢谢你,
3条答案
按热度按时间mhd8tkvw1#
问题在于定位,您应该了解CSS定位是如何工作的。
在您的例子中,您需要将下拉菜单与container关联起来,这里是“li”,那么您会怎么做:
你给予容器:“.nav-items〉ul〉li”为相对位置,然后“.dropdown”为绝对位置:
字符串
mf98qq942#
你可以把li中的padding去掉,把它交给the,然后给主ul类“main-dropdown”,让它在左边有一些空间,如果你愿意,你可以把它去掉,就像这样:
CSS:
网页:
并删除给li的1 rem填充(注解的)
希望这是有道理的!
iszxjhcz3#
你只需要修改CSS的几行代码,并且使用类名来识别标签,这不仅对定位标签有帮助,对网站的评分和可访问性也有帮助。
x一个一个一个一个x一个一个二个x
如果你想增加下拉宽度,那么你可以使用
}