css – 当父级溢出时,父级的背景显示在子级边界半径周围:隐藏

前端之家收集整理的这篇文章主要介绍了css – 当父级溢出时,父级的背景显示在子级边界半径周围:隐藏前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

这是我刚才问过的question的扩展.然而这次问题更具体,更接近我正在努力的实际情况.

如果另一个元素中有一个元素,并且父元素和子元素都具有border-radius,并且父元素的背景与子元素不同,则它会在子元素的圆角周围可见.

如果父元素上有overflow:hidden属性,则问题会更加严重.然后,涉及使子元素的border-radius小于父元素的border-radius的solution不再起作用.

CodePen上的示例:http://codepen.io/azangru/pen/pgmOvJ(观察子元素黑色背景下方的黄色背景).

HTML:

CSS:

  1. html,body {
  2. height: 100%;
  3. margin: 0;
  4. padding: 0;
  5. }
  6. .dark-bg {
  7. height: 100%;
  8. width: 100%;
  9. padding-top: 10px;
  10. background: black;
  11. }
  12. .outer {
  13. width: 200px;
  14. height: 200px;
  15. margin: auto;
  16. background: white;
  17. border-radius: 10px;
  18. overflow: hidden;
  19. }
  20. .middle {
  21. width: 100%;
  22. height: 50%;
  23. background: yellow;
  24. border-radius: 10px 10px 0 0;
  25. }
  26. .inner {
  27. width: 100%;
  28. height: 100%;
  29. background: black;
  30. border-radius: 10px 10px 0 0;
  31. }
  32. .some-text {
  33. margin-top: 20px;
  34. padding: 0 10px;
  35. }

有没有办法让孩子的背景完全覆盖父母的背景?

(当然,一个显而易见的解决方案是从父项中删除overflow:hidden属性并为文本添加另一个容器,反过来又会溢出:hidden.但是,如果可能的话,我真的不想这样做)

最佳答案
造成这种情况的原因是背景的边界是抗锯齿的,然后允许通过它进行一定量的混合.

应用变换可以以某种方式使其变得不那么明显:translateZ(0px)应用于内部元素.

一种不太通用但更有效的解决方案是将阴影应用于内部

似乎还有一个克隆基本元素属性的伪元素可以解决这个问题

  1. /*
  2. .inner {
  3. Box-shadow: 0px 0px 0px 1px black;
  4. }
  5. */
  6. html,body {
  7. height: 100%;
  8. margin: 0;
  9. padding: 0;
  10. }
  11. .dark-bg {
  12. height: 100%;
  13. width: 100%;
  14. padding-top: 10px;
  15. background: black;
  16. }
  17. .outer {
  18. width: 200px;
  19. height: 200px;
  20. margin: auto;
  21. background: white;
  22. border-radius: 10px;
  23. overflow: hidden;
  24. }
  25. .middle {
  26. width: 100%;
  27. height: 50%;
  28. background: yellow;
  29. border-radius: 10px 10px 0 0;
  30. }
  31. .inner {
  32. width: 100%;
  33. height: 100%;
  34. background: black;
  35. border-radius: 10px 10px 0 0;
  36. position: relative;
  37. }
  38. .inner:after {
  39. content: "";
  40. position: absolute;
  41. background-color: inherit;
  42. top: 0px;
  43. left: 0px;
  44. right: 0px;
  45. bottom: 0px;
  46. }
  47. .some-text {
  48. margin-top: 20px;
  49. padding: 0 10px;
  50. }

猜你在找的CSS相关文章