【问题标题】:CSS3 image with round corners and a very light oval shape带有圆角和非常轻的椭圆形的 CSS3 图像
【发布时间】:2014-10-09 01:59:58
【问题描述】:

您好,我希望在 CSS3 中构建一个带有圆角和非常浅的椭圆形的图像,就像这张图片一样。

不确定它是否可能以及如何。我知道如何构建圆形图像或带有圆角的图像,但这有点不同。

更新 这是我所做的

.round{
    background-color:red;
    width:100px;
    height:100px;
    border-top-left-radius: 45px 40px;
    border-top-right-radius: 45px 40px;
    border-bottom-left-radius: 45px 40px;
    border-bottom-right-radius: 45px 40px;
}

http://jsfiddle.net/7t1z3hxf/9/

更新2 这是我想要实现的示意图

谢谢

【问题讨论】:

  • 你试过什么?您目前对圆形边框等的了解程度如何?我不会是关闭它的人,但如果你不解释你至少做了最少的研究工作,这个问题最终会被关闭,我几乎可以向你保证
  • @Markasoftware 我已经更新了帖子。我的问题是顶部和底部,因为我希望它们是椭圆的,而左右更直

标签: html css css-shapes


【解决方案1】:

如果您想要完美的精度,我推荐mask-image 而不是border-radius。它更适合您想要的。

要将您的 Illustrator-built(?) 形状用作 CSS 中的 mask,请将其导出为带有透明背景的 SVG 或 PNG。

这适用于 Chrome、Safari 和 Opera,但您需要使用前缀 -webkit-mask-image。该属性正在与仅适用于 SVG 的 CSS mask-image 合并,因此当前需要前缀。对于其他浏览器,您可以选择精度较低的border-radius

.round{
 -webkit-mask-image: url(yourshape.png);
 -webkit-mask-size: contain;
 -webkit-mask-position: center center;
 /* ... border-radius as fallback */
}

Learn more about CSS Masking 和浏览器支持。

【讨论】:

    【解决方案2】:

    改编自Here

    如果它准确地记录了您要查找的内容,我可以弄乱边框半径并将其变圆或变平。

    #round {
      position: relative;
      width: 100px;
      height: 100px;
      margin: 20px 0;
      background: orange;
      border-radius: 48% / 25%;
      color: white;
    }
    #round:before {
      content: '';
      position: absolute;
      top: 10%;
      bottom: 11%;
      right: -5%;
      left: -5%;
      background: inherit;
      border-radius: 21% / 68%;
    }
    <div id="round"></div>

    【讨论】:

    • 我认为这就是技术。它与我正在寻找的相似,但不完全是。在我的例子中,角落更圆一些,我认为宽度是 110px(100px+ 2*5%) 而不是 100px。我正在寻找可以放入 100 像素方形盒子中的东西。
    • 您能否从数学的角度解释一下您是如何设置舍入值的
    • 你会注意到这个形状是由两个独立的圆角矩形组成的。边界半径的符号在here 中进行了解释。
    【解决方案3】:

    如果我理解正确,你想要这样的东西。

    HTML:

    <DIV CLASS="TEST"></DIV>
    

    CSS:

    .TEST{
       width:230px;
       height:240px;
       background-image:url(IMAGE.JPG);
       border-radius:100px;
       background-position:center center;
       background-size::230px 240px;
     }
    

    您可以更改这些值以获得所需的位置。

    【讨论】:

    • 关闭,但不完全是我想要的。我已经用原理图更新了主帖。
    • 那么,你需要在前后使用 css 来实现这一点。我可以做到,但有点棘手。类似这些例子:css-tricks.com/examples/ShapesOfCSS
    猜你喜欢
    • 2018-11-09
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    • 1970-01-01
    • 2016-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多