用css制作一个奇形状的元素

时间:2017-07-22 01:26:18

标签: css css3 css-shapes

我试图制作一个奇形状的对话框,形状像下面的链接中的一个(没有摇摆的尾巴)。我已经考虑过通过polyfill这样做,但最终导致元素太大。我想我也许可以用伪元素来做,但我不认为我可以在效果后面留下一个阴影,并且只有两个伪元素的奇怪形状的顶部/底部。

enter image description here

我能想到的最好的方法是在主要内容中嵌套多个div并使用absolute定位它们并手动设置top,但我想知道是否有一种更简单的方法。

如果我想制作一个div这样的东西并在不切断它们的情况下将内容写入内容,我应该怎么做呢?

1 个答案:

答案 0 :(得分:1)

使用透视和变换绝对定位的伪类的单个元素可以看起来像这样。

div {
  position: relative;
  display: inline-block;
  color: white;
  margin: 3em;
  perspective: 250px;
}
div::before, div::after {
  content: '';
  position: absolute;
  z-index: -1;
  top: -1em;
  left: -1.5em;
  right: -2em;
  bottom: -1em;
  background: black;
  padding: 2em 3em .5em .5em;
  transform: rotateX(180deg) rotateY(15deg) rotate(1.5deg) skewX(25deg);
}

div::before {
  background: white;
  top: -1.5em;
  left: -2.25em;
  right: -2.75em;
  bottom: -1.75em;
  transform: rotateX(180deg) rotateY(15deg) skewX(35deg);
}

body {
  background: red;
}
<div>i know kung foo</div>