J'ai besoin de coins arrondis sur un div parent pour masquer le contenu de ses enfants. overflow: hidden
fonctionne dans des situations simples, mais se casse dans les navigateurs basés sur le Webkit et dans Opera lorsque le parent est positionné de manière relativement ou absolue.
Cela fonctionne dans Firefox et 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>
Merci pour l'aide!
MISE À JOUR: le bogue à l'origine de ce problème a été résolu depuis dans Chrome. Je n'ai cependant pas retesté Opera ou Safari.
la source
Ajoutez un z-index à votre élément à rayon de bordure, et il masquera les choses à l'intérieur.
la source
-webkit-mask-image: -webkit-radial-gradient(circle, white, black);
était une solution de contournement efficace, mais, heureusement, le bogue est corrigé dans la dernière mise à jour que j'ai reçue pour Chrome.Peu importe tout le monde, j'ai réussi à résoudre le problème en ajoutant un div supplémentaire entre le wrapper et la boîte.
CSS
HTML
Merci à tous ceux qui ont aidé!
→ http://jsfiddle.net/5fwjp/
la source
opacité: 0,99; sur le wrapper résoudre le bogue du kit Web
la source
transform: translateY(0);
est une alternative qui permet d'obtenir le même résultat sans interférer avec la représentation visuelle de l'objet (sauf si vous utilisez la perspective).Il semble que celui-ci fonctionne:
http://jsfiddle.net/qWdf6/82/
la source
transform: translateZ(0)
me suffit.translateZ
) activera implicitement l'accélération matérielle pour vos éléments, ce qui ouvre malheureusement une toute nouvelle boîte de vers dans certains cas.transform: translateZ(0)
a également travaillé pour moi. Dans mon cas, ce n'est pas une mauvaise idée que cet élément soit accéléré par le matériel.Pris en charge dans les derniers chrome, opéra et safari, vous pouvez le faire:
Vous devriez certainement consulter l'outil http://bennettfeely.com/clippy/ !
la source
Pas de réponse, mais il s'agit d'un bug classé sous la source Chromium: http://code.google.com/p/chromium/issues/detail?id=62363
Malheureusement, personne ne semble y travailler. :(
la source
changez l'opacité de l'élément parent avec la bordure et cela réorganisera les éléments empilés. Cela a fonctionné miraculeusement pour moi après des heures de recherche et des tentatives infructueuses. C'était aussi simple que d'ajouter une opacité de 0,99 pour réorganiser ce processus de peinture des navigateurs. Consultez http://philipwalton.com/articles/what-no-one-told-you-about-z-index/
la source
Quant à moi, aucune des solutions n'a bien fonctionné, en utilisant uniquement:
sur l'élément wrapper a fait le travail.
Voici l'exemple: http://jsfiddle.net/gpawlik/qWdf6/74/
la source
basé sur l'excellente réponse de Graycrow ...
Voici un exemple plus réel du monde qui a deux divs ciculaires avec du contenu de remplissage. J'ai remplacé l'arrière-plan png codé en dur par juste une valeur hexadécimale, c'est-à-dire
est remplacé par
Voir ce JSFiddle ... http://jsfiddle.net/hqLkA/
la source
Regardez ici comment je l'ai fait; Jsfiddle
Avec le code que j'ai mis, j'ai réussi à le faire fonctionner sur Webkit (Chrome / Safari) et Firefox.
Je ne sais pas si cela fonctionne avec la dernière version d'Opera.Oui, cela fonctionne sous la dernière version d'Opera.la source
border-radius
le wrapper on dans cette situation, vous obtenez le même résultat en l'activant simplement#box
. De plus, si le#box
rayon de la bordure sert uniquement à corriger WebKit, vous pouvez simplement y inclure la-webkit-
propriété.J'ai essayé toutes les réponses mais sans succès. Après quelques heures d'enquête, j'ai trouvé une solution à ce problème. L'utilisation de ces propriétés dans votre classe ne permettra pas aux éléments div de déborder du conteneur.
la source
Si vous cherchez à créer un masque pour une image et à positionner l'image à l'intérieur du conteneur, ne définissez pas l'attribut 'position: absolute'. Tout ce que vous avez à faire est de changer la marge gauche et la marge droite. Chrome / Opera respectera les règles de débordement: masqué et bord-rayon.
la source