从div中切出的CSS椭圆形状

Jaz*_*kyn 6 html css jquery css3 css-shapes

目标

上面的图像是我想要创建的但是在椭圆形状上有一些困难.一个解释:

  • 菜单栏是一个带有轻微线性渐变的div(深灰色到透明浅灰色)
  • 公司徽标图像有一个透明的bg,位于菜单栏的"ontop"上
  • 椭圆形切口需要与徽标的椭圆形相匹配,并且在它们之间有透明的间隙,这将显示背景颜色(这在每页上都有变化,橙色只是一个例子)

我已经尝试过多次使用径向渐变 - 我能够得到一个圆形切出但无法弄清楚如何使其成为椭圆形,然后无法使线性渐变起作用.看代码:

.circle {
    height: 10em;
    background: radial-gradient(circle 50px at 50% 100%, transparent 50px, rgba(84, 82, 94, 0.8) 50px);
    background: -webkit-radial-gradient(50% 100%, circle, transparent 50px, rgba(84, 82, 94, 0.8) 50px);
}
Run Code Online (Sandbox Code Playgroud)

对切​​口形状和渐变进行排序时,徽标将位于顶部.

任何建议或jsfiddle解决方案将不胜感激,谢谢!

编辑:jsfiddle 在这里

编辑2:通过稍微改变设计解决了问题,感谢那些回复的人.我写了一些jquery来解决这个问题 - 当彩色区域滚出视图时,椭圆边框和标题边框会拾取顶部的颜色,而不是透明度.

在此输入图像描述

And*_*ios 5

你可以从这开始 Running Demo

注意:我添加了一个小动画来更改背景颜色,只是为了清除岛和带有切口的 div 之间的空间是真正透明的。

HTML

<div class="cutout">
    <div class="island">
        <div id="circleText">Circle Text </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS

.cutout {
    height: 10em;
    background: radial-gradient(ellipse 200px 150px at 50% 100%, 
                                transparent 100px, #555 50px);
    position: relative;
}
.island {
    position: absolute;
    left: calc(50% - 150px);
    bottom: -50%;
    width: 300px;
    background: radial-gradient(ellipse 200px 150px at 50% 50%, 
                                silver 90px, rgba(0, 0, 0, 0) 50px);
    height: 10em;
}
.island > div {
    position: absolute;
    left: 80px;
    right: 80px;
    top: 30px;
    bottom: 30px;

    background: rgba(fff, 0, 0, 0.2);
    padding: 5px;    
    text-align: center;    
}

#circleText {
    padding-top: 30px;
    font-size: 1.5em;
}
Run Code Online (Sandbox Code Playgroud)