Preciso de cantos arredondados em uma div pai para mascarar o conteúdo de seus filhos. overflow: hidden
funciona em situações simples, mas interrompe os navegadores baseados no webkit e o Opera quando o pai está posicionado relativamente ou absolutamente.
Isso funciona no Firefox e IE9:
CSS
#wrapper {
width: 300px;
height: 300px;
border-radius: 100px;
overflow: hidden;
position: absolute;
}
#box {
width: 300px;
height: 300px;
background-color: #cde;
}
HTML
<div id="wrapper">
<div id="box"></div>
</div>
Obrigado pela ajuda!
ATUALIZAÇÃO: O bug que causou esse problema foi corrigido no Chrome. No entanto, não testei novamente o Opera ou o Safari.
fonte
Adicione um índice z ao seu item com raio de borda e ele ocultará as coisas dentro dele.
fonte
-webkit-mask-image: -webkit-radial-gradient(circle, white, black);
foi uma solução eficaz, mas, felizmente, o bug foi corrigido na atualização mais recente que recebi no Chrome.Deixa pra lá, consegui resolver o problema adicionando uma div adicional entre o wrapper e a caixa.
CSS
HTML
Obrigado a todos que ajudaram!
→ http://jsfiddle.net/5fwjp/
fonte
opacidade: 0,99; no wrapper resolver bug do webkit
fonte
transform: translateY(0);
é uma alternativa que alcança o mesmo resultado sem interferir na representação visual do objeto (a menos que você esteja usando a perspectiva).Parece que este funciona:
http://jsfiddle.net/qWdf6/82/
fonte
transform: translateZ(0)
é o suficiente para mim.translateZ
) ativará implicitamente a aceleração de hardware para seus elementos, o que abre uma nova lata de worms em alguns casos, infelizmente.transform: translateZ(0)
também funcionou para mim. No meu caso, não é uma má idéia que este item seja acelerado por hardware.Suportado no Chrome, Opera e Safari mais recentes, você pode fazer o seguinte:
Você definitivamente deveria conferir a ferramenta http://bennettfeely.com/clippy/ !
fonte
Não é uma resposta, mas este é um bug registrado na fonte do Chromium: http://code.google.com/p/chromium/issues/detail?id=62363
Infelizmente, parece que não há ninguém trabalhando nisso. :(
fonte
altere a opacidade do elemento pai com a borda e isso reorganizará os elementos empilhados. Isso funcionou milagrosamente para mim depois de horas de pesquisa e tentativas fracassadas. Era tão simples quanto adicionar uma opacidade de 0,99 para reorganizar esse processo de pintura dos navegadores. Confira http://philipwalton.com/articles/what-no-one-told-you-about-z-index/
fonte
Quanto a mim, nenhuma das soluções funcionou bem, apenas usando:
no elemento wrapper fez o trabalho.
Aqui está o exemplo: http://jsfiddle.net/gpawlik/qWdf6/74/
fonte
com base na excelente resposta de graycrow ...
Aqui está um exemplo mais real do mundo que possui duas divs particulares com algum conteúdo de preenchimento. Substituí o fundo png codificado por apenas um valor hexadecimal, ou seja,
é substituído por
Veja este JSFiddle ... http://jsfiddle.net/hqLkA/
fonte
Aqui veja como eu fiz isso; Jsfiddle
Com o código que inseri, consegui fazê-lo funcionar no Webkit (Chrome / Safari) e Firefox.
Não sei se funciona com a versão mais recente do Opera.Sim, funciona com a versão mais recente do Opera.fonte
border-radius
invólucro nessa situação, você obtém o mesmo resultado apenas configurando-o#box
. Além disso, se o#box
raio da borda for apenas para corrigir o WebKit, você poderá incluir a-webkit-
propriedade lá.Eu tentei todas as respostas, mas sem sucesso. Após algumas horas de investigação, encontrei a solução para este problema. O uso dessas propriedades em sua classe não permitirá que elementos div excedam o contêiner.
fonte
Se você deseja criar uma máscara para uma imagem e posicionar a imagem dentro do contêiner, não defina o atributo 'position: absolute'. Tudo o que você precisa fazer é alterar a margem esquerda e a margem direita. O Chrome / Opera aderirá ao excesso: regras de raio oculto e de borda.
fonte