Eu tenho dois blocos (elementos div) com um preto na parte superior background-color: black
e um branco na parte inferior.
É possível ter um pedaço de texto que contenha as duas zonas com cores invertidas?
Por exemplo: a parte superior do texto "FOO" será branca em preto e a parte inferior preta sobre uma região branca.
Respostas:
Se você quer dizer algo como isto:
Edit: aqui está uma maneira que requer apenas um elemento HTML e, portanto, não será estranho quando lida por clientes que não usam CSS, como mecanismos de pesquisa, leitores de tela, RSS, aplicativos 'sem estilo' etc. (obrigado a Dominic por sugerir tentar
:before
e:after
)http://jsbin.com/UtUlIFO/2/edit
O código importante ( adicione suas cores a isso ):
HTML:
<div class="someclass" data-text="Some text">Some text</div>
CSS:
O atributo HTML pode ser qualquer coisa - usei
data-text
porque é descritivo e evita efeitos colaterais indesejáveis (por exemplo, você pode usar,title
mas criaria mouseovers em alguns navegadores).Se você deseja
display:block;
o.top
elemento main ( ), adicione algo comowidth: 100%;
o.bottom
elemento inner ( ) para preenchê-lo.Se você estiver usando jQuery, poderá aplicar esse estilo a qualquer elemento com muita facilidade, evitando digitar manualmente o
data-text
bit duplicado:Demonstração disso, além de outras coisas, como várias linhas, preenchimento
fonte
:after
ou:before
), alguma idéia?Surpreendentemente, é possível, embora eu só aconselho que se você estiver site é tudo sobre o impacto visual e a semântica do código não importa, além disso, ele provavelmente não vai ser muito consistente em navegadores mais antigos.
O resultado é:
Esta não é uma solução bonita, e aposto que não é a única por aí, mas faz o que você deseja.
Requer que você tenha duas instâncias do texto e, usando posicionamento absoluto e algumas contas simples, é possível criar esse efeito.
Portanto, se tivermos um contêiner
div
, e dentro desses doisdivs
, e em cada um deles uma instância do texto, você poderá usar a seguinteHTML
estrutura eCSS
propriedades para conseguir isso:Aqui está um JSFiddle do resultado. :)
fonte
Há também uma propriedade CSS3 , suportada apenas pelo webkit, que inverte as cores:
E há um HTML5 Canvas Invert , aqui está um exemplo e o código completo . Ele itera sobre todos os pixels de uma imagem e inverte vermelho, verde e azul subtraindo cada componente do valor máximo de cor 255.
Ambas as soluções ainda exigiriam 2 imagens e posicionamento CSS para elas. Como a compatibilidade não é muito boa, eu definitivamente aceitaria uma das outras respostas :)
fonte