12

我尝试了很多椭圆形的形状,两边都有切口,但不能做到在此处输入图像描述

我需要椭圆形的代码,两边都有切口..

下面是我的代码: -

.demo{
    width: 100%;
    height: 600px;
    background: white;
    -moz-border-radius: 100px / 50px;
    -webkit-border-radius: 100px / 178px;
    border-radius: 694px / 208px;

    z-index: 100;
    position: relative;
    }
4

5 回答 5

20

这个可以吗 ?

HTML

<div id="oval_parent">
    <div id="oval"></div>
</div>

CSS

#oval_parent{
    background:black;
    width:200px;
    height:120px;
    overflow:hidden;
}

#oval{
    width: 220px;
    height: 100px;
    margin:10px 0 0 -10px;  
    background: white;
    -moz-border-radius: 100px / 50px;
    -webkit-border-radius: 100px / 50px;
    border-radius: 100px / 50px;
}

演示

于 2012-10-19T10:29:49.517 回答
4

试试这个:

#oval-shape {
    width: 200px;
    height: 100px;
    background: blue;
    -moz-border-radius: 100px / 50px;
    -webkit-border-radius: 100px / 50px;
    border-radius: 100px / 50px;
}

注意角值相对于高度的比率。

演示- http://jsfiddle.net/XDLVx/

于 2012-10-19T10:21:58.673 回答
1

更改 css 上的值:

#demo {
    width: 100%;
    height: 600px;
    background: white;
    -moz-border-radius: 50% / 250px;
    -webkit-border-radius: 40% / 250px;
    border-radius: 50% / 250px;

    z-index: 100;
    position: relative;
}
于 2012-10-19T10:25:45.407 回答
0

将它放在另一个足够高以显示所有椭圆形的 div 中,不够宽,并设置溢出:隐藏。如果它位于中心,则边缘将被切断,但您将无法横向滚动。

于 2012-10-19T10:28:03.890 回答
0

以下是两种可能的变体:

方法#01:

使用radial-gradient()

background: radial-gradient(ellipse 65% 40%, transparent 0, transparent 90%, black 90%);

body {
  background: linear-gradient(orange, red);
  padding: 0 20px;
  margin: 0;
}
.oval {
  background: radial-gradient(ellipse 65% 40%, transparent 0, transparent 90%, black 90%);
  height: 100vh;
}
<div class="oval">

</div>

方法#02:

  1. :before使用或:after伪元素创建覆盖。
  2. 添加border-radius.
  3. 在父级上应用一个大box-shadow的以隐藏不需要的区域。overflow: hidden

body {
  background: linear-gradient(orange, red);
  padding: 0 20px;
  margin: 0;
}
.oval {
  position: relative;
  overflow: hidden;
  height: 100vh;
}

.oval:before {
  box-shadow: 0 0 0 500px #000;
  border-radius: 100%;
  position: absolute;
  content: '';
  right: -10%;
  left: -10%;
  top: 10%;
  bottom: 10%;
}
<div class="oval">

</div>

于 2016-12-21T12:13:31.817 回答