Colocar una imagen en la esquina superior derecha - CSS

125

Necesito mostrar una imagen en la esquina superior derecha de un div (la imagen es una cinta "diagonal") pero manteniendo el texto actual contenido en un div interno, como pegado en la parte superior.

Intenté cosas diferentes como incluir la imagen en otro div o definir su clase como:

.ribbon {
   position: relative;
   top: -16px;
   right: -706px;
}

<div id="content">
   <img src="images/ribbon.png" class="ribbon"/>
   <div>some text...</div>
</div>

Pero sin suerte. El mejor resultado que obtuve fue todo el texto desplazado hacia abajo para el mismo tamaño de altura de la imagen.

¿Alguna idea?

Aleatorizar
fuente
77
Lectura recomendada: ALA: CSS Positioning 101 y ALA: CSS Floats 101 .
jensgram

Respuestas:

236

Puedes hacerlo así:

#content {
    position: relative;
}
#content img {
    position: absolute;
    top: 0px;
    right: 0px;
}

<div id="content">
    <img src="images/ribbon.png" class="ribbon"/>
    <div>some text...</div>
</div>
Rok Kralj
fuente
28

Coloque el divrelativamente, y coloque la cinta absolutamente dentro de ella. Algo como:

#content {
  position:relative;
}

.ribbon {
  position:absolute;
  top:0;
  right:0;
}
Gary Chambers
fuente
4

Mientras miraba el mismo problema, encontré un ejemplo

<style type="text/css">
#topright {
    position: absolute;
    right: 0;
    top: 0;
    display: block;
    height: 125px;
    width: 125px;
    background: url(TRbanner.gif) no-repeat;
    text-indent: -999em;
    text-decoration: none;
}
</style>

<a id="topright" href="#" title="TopRight">Top Right Link Text</a>

El truco aquí es crear un pequeño, (usé GIMP) un PNG (o GIF) que tiene un fondo transparente (y luego simplemente eliminar la esquina inferior opuesta).

Alexx Roche
fuente