上面的图片是我正在尝试创建的但是我对椭圆形状有一些困难。解释:
我尝试过多次使用径向渐变 - 我能够得到一个圆形切出但无法弄清楚如何使其成为椭圆形,然后无法使线性渐变起作用。见代码:
.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);
}
当切割形状和渐变进行排序时,徽标将位于顶部。
任何建议或jsfiddle解决方案将不胜感激,谢谢!
编辑:jsfiddle here
编辑2:通过稍微改变设计解决了问题,感谢那些回复的人。我写了一些jquery来解决这个问题 - 当彩色区域滚出视图时,椭圆边框和标题边框会拾取顶部的颜色,而不是透明度。
答案 0 :(得分:4)
您可以从 Running Demo
开始注意:我添加了一个小动画来更改背景颜色,只是为了清除岛和带有剪切的div之间的空间真的透明。
HTML
<div class="cutout">
<div class="island">
<div id="circleText">Circle Text </div>
</div>
</div>
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;
}
答案 1 :(得分:2)
试试这个:
background: radial-gradient(ellipse at 50% 100%, transparent 50px, rgba(84, 82, 94, 0.8) 50px);
jsfiddle here
答案 2 :(得分:1)
试试这个:http://css-tricks.com/the-shapes-of-css/
将其绝对放在菜单的其他部分
上答案 3 :(得分:1)
你可以这样做:
.container{
height: 10em;
background: #76757e;
}
.ovalCutout{
background:white;
height:50px;
width:100px;
border-radius:50%;
margin:0px auto;
position:relative;
top:120px;
}
答案 4 :(得分:1)
你可以做3个背景的复合,中心一个是径向的,一个是线性的。
然而,很难使2种渐变完全匹配;只有梯度非常平滑才能实现。
.back {
height: 100px;
width: 1000px;
padding: 0px;
background-image: radial-gradient(200px 100px ellipse at 50% 100%, transparent 70px,
rgba(100, 100, 100, 0.8) 73px,
rgba(80, 80, 80, 1) 198px),
linear-gradient(180deg, rgb(80, 80, 80), rgba(100, 100, 100, 0.8)),
linear-gradient(180deg, rgb(80, 80, 80), rgba(100, 100, 100, 0.8));
background-size: 200px 100px, 40% 100%, 40% 100%;
background-repeat: no-repeat;
background-position-x: 50%, 0%, 100%;
background-position-y: 100%;
}