【问题标题】:How to create parallelograms divs? [duplicate]如何创建平行四边形 div? [复制]
【发布时间】:2016-11-02 17:28:02
【问题描述】:

我正在做一个项目,我必须创建类似于下图中显示的内容。具体来说,带有文本的黄色平行四边形显示在红色矩形内(我不需要这个红色矩形)。如您所知,默认情况下 div 是矩形的

那么我的问题是,如何创建 3 个平行四边形 div 或类似的东西?

任何建议或指南将不胜感激

谢谢

PS:我不能使用图像作为背景,因为如果你把窗口做得更小,背景就不会跟随文字

【问题讨论】:

标签: css css-shapes


【解决方案1】:

你可以使用负SkewX变换来获得想要的效果:

div {
  margin: 20px;
  width: 200px;
  height: 100px;
  display: inline-block;
  background: yellow;    
  border: 1px solid black;
  transform: skewX(-10deg);
  }
<div></div>    

【讨论】:

  • 这非常适合我的项目,只是我们不希望 div 内的内容倾斜。为了保持内容不倾斜,因此只有背景(和边框)倾斜,我为 div::before 添加了一个 css 规则,content: ""; display: block; position: absolute; top: 0; left: 0; 以及高度和宽度以及背景颜色。不要忘记z-index: 1 div 本身和z-index: -1 div::before。干杯!
  • 是的,有几种方法可以做到这一点:比如让这个 div 仅作为背景,并将内容添加为其兄弟(这就是你的示例 div:before 的行为);或取消倾斜内容容器等。
【解决方案2】:

weinde 差不多了,但是有2个问题:需要设置display inline block,div的内容会歪斜。一个非常懒惰的方法是:

.para {
width: 150px;
height: 100px;
-webkit-transform: skew(20deg);
-moz-transform: skew(20deg);
-o-transform: skew(20deg);
background: red;
display: inline-block;
vertical-align: top;
}
.unskew {
-webkit-transform: skew(-20deg);
-moz-transform: skew(-20deg);
-o-transform: skew(-20deg);
}

<div class="para"><div class="unskew">stuff</div></div>
<div class="para">stuff 2</div>

我觉得未倾斜的 div 是不必要的。

您也可以尝试使用 css3 背景渐变。例如,将渐变应用于位于 3 个带有文本的元素后面的父 div。 http://www.quirksmode.org/css/images/angles.html

【讨论】:

    【解决方案3】:

    试试这个 CSS 样式:

    #parallelogram {
    width: 150px;
    height: 100px;
    -webkit-transform: skew(20deg);
    -moz-transform: skew(20deg);
    -o-transform: skew(20deg);
    background: red;}
    

    #parallelogram 你可以选择你自己的类名...

    【讨论】:

    • 为此,您需要 skew 170,告诉他您从 css-tricks.com/examples/ShapesOfCSS 得到这个可能会有所帮助,这样他就可以稍微探索一下
    • 感谢您添加此内容...匆忙写下了我的答案...
    猜你喜欢
    • 2014-11-17
    • 2015-05-19
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多