css - 如何在 css 中创建一个直边的 'Parallelogram' 形状?

标签 css shapes css-shapes

<分区>

我正在尝试在 css 中创建一个右侧为直边的平行四边形,但到目前为止我正在努力实现这一目标。

我正在使用 CSS ...

-webkit-transform: skew(-18deg);
-moz-transform: skew(-18deg);
-o-transform: skew(-18deg);

...“倾斜”矩形以创建平行四边形。

请问右边可以做直吗?

是否需要在 css 中使用 :before 和 :after?

任何帮助都会很棒。

谢谢,

菲尔

最佳答案

您可以通过添加三 Angular 形元素并将其放置在矩形元素旁边来实现此目的。

选项 1:(使用边框 hack)

在下面的示例中,我为三 Angular 形添加了蓝色,只是为了说明该形状是如何实现的。请替换下一行中的颜色以获得一侧斜边另一侧直边的平行四边形。

改变下面的

border-color: transparent blue blue transparent;

border-color: transparent red red transparent;

注意:使用此方法时,很难为形状添加额外的外边框。

片段:

.trapezoid{
    position: relative;
    height: 100px;
    width: 100px;
    background: red;
    margin-left: 50px;
    color: white;
}
.trapezoid:after{
    position: absolute;
    content: '';
    left: -50px;
    top: 0px;
    border-style: solid;
    border-color: blue transparent blue transparent;
    border-width: 100px 0px 0px 50px;
}
<div class="trapezoid">Some dummy text</div>


选项 2:(使用 skew)

.trapezoid{
    position: relative;
    height: 100px;
    width: 100px;
    background: beige;
    border: 1px solid red;
    border-left-width: 0px;
    margin-left: 50px;
}
.trapezoid:before{
    position: absolute;
    content: '';
    left: -25px;
    top: -1px;
    height: 100px;
    width: 50px;
    background: beige;
    border: 1px solid red;
    z-index: -1;
    -webkit-transform: skew(20deg);
    -moz-transform: skew(20deg);
    transform: skew(20deg);
}
<div class="trapezoid">Some dummy text.</div>

关于css - 如何在 css 中创建一个直边的 'Parallelogram' 形状?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25993033/

相关文章:

java - 我怎样才能将 Line2D 与 Java 中的区域相交?

css - 使用伪 :Before Trick, 添加空格的漂亮标题形状

iOS - 查找黑色曲线包围的白色像素/区域并创建路径

html - CSS - 如何制作一个 100vh 的 1/4 圆?

html - 带有CSS的形状的SVG大小

jquery - 寻找 PDF 文件的 JQuery OpenViewer

html - 简单的菜单在 chrome 中有效,在 IE 中失败

css - 网格形状图标

jQuery - 如何根据 100% 宽度计算高度?

css - 当视口(viewport)变小时,内部 div 的高度不调整