¿Por qué las carnes de fondo y márgenes inferiores no ayudan a añadir el espaciamiento vertical entre estos enlaces?

StackOverflow https://stackoverflow.com/questions/1134779

  •  16-09-2019
  •  | 
  •  

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>
¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top