如何在 CSS 中制作蛋形? [复制]

Posted

技术标签:

【中文标题】如何在 CSS 中制作蛋形? [复制]【英文标题】:How can I make an egg shape in CSS? [duplicate] 【发布时间】:2019-04-16 13:07:40 【问题描述】:

我正在尝试使用 CSS 制作鸡蛋样式的图像,但我无法完全正确。我想让鸡蛋的顶部变窄一点。

 .egg 
    width: 136px;
    height: 190px;
    background: #ffc000;
    display: block;
    -webkit-border-radius: 63px 63px 63px 63px / 108px 108px 72px 72px;
    border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%;
    
<div class="egg"></div>      

我希望鸡蛋显示如下图,但我似乎无法正确调整边框半径!

【问题讨论】:

可能会帮助你改变形状:***.com/questions/18796538/… 坦率地说,如果在单个元素上使用 CSS 可以实现这种形状,我会真的感到惊讶。 也相关:***.com/questions/30711203/… @Pete OP 的代码看起来与该链接中的***回答者的代码完全一样......可能可以肯定地说他们已经看到了。 我想我已经问过一个类似的问题了。 【参考方案1】:

您可以明智地使用border-radius 执行以下操作。

请看下面的片段:

.egg-shape
  width: 70px;
  height: 70px;
  border-radius: 80% 15% 55% 50% / 55% 15% 80% 50%;
  border: 3px solid #1c446b;
  transform: rotate(-45deg);
  margin-top: 30px;
  background: #ffc000;
<div class="egg-shape"></div>

【讨论】:

【参考方案2】:

虽然这不能回答你关于 CSS 的问题,但我确实认为我有一个更好的解决方案给你。

当你想要一个特定的形状时,你可以使用 SVG 矢量图形来达到最佳效果。

查看示例和添加到路径中的类。您遇到的唯一问题是您必须创建 SVG 图像,您可以在其中优化您的形状,或者找到一个。或者使用这里给出的那个。

您可以更改 CSS 并更改颜色和大小。

.svg_egg 
  width: 120px;


path.eggcolor 
  fill: pink;
  stroke: #000000;
  stroke-width: 2;
  stroke-miterlimit: 10;
<svg class='svg_egg'  version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
	 viewBox="0 0 132.2 189" style="enable-background:new 0 0 132.2 189;" xml:space="preserve">
<path class='eggcolor' class="st0" d="M131.2,101.7c4.1,56.2-28.6,86.3-64.6,86.3S-3.7,157.2,1,101.7C6,43,45,1,66.1,1C86,1,127,44,131.2,101.7z"/>
</svg>

编辑 正如@Danield 所提到的,SVG 图像可以合并到 CSS 中,使 SVG 图像的放置就像添加类名一样简单。

<div class="svg_egg"></div>

.svg_egg 
    width: 120px;
    height: 170px;
    background: url('data:image/svg+xml;charset=UTF-8,<svg  
         
        viewBox="0 0 132.2 189" xmlns="http://www.w3.org/2000/svg">
        <path fill="pink" stroke="black" d="M131.2,101.7c4.1,56.2-28.6,86.3-64.6,86.3S-3.7,157.2,1,101.7C6,43,45,1,66.1,1C86,1,127,44,131.2,101.7z"/></svg>') no-repeat;

Daniel 的 Codepen:https://codepen.io/danield770/pen/rQyyOo

【讨论】:

提及您可以将 svg 内联为 css 背景可能很有用 - codepen.io/danield770/pen/rQyyOo - 这样就不需要额外的元素 @Danield - 非常好。我将合并该选项并从您的代码笔中复制。只是为了把东西放在一起。【参考方案3】:

它很容易创建,只需要更改并计算边界半径的百分比。

.egg 
width: 136px;
height: 190px;
background: #ffc000;
display: block;
border-radius: 50% 60% 50% 50% / 70% 70% 40% 40%;
&lt;div class="egg"&gt;&lt;/div&gt;

试试这个然后继续。

【讨论】:

以上是关于如何在 CSS 中制作蛋形? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何制作自定义列css? [复制]

如何在不使用边框和图像的情况下在 div 上制作 CSS 三角形背景? [复制]

CSS - 如何制作带有尖边的矩形? [复制]

如何在 Chrome 中保存更改的 CSS? [复制]

在页面加载动画上制作 css 的正确方法是啥? [复制]

如何在QML(QT Creator)中使用发光脉动效果制作元素动画?