在内联行中倾斜图像 column/div
Skew an image column/div in an inline row
有一些关于如何倾斜 div 的单面的答案,既有空的也有图像的:
CSS3 Transform Skew One Side
但是使用这些答案,我无法弄清楚我的问题的其余部分。
我正在尝试创建一个 2 列的行,第二列的图像背景和左侧倾斜或成角度。我遇到的问题是在 space 倾斜后用容器填充它们。
我使用 Foundation 6 作为我网站背后的主要框架。
我已附上完成后的效果图
到目前为止我得到的最接近的是:
我已经在下面发布了我目前拥有的代码。
Codepen
HTML:
<section class="lan_primary">
<div class="container-full">
<div class="row wide">
<div class="columns small-12 medium-6 lan_primary--select">
CONTENT LEFT
</div>
<div class="columns small-12 medium-6 lan_primary--img">
CONTENT
</div>
</div>
</div>
</section>
CSS:
div {
border: 1px red solid;
}
.lan_primary {
width: 100%;
height: 80vh;
margin-top: 10vh;
overflow: hidden;
.row {
flex-flow: row !important;
overflow: hidden;
}
&--select,
&--img {
padding: 100px 0;
overflow: hidden;
position: relative;
}
&--select {
background-color: aqua;
}
&--img {
background-color: blue;
transform-origin: top left;
transform: skew(-20deg);
//margin-left: 80px;
}
}
更新 - 来自第一个答案
添加一个伪元素来解决导致高度可变的问题。如果我设置 100vh
,它会给出与设置 height: 700x;
不同的结果。
见下图:
你可以利用伪元素使外观偏向一侧
CSS(SCSS)
div {
border: 1px red solid;
}
.lan_primary {
width: 100%;
height: 80vh;
margin-top: 10vh;
overflow: hidden;
.row {
flex-flow: row !important;
overflow: hidden;
}
&--select,
&--img {
padding: 100px 0;
overflow: hidden;
position: relative;
}
&--select {
background-color: aqua;
position: relative;
overflow:visible;
&::after{
content:"";
position: absolute;
z-index:1;
top:0;
bottom:0;
height:100%;
width:20%;
background-color: cyan;
right:-40px;
transform:skew(-20deg);
}
}
&--img {
background-color: blue;
transform-origin: top left;
//margin-left: 80px;
}
}
希望这对您有所帮助
使用 三角形边框 伪装技巧。使用视口单位,它将随高度缩放
为了使 倾斜 居中,我将 right
的尺寸调整为 25px(倾斜的一半
区域)比左边宽。
html, body {
margin: 0;
}
.wrapper {
display: flex;
}
.left, .right {
height: 100vh;
}
.left {
flex-basis: calc(50% - 25px);
position: relative;
background: lightgray;
display: flex;
align-items: center;
}
.left::after {
content: '';
position: absolute;
top: 0;
left: 100%;
height: 0;
width: 0;
border-top: 100vh solid lightgray;
border-right: 50px solid transparent;
}
.right {
flex-basis: calc(50% + 25px);
background: url(http://lorempixel.com/500/500/people/10/) left center no-repeat;
background-size: cover;
}
<div class="wrapper">
<div class="left">
<h1>Some text</h1>
</div>
<div class="right"></div>
</div>
有一些关于如何倾斜 div 的单面的答案,既有空的也有图像的:
CSS3 Transform Skew One Side
但是使用这些答案,我无法弄清楚我的问题的其余部分。 我正在尝试创建一个 2 列的行,第二列的图像背景和左侧倾斜或成角度。我遇到的问题是在 space 倾斜后用容器填充它们。
我使用 Foundation 6 作为我网站背后的主要框架。
我已附上完成后的效果图
到目前为止我得到的最接近的是:
我已经在下面发布了我目前拥有的代码。 Codepen
HTML:
<section class="lan_primary">
<div class="container-full">
<div class="row wide">
<div class="columns small-12 medium-6 lan_primary--select">
CONTENT LEFT
</div>
<div class="columns small-12 medium-6 lan_primary--img">
CONTENT
</div>
</div>
</div>
</section>
CSS:
div {
border: 1px red solid;
}
.lan_primary {
width: 100%;
height: 80vh;
margin-top: 10vh;
overflow: hidden;
.row {
flex-flow: row !important;
overflow: hidden;
}
&--select,
&--img {
padding: 100px 0;
overflow: hidden;
position: relative;
}
&--select {
background-color: aqua;
}
&--img {
background-color: blue;
transform-origin: top left;
transform: skew(-20deg);
//margin-left: 80px;
}
}
更新 - 来自第一个答案
添加一个伪元素来解决导致高度可变的问题。如果我设置 100vh
,它会给出与设置 height: 700x;
不同的结果。
见下图:
你可以利用伪元素使外观偏向一侧
CSS(SCSS)
div {
border: 1px red solid;
}
.lan_primary {
width: 100%;
height: 80vh;
margin-top: 10vh;
overflow: hidden;
.row {
flex-flow: row !important;
overflow: hidden;
}
&--select,
&--img {
padding: 100px 0;
overflow: hidden;
position: relative;
}
&--select {
background-color: aqua;
position: relative;
overflow:visible;
&::after{
content:"";
position: absolute;
z-index:1;
top:0;
bottom:0;
height:100%;
width:20%;
background-color: cyan;
right:-40px;
transform:skew(-20deg);
}
}
&--img {
background-color: blue;
transform-origin: top left;
//margin-left: 80px;
}
}
希望这对您有所帮助
使用 三角形边框 伪装技巧。使用视口单位,它将随高度缩放
为了使 倾斜 居中,我将 right
的尺寸调整为 25px(倾斜的一半
区域)比左边宽。
html, body {
margin: 0;
}
.wrapper {
display: flex;
}
.left, .right {
height: 100vh;
}
.left {
flex-basis: calc(50% - 25px);
position: relative;
background: lightgray;
display: flex;
align-items: center;
}
.left::after {
content: '';
position: absolute;
top: 0;
left: 100%;
height: 0;
width: 0;
border-top: 100vh solid lightgray;
border-right: 50px solid transparent;
}
.right {
flex-basis: calc(50% + 25px);
background: url(http://lorempixel.com/500/500/people/10/) left center no-repeat;
background-size: cover;
}
<div class="wrapper">
<div class="left">
<h1>Some text</h1>
</div>
<div class="right"></div>
</div>