一种在 CSS3 中弯曲(外部)元素的方法

A way to curve (outside) an element in CSS3

我正在尝试弯曲一个元素,然后在其中添加一个 background-image 属性。 我在看这个问题 - Is there a way to curve an element?。唯一的区别是,我希望它是弯曲的 outside

这是一个例子:

这是我尝试做的:http://jsfiddle.net/KcmfC/1148/

这个结果的问题是它太弯曲了。我找不到任何解决方案。

#test {
  background: url('http://www.planwallpaper.com/static/images/i-should-buy-a-boat.jpg') repeat center center / cover;
  border: 0px solid #000;
  width: 100%;
  min-height: 15em;
  border-radius: 0 0 100% 100%;
}
<div id="test"></div>

减少 border radius 流量

body{
  margin:0
    }

#test {
    background: url('http://www.planwallpaper.com/static/images/i-should-buy-a-boat.jpg') repeat center center / cover;
    border: 0px solid #000;
    width: 100%;
    min-height: 15em;
    border-radius: 0 0 35% 35%;
}
<div id="test">
</div>

这个呢?

#test {
  background: url('http://www.planwallpaper.com/static/images/i-should-buy-a-boat.jpg') repeat center center / cover;
  border: 0px solid #000;
  width: 100%;
  min-height: 15em;
  border-radius: 0 0 70% 70% / 20%;
}
<div id="test"></div>

我做的事情有点棘手,我将 width 拉伸到 140%,并通过 overflow: hidden 拉伸 "cut" 边缘。这是我的完整示例:

#test {
  position: relative;
  overflow: hidden;
  min-height:  150px;
}
#test:before {
    background: url('http://www.planwallpaper.com/static/images/i-should-buy-a-boat.jpg') repeat center center / 1048px 319px;
    border: 0px solid #000;
    content: "";
    width: 140%;
      height: 100%;
    border-radius: 0 0 100% 100%;
    position: absolute;
    z-index: -1;
    left: -20%;
    right: -20%;
}
<div id="test">
  <div>
 SOME TEXT SOME TEXT SOME 
  </div>
</div>

你可以使用伪元素

div {
  background: gray url(http://www.planwallpaper.com/static/images/i-should-buy-a-boat.jpg) no-repeat center bottom -25px / cover;
  height: 180px;
  position: relative;      
}
div:after {
  content: '';
  background: gray url(http://www.planwallpaper.com/static/images/i-should-buy-a-boat.jpg) no-repeat center bottom / cover;
  border-radius: 50%;
  width: 100%;
  height: 50px;
  top: calc(100% - 25px);
  left:0;
  position: absolute;
}
<div></div>