相对倾斜的矩形
Opposing skewed rectangeles
我正在尝试在 css:
中实现这些带有文本的相对倾斜矩形
第一个矩形围绕文本容器设置,文本以与矩形相反的方式倾斜。
HTML
<div class="col-lg-12 col-md-6">
<div class="container-fluid md">
<div class="rectangles rectangle-1">
<div class="text_container">
<?php if ($text) { ?> <div class="text WYSIWYG-styles"> <?= $text ?> </div> <?php } ?>
</div>
</div>
</div>
</div>
SCSS
display: block;
border: 1px solid $primary-color-2;
padding: 60px;
text-align: center;
&.rectangle-1 {
transform:skew(10deg, 10deg);
}
&.rectangle-2 {
transform: skew(-10deg, 10deg);
}
}
.text_container {
.text {
display: block;
transform: skew(-10deg, -10deg);
}
}
}
问题是让第二个矩形在同一平面上以相反的方式倾斜。我考虑过使用伪元素。我认为那行不通。显然,另一个内部 div 只会创建一个内部矩形。
这是我目前拥有的:
如有任何帮助,我们将不胜感激。
您实际上只需要倾斜变换中的第一个参数即可实现此效果。第二个参数将垂直倾斜它,如果您试图匹配您的规范图像,这不是您想要的。
我使用具有相对定位的父 div 创建了这个元素。在内部,我有两个用作边框元素的 span 和一个包含文本的 p 元素。跨度是绝对定位的,因此它们不会影响 p 的位置,并且可以彼此叠加。最后,外部 div 是一个 table,内部 p 是一个 table 单元格,因此我可以轻松地将 p 的内容对齐到垂直和水平中心。
这是用普通的 CSS 完成的,因此它可以在片段中显示,但您也可以将其转换为 SASS。
div
{
display: table;
width: 400px;
height: 100px;
position: relative;
margin-left: 50px;
}
div span
{
display: block;
position: absolute;
width: 100%;
height: 100%;
box-sizing: border-box;
border: 2px solid black;
}
div span.left
{
transform: skew(30deg);
}
div span.right
{
transform: skew(-30deg);
}
div p
{
display: table-cell;
width: 100%;
height: 100%;
margin: 0;
padding: 0;
text-align: center;
vertical-align: middle;
}
<div>
<span class="left"></span>
<span class="right"></span>
<p>Lorem ipsum dolor sit amet.</p>
</div>
I thought about using a pseudo element
是的,你可以像这样使用伪元素:
.double-skew {
position: relative;
text-align: center;
padding: 2rem;
max-width: 80%;
margin: 0 auto;
}
.double-skew:before, .double-skew:after {
content: "";
position: absolute;
border: 1px solid black;
width: 100%;
height: 100%;
left: 0;
top: 0;
}
.double-skew:before {
transform: skew(30deg);
}
.double-skew:after {
transform: skew(-30deg);
}
<div class="double-skew">
Just wow!
</div>
我正在尝试在 css:
中实现这些带有文本的相对倾斜矩形第一个矩形围绕文本容器设置,文本以与矩形相反的方式倾斜。
HTML
<div class="col-lg-12 col-md-6">
<div class="container-fluid md">
<div class="rectangles rectangle-1">
<div class="text_container">
<?php if ($text) { ?> <div class="text WYSIWYG-styles"> <?= $text ?> </div> <?php } ?>
</div>
</div>
</div>
</div>
SCSS
display: block;
border: 1px solid $primary-color-2;
padding: 60px;
text-align: center;
&.rectangle-1 {
transform:skew(10deg, 10deg);
}
&.rectangle-2 {
transform: skew(-10deg, 10deg);
}
}
.text_container {
.text {
display: block;
transform: skew(-10deg, -10deg);
}
}
}
问题是让第二个矩形在同一平面上以相反的方式倾斜。我考虑过使用伪元素。我认为那行不通。显然,另一个内部 div 只会创建一个内部矩形。
这是我目前拥有的:
如有任何帮助,我们将不胜感激。
您实际上只需要倾斜变换中的第一个参数即可实现此效果。第二个参数将垂直倾斜它,如果您试图匹配您的规范图像,这不是您想要的。
我使用具有相对定位的父 div 创建了这个元素。在内部,我有两个用作边框元素的 span 和一个包含文本的 p 元素。跨度是绝对定位的,因此它们不会影响 p 的位置,并且可以彼此叠加。最后,外部 div 是一个 table,内部 p 是一个 table 单元格,因此我可以轻松地将 p 的内容对齐到垂直和水平中心。
这是用普通的 CSS 完成的,因此它可以在片段中显示,但您也可以将其转换为 SASS。
div
{
display: table;
width: 400px;
height: 100px;
position: relative;
margin-left: 50px;
}
div span
{
display: block;
position: absolute;
width: 100%;
height: 100%;
box-sizing: border-box;
border: 2px solid black;
}
div span.left
{
transform: skew(30deg);
}
div span.right
{
transform: skew(-30deg);
}
div p
{
display: table-cell;
width: 100%;
height: 100%;
margin: 0;
padding: 0;
text-align: center;
vertical-align: middle;
}
<div>
<span class="left"></span>
<span class="right"></span>
<p>Lorem ipsum dolor sit amet.</p>
</div>
I thought about using a pseudo element
是的,你可以像这样使用伪元素:
.double-skew {
position: relative;
text-align: center;
padding: 2rem;
max-width: 80%;
margin: 0 auto;
}
.double-skew:before, .double-skew:after {
content: "";
position: absolute;
border: 1px solid black;
width: 100%;
height: 100%;
left: 0;
top: 0;
}
.double-skew:before {
transform: skew(30deg);
}
.double-skew:after {
transform: skew(-30deg);
}
<div class="double-skew">
Just wow!
</div>