【发布时间】:2013-10-30 12:25:04
【问题描述】:
我正在玩 css 中的形状,并想制作一个传统的铃铛形状(想想圣诞铃铛)。 这是我想要的一般形状(虽然我真的不关心顶部和底部的球):
这是我目前所拥有的:
http://jsfiddle.net/bhlaird/NeBtU/
#bell {
left:300px;
position: relative;
}
#bell:before, #bell:after {
position: absolute;
content: "";
left: 50px; top: 0;
width: 180px;
height:400px;
background: #d3d3d3;
border-radius: 150px 150px 150px 20px;
-webkit-transform: rotate(15deg);
-webkit-transform-origin: 0 0;
}
#bell:after {
left: 0;
-webkit-transform: rotate(-15deg);
-webkit-transform-origin:100% 0;
border-radius: 150px 150px 20px 150px;
}
但是,我不确定如何在侧面和底部获得弯曲的外观。任何帮助将不胜感激。
编辑:通过对#bell:before 和#bell:after 应用径向渐变,我离得更近了。这给了我侧面的曲线,现在我只需要底部的曲线。 http://jsfiddle.net/NeBtU/2/
#bell {
left:300px;
position: relative;
}
#bell:before, #bell:after {
position: absolute;
content:"";
top: 0;
width: 180px;
height:400px;
background: #d3d3d3;
}
#bell:before {
left: 50px;
border-radius: 150px 150px 20px 30px;
-webkit-transform: rotate(15deg);
-webkit-transform-origin: 0 0;
transform: rotate(15deg);
transform-origin: 0 0;
background: radial-gradient(-50px 250px, 300px 1200px, transparent 20%, #d3d3d3 20%);
background: -webkit-radial-gradient(-50px 250px, 300px 1200px, transparent 20%, #d3d3d3 20%);
}
#bell:after {
left: 0;
-webkit-transform: rotate(-15deg);
-webkit-transform-origin:100% 0;
transform: rotate(-15deg);
transform-origin:100% 0;
border-radius: 150px 150px 30px 20px;
background: radial-gradient(230px 250px, 300px 1200px, transparent 20%, #d3d3d3 20%);
background: -webkit-radial-gradient(230px 250px, 300px 1200px, transparent 20%, #d3d3d3 20%);
}
【问题讨论】:
-
虽然我喜欢 css(我们工作时只支持 IE8,所以我不会使用 CSS3 :-( ),并认为应该用 css 做更多的事情。这似乎是一个明显的案例只用一张图片。只是我的看法。
-
更好的是,使用 SVG!如果您将其作为内联 SVG 进行,您甚至可以使用 CSS3 动画和过渡对其进行动画处理(显然不适用于旧浏览器)。
-
您将不得不 a) 使用一些半径增大或减小的短弧,或者 b) 使用抛物线数学来实现这一点。我同意这可能不值得付出努力。
-
@isherwood 我很想看看解决方案,不管是否有人可以生产它:)
-
您也许可以使用与倒置圆形标签like Lea Verou posted about 结合的小提琴来做到这一点?最有可能需要两个元素
标签: css shapes css-shapes