如何给出椭圆形的形状?

时间:2012-10-19 10:17:15

标签: css css3 css-shapes

我在椭圆形状上做了很多尝试,但两侧都有切割但不能做到enter image description here

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

以下是我的代码: -

.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;
    }

5 个答案:

答案 0 :(得分:18)

这样可以吗?

<强> 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;
}

DEMO

答案 1 :(得分:3)

试试这个:

#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/

答案 2 :(得分: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;
}

答案 3 :(得分:0)

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

答案 4 :(得分: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以隐藏不需要的区域。
  4. 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>