【问题标题】:Can I replicate this image using only html and css - specifically the shape and edges? [duplicate]我可以仅使用 html 和 css 复制此图像 - 特别是形状和边缘吗? [复制]
【发布时间】:2017-04-11 13:29:45
【问题描述】:

如果可能的话,我想只使用 html 和 css 来复制下面的图像。我想将其用作更改图标和颜色的“徽章”。静态图片不适合我:

一切似乎都可行,但我不知道如何复制徽章本身的实际形状(绿色部分)。我需要研究一个特定的 css 指令来实现这一点吗?

编辑:似乎提出了“重复问题”问题。请注意,链接到的问题不包括六边形中心的图像或文本,这个是。这给问题增加了一点复杂性,因此也增加了新问题。根据这个问题的答案,我能够制定一个更好的谷歌搜索,并遇到了一个对我来说非常有用的代码笔。我投票支持重新提出问题。

【问题讨论】:

  • 为什么不简单地使用 SVG?
  • 因为原始问题指出“如果可能,只有 html 和 css”。
  • @NathanielFlick 原始问题通常不知道超过.. 他们已经知道的。了解 SVG 的 OP 可能会这么说。
  • 但我们总是想回答这个问题,而不是做假设?
  • 到目前为止两个很棒的答案!正确 - 甚至不知道 SVG 是一种选择。一件微妙的事情是原始徽章点上的“圆度”。目前的两个答案是非常难的点。有没有办法像绿色徽章一样“四舍五入”?

标签: html css badge


【解决方案1】:

可以。但是如果你使用 SVG 会更好。这是一个圆角的例子

body{margin:0;}
.hexagon {
    width: 120px;
    height: 60px;
    position: relative;
    margin:50px 10px;
}
.hexagon, .hexagon:before, .hexagon:after {
    background: green;
    border-radius: 5px  
}
.hexagon:before, .hexagon:after {
    content: "";
    position: absolute;
    left: 23px;
    width: 74px;
    height: 70px;
    -moz-transform: rotate(145deg) skew(22.5deg);
    -webkit-transform: rotate(145deg) skew(22.5deg);
    transform: rotate(145deg) skew(22.5deg);
}
.hexagon:before {
    top: -35px;
}
.hexagon:after {
    top: 35px;
}
.hexagon span {
    position: absolute;
    top: 0;
    left: 0;
    width: 120px;
    height: 70px;
    background:green;
    z-index: 1;
}
 <div class="hexagon"><span></span></div>

【讨论】:

  • 我喜欢你推动歪斜以获得四舍五入的方式!它不会均匀地发生在所有角落(在FF中),但我没有考虑过。
  • @NathanielFlick 我知道所有的角落都不圆。我也不考虑使用 css 来制作它。 :P SVG 更容易。我之前的答案和你的一样所以我编辑我的答案:)
【解决方案2】:

CSS Tricks 有一个很棒的关于形状的页面,more here,这就是我如何完成你想要的,而不是我在形状 div 中的文本,替换为你选择的图标字体及其 html 和 css (忽略我添加到六边形的边距顶部,它只是在那里,所以你可以看到整个东西:

#hexagon { width: 100px; height: 55px; background: red; position: relative; margin-top: 3em; line-height: 55px; text-align: center; color: white;} 

#hexagon:before { content: ""; position: absolute; top: -25px; left: 0; width: 0; height: 0; border-left: 50px solid transparent; border-right: 50px solid transparent; border-bottom: 25px solid red; } 

#hexagon:after { content: ""; position: absolute; bottom: -25px; left: 0; width: 0; height: 0; border-left: 50px solid transparent; border-right: 50px solid transparent; border-top: 25px solid red; }
<div id="hexagon">X THING</div>

【讨论】:

  • 代表链接!很棒的页面。
  • 不客气!我多次发现它很有用。虽然我喜欢 SVG,但我仍然喜欢在添加之前先使用 html 和 css 完成它。它仍然是更复杂的代码,有更多错误导出的机会,并出现功能膨胀和一些小问题。
猜你喜欢
  • 2021-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多