2009-05-20 20 views
16

Tengo un gran dolor de cabeza tratando de hacer que una imagen que está dentro de un div parezca flotar fuera de su elemento contenedor.Coloque una imagen fuera de su contenedor

Aunque estoy bastante seguro de que esto simplemente no es posible, quiero asegurarme de haber agotado todas las vías antes de decirle al diseñador y al cliente que simplemente no van a lograr que se vea exactamente como se indica en el especificaciones de diseño

El diseño deseado (especificado) looks like this. Puede ver que hay un icono de globo que se asoma sobre el fondo de esquina redondeada del encabezado. Esta posición también lo tiene ubicado arriba del margen superior de los otros bloques de contenido en el extremo izquierdo y derecho de la página (que también se puede ver en la captura de pantalla parcial).

El resultado que actualmente puedo lograr es looks like this. Como puede ver, si intenta colocar una imagen más allá de sus márgenes definidos, se 'deslizará debajo' de lo que se solape.

He intentado el posicionamiento absoluto, la flotación y cualquier otra cosa que me venga a la mente. Estoy limitado por los márgenes del elemento <h1>, que puede ver en las últimas letras de la primera captura de pantalla.

Código/CSS disponible bajo petición. Pez de chocolate grande para quien me dice que esto realmente se puede lograr y cómo.

Los fragmentos de código HTML:

.icon 
 
    { 
 
     background: transparent none no-repeat scroll 0 -0.2em; 
 
     padding: 1.8em 0 1em 4em; 
 
    } 
 
    
 
    .icon-globe 
 
    { 
 
     background-image: url('images/icons/globe.gif'); 
 
    } 
 
    
 
    /* **************** GRIDS ***************** */ 
 
    .line, .last-column 
 
    { 
 
     overflow: hidden; 
 
     _overflow:visible; 
 
     _zoom:1; 
 
    } 
 
    
 
    .column 
 
    { 
 
     float:left; 
 
     _zoom:1; 
 
    } 
 
    
 
    .col-fullwidth {float:none;} 
 
    .col-halfwidth {width:50%;} 
 
    .col-onethird {width:33%;} 
 
    
 
    .col-last 
 
    { 
 
     float:none; 
 
     _position:relative; 
 
     _left:-3px; 
 
     _margin-right: -3px; 
 
     overflow: hidden; 
 
     width:auto; 
 
    } 
 

 
    .padded-sides 
 
    { 
 
     padding: 0 1em; 
 
    } 
 

 
    .section-heading 
 
    { 
 
     background: transparent url('images/type/section-head.gif') no-repeat top right; 
 
     position: relative; 
 
     margin-left: 1.4em; 
 
    } 
 
    
 
    .section-heading-cap 
 
    { 
 
     background: transparent url('images/type/section-head-cap.gif') no-repeat top left; 
 
     padding: 0.4em 1em 1.6em; 
 
     margin: 0 0 0 -1em; 
 
    }
<h1>Contact Us</h1> 
 
    
 
    <div class="line"> 
 
    
 
     <div class="column col-threequarters"> 
 
     
 
      <div class="line"> 
 
      
 
       <div class="column col-threefifths contact-panel-top"> 
 
          
 
        Unrelated stuff...      
 
       
 
       </div> 
 
      
 
      </div> 
 
      
 
      <div class="column col-last padded-sides"> 
 
      
 
       <div class="section-heading"> 
 
        <h4 class="section-heading-cap"><img src="/App_Themes/Common/images/icons/globe.gif" alt="International" />International Contacts</h4> 
 
       </div> 
 
       
 
       ... and so on.

+0

Es posible que desee publicar el código aquí. ¿Tal vez usar pastebin o algo si es demasiado para insertar directamente en su publicación? –

+0

En el fragmento proporcionado anteriormente, he encapsulado nuestros iconos dentro de las etiquetas de intervalo, pero realmente (REALMENTE) ya no me importa cómo logro el resultado deseado. –

+0

Lo siento, no puedo ser de más ayuda, Phil; No puedo encontrar nada que lo haga funcionar. Mi única recomendación sería tratar de quitar las partes hasta que encuentres lo que está haciendo que no funcione como se esperaba. Sin embargo, hay _definitivamente_ una forma de hacerlo funcionar. Lo siento de nuevo. –

Respuesta

21

¿Qué hacer posicionamiento relativo a la imagen?

position: relative; 
top: -Xpx; 
z-index: 99; 

Dónde -X es por mucho que se tarda en llegar a asomar por debajo de la DIV.

Si eso no funciona, tengo algunas otras ideas, pero definitivamente me gustaría ver su HTML para poder jugar con él fácilmente en Firebug.

EDIT: El html que publicaste no es suficiente, ya que el objetivo de mirar el código es poder tener una copia que puedas probar fácilmente en Firebug y cosas así. Sin embargo, entiendo su duda/incapacidad para publicar toda la página aquí. De todos modos, no usaría un <span> para mostrar la imagen, solo usaría una imagen real. It worked fine for me.

+0

Desafortunadamente no. Esto hace que la imagen se deslice debajo de su vecino o padre. En otras palabras, si coloca una imagen para que eventualmente se mueva fuera de los límites establecidos por los márgenes del contenedor, la imagen se quedará atrás del contenedor sobre el que trata de superponerse (¿si tiene sentido?). –

+0

¿Incluso con el índice Z? –

+3

@Phil .. suena como que se puede desbordar: conjunto oculto en su elemento. Cambiar a desbordamiento: visible – alex

2

utilizando un margen superior negativo a veces puede funcionar, dependiendo de su HTML.

1
.icon 
{ 
    margin-top:-24px; /*icon height/2*/ 
} 
9

La razón por la que su imagen está siendo cortada se debe a que uno de los elementos padre hace referencia a la clase de "col-pasado", que tiene desbordamiento en modo "indetectable". Su página le está diciendo al navegador que corte la imagen.

Si puede eliminar ese atributo de desbordamiento, o modificarlo a "visible", permitirá que la imagen se desborde.

Si la imagen está SIEMPRE cortando, porque el elemento principal que utiliza la clase "section-heading" está relativamente posicionado, puede configurar la imagen para que tenga una posición absoluta, lo que permitirá que la imagen también se muestre de esa manera (pero no creo que eso funcione, siempre y cuando la imagen tenga un desbordamiento de "oculto".

Ejemplo CSS para la imagen:

.section-heading .section-heading-cap img 
{ 
    position:absolute; 
    bottom:0px; 
    left:0px; 
} 

Sin embargo, si lo hace, el texto se posicionará debajo de la imagen. Tendría que establecer el margen o el margen en el lado izquierdo de la etiqueta h4 de forma adecuada para volver a ponerlo a la vista.

+2

Esto me ayudó muchísimo, mi imagen se estaba cortando también, pero debido a un desbordamiento que estaba configurado como oculto. – Shadow

+0

Este es también el que me ayudó. Tuve un desbordamiento: oculto; en un elemento padre. Configurarlo para desbordamiento: visible; lo resolvió para mí. –

3

Pruebe overflow:visible en el elemento primario (que contiene).

+2

Esto ya se trata en los comentarios de otra respuesta. –

Cuestiones relacionadas