Colocando uma imagem no canto superior direito - CSS

125

Preciso exibir uma imagem no canto superior direito de uma div (a imagem é uma faixa "diagonal"), mas mantendo o texto atual contido em uma div interna, como colada na parte superior.

Eu tentei coisas diferentes, incluindo a imagem em outra div ou definindo sua classe como:

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

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

mas sem sorte. O melhor resultado que obtive foi todo o texto rolado para baixo para o mesmo tamanho de altura da imagem.

Qualquer ideia?

Aleatória
fonte
7
Leitura recomendada: ALA: CSS Positioning 101 e ALA: CSS Floats 101 .
jensgram

Respostas:

236

Você pode fazer assim:

#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
fonte
28

Posicione o divrelativamente e posicione a fita absolutamente dentro dele. Algo como:

#content {
  position:relative;
}

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

Enquanto olhava para o mesmo problema, encontrei um exemplo

<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>

O truque aqui é criar um pequeno (usei o GIMP) um PNG (ou GIF) que tenha um plano de fundo transparente (e exclua apenas o canto inferior oposto).

Alexx Roche
fonte