Pregunta

Como se puede ver en esta imagen , tengo una div naranja en el interior de un verde div sin borde superior. El div naranja tiene un margen superior 30px, pero también está empujando hacia abajo el div verde. Por supuesto, la adición de un borde superior se solucionará el problema, pero necesito el div verde para ser la parte superior sin fronteras. ¿Qué podía hacer?

.body {
	border: 1px solid black;
	border-top: none;
	border-bottom: none;
	width: 120px;
	height: 112px;
	background-color: lightgreen;
}

.body .container {
	background-color: orange;
	height: 50px;
	width: 50%;
	margin-top: 30px;
}
<div class="header">Top</div>
<div class="body">
	<div class="container">Box</div>
</div>
<div class="foot">Bottom</div>

Gracias

¿Fue útil?

Solución

Se podría añadir a overflow:auto .body para evitar el colapso de margen. Ver http://www.w3.org/TR/CSS2/box. html # colapso-márgenes

Otros consejos

Lo que experimentas es el margen colapso. El margen no especifica un área alrededor de un elemento, sino más bien la distancia mínima entre los elementos.

A medida que el contenedor verde no tiene ninguna frontera o de relleno, no hay nada para contener el margen del elemento de naranja. El margen se utiliza entre el elemento superior y el elemento de naranja al igual que si el contenedor verde tendría el margen.

Usar un acolchado en el contenedor verde en lugar de un margen en el elemento de naranja.

Uso padding en lugar de margin:

.body .container {
    ...
    padding-top: 30px;
}

No estoy seguro si esto va a funcionar en su caso, pero acabo de resolver esto con las siguientes propiedades CSS

#element {
    padding-top: 1px;
    margin-top: -1px;
}

#element estaba siendo empujado hacia abajo, ya que de primer elemento de niño tenía una margin-top: 30px. Con este CSS, que ahora funciona como se esperaba :) No estoy seguro de si funcionará para todos los casos, tu caso es distinto.

Se puede añadir ya sea padding-top: 30 en la caja verde, utilizar el posicionamiento relativo en el cuadro de color naranja con top: 30px, o flotar el cuadro naranja y utilizar el mismo margin-top: 30px.

leer este documento: modelo de caja - Margen colapso

CSS

.body {
    border: 1px solid black;
    border-bottom: none;
    border-top: none;
    width: 120px;
    height: 112px;
    background-color: lightgreen;
    padding-top: 30px;
}

.body .container {
    background-color: orange;
    height: 50px;
    width: 50%;
}

No sabe cómo hacker esto suena, pero ¿qué hay de la adición de un borde transparente?

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