¿Por qué las carnes de fondo y márgenes inferiores no ayudan a añadir el espaciamiento vertical entre estos enlaces?
Pregunta
Tengo un div con enlaces en el mismo. Y los estoy alineando uno sobre el otro con las etiquetas <br>
porque no podía encontrar la manera de añadir spacingn vertical con CSS. He intentado añadir un margen inferior y un acolchado inferior a la regla de un estilo pero no parecen tener ningún efecto (¿por qué?). Podría agregar otra etiqueta <br>
para separarlos más, pero tengo que asumir que hay una manera mejor de hacer esto con CSS que simplemente no han sido capaces de averiguar.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<style type="text/css">
html, body
{
height: 100%;
margin: 0;
padding: 0;
font-weight:normal;
font-size:12pt;
font-family: Verdana, Arial, Helvetica, serif, sans-serif;
background:lime;
}
#linksouter
{
margin: 0;
padding: 0;
border-style:solid;
border-width:0px;
position:absolute;
top: 0px;
left: 0px;
width: 80px;
background: blue;
text-align:left;
}
#linksinner
{
margin: 80px 0 0 .5em;
width:100%;
background:fuchsia;
display:inline;
height:100%;
}
#linksinner a
{
color:red;
text-decoration: none;
background:yellow;
}
</style>
</head>
<body>
<div id="linksouter">
<div id="linksinner">
<a href="#">1</a><br />
<a href="#">1</a><br />
<a href="#">1</a><br />
<a href="#">1</a><br />
<a href="#">1</a><br />
</div>
</div>
</body>
</html>
Solución
margen vertical y el relleno sólo funciona en elementos de bloque como div
y p
. a
es un elemento en línea por lo que no funcionará.
Con el fin de hacer lo que quiera es necesario agregar el siguiente estilo a sus enlaces:
display:block;
sólo entonces margen y de paginación para la parte superior e inferior obtener aplicado correctamente
EDIT: si lo haces de esta manera también se puede deshacerse de las etiquetas <br/>
Otros consejos
Para añadir espacio vertical, se puede hacer esto:
#linksinner
{
line-height: 150%;
}
Márgenes no tendrán ningún efecto sobre los elementos <a>
porque están en línea. Una solución alternativa es hacer que:
display: block;
lo que significaría que respeten sus márgenes y, a continuación, no necesitaría sus <br>
s.
Los enlaces no pueden tener márgenes definidos ya que por defecto son elementos "en línea". Los elementos en línea no pueden tener normas de margen o anchura aplicadas. Para permitir que los elementos en línea para tener estas cosas se aplican, es necesario agregar otra propiedad a su regla.
Prueba esto:
#linksinner a {
display: inline-block;
/* Add your margin or height rules here */
}
Creo que para lo que estás buscando a hacer, usted debe utilizar una lista sin embargo:
<ul id="linksinner">
<li><a href="#">1</a></li>
<li><a href="#">1</a></li>
<li><a href="#">1</a></li>
<li><a href="#">1</a></li>
<li><a href="#">1</a></li>
<ul>
A continuación, puede aplicar sus reglas de margen o de relleno a las etiquetas <li />
. Si no desea que las viñetas a aparecer uso:
#linksinner li { list-style-type: none}
Es necesario dar un acolchado o el margen de anclaje a las etiquetas, no los divs. Pero en realidad no lo hacen, debe hacerse lo siguiente:
<p><a href="#"></a></p>
y dar la p es un padding-top padding-inferior o.