带边角的两条线
Two lines with edge corners
我需要一些帮助。我想用边角做两条线,但我遇到了问题。最终结果将是这样的:
Final result
我做了一些草稿,我认为我的方法是正确的。
HTML:
<div class="left"></div>
<div class="right"></div>
CSS:
.left {
width: 48%;
padding-top: 2rem;
position: absolute;
right: -100%;
float: left;
left:0;
transform: skewX(25deg);
border-top: 0.2rem solid;
border-right: 0.2rem solid;
}
.right {
width: 50%;
padding-top: 2rem;
float: right;
position: relative;
right:0;
border-top: 0.2rem solid;
border-left: 0.2rem solid;
transform: skewX(-25deg);
}
您可以在 codepen.io 上看到相同的代码。关注link
我认为它不在中心。
您需要为 .left
和 .right
元素指定 transform-origin
,将它们的宽度更改为小于 50%(边框宽度的一半)。
transform-origin
属性 指定了发生变换的点或轴。这里 .left
元素应该倾斜,使其右下角保持固定,.right
元素应该倾斜,使其左下角保持固定。因此,我们将这些值赋予 transform-origin
属性.
对于width
,当我们给50%
作为值,然后再给它加上一个border
,元素的实际宽度就变成了50%以上(变为50 % + 0.2rem) 因为边框通常不是元素宽度的一部分。您可以通过修改元素的 box-sizing
属性 或减少 width
来更改此设置。在这里,我们只将其减少边框宽度的一半,因为边框应该重叠。
.left {
width: calc(50% - 0.1rem); /* change this */
/* other properties from your code */
transform: skewX(25deg);
transform-origin: bottom right; /* add this */
}
.right {
width: calc(50% - 0.1rem); /* change this */
/* other properties from your code */
transform-origin: bottom left; /* add this */
transform: skewX(-25deg);
}
body {
font-family: "Open Sans";
font-size: 1.125rem;
line-height: 1.618em;
color: #454545;
}
.left {
width: calc(50% - 0.1rem);
padding-top: 2rem;
position: absolute;
right: -100%;
float: left;
left:0;
transform: skewX(25deg);
transform-origin: bottom right;
border-top: 0.2rem solid;
border-right: 0.2rem solid;
}
.right {
width: calc(50% - 0.1rem);
padding-top: 2rem;
float: right;
position: relative;
right:0;
border-top: 0.2rem solid;
border-left: 0.2rem solid;
transform: skewX(-25deg);
transform-origin: bottom left;
}
<div class="wrapper">
<div class="left"></div>
<div class="right"></div>
</div>
下面是一个稍微调整的版本,它产生相同的输出。以下是已完成的调整:
- 从两个元素中删除了浮点数,因为它们不是必需的。
- 为包装器添加相对位置并相对于它绝对定位子元素。
- 在父项上添加了
overflow: hidden
以防止出现水平滚动条。
- 取消
body
的左右边距以确保线条从一端延伸到另一端。
body {
font-family: "Open Sans";
font-size: 1.125rem;
line-height: 1.618em;
color: #454545;
margin-left: 0;
margin-right: 0;
}
.wrapper{
position: relative;
width: 100%;
height: 2rem;
overflow: hidden;
}
.left {
position: absolute;
left:0;
width: 50%;
height: 100%;
border-top: 0.2rem solid;
border-right: 0.2rem solid;
transform: skewX(25deg);
transform-origin: bottom right;
}
.right {
position: absolute;
right:0;
width: 50%;
height: 100%;
border-top: 0.2rem solid;
border-left: 0.2rem solid;
transform: skewX(-25deg);
transform-origin: bottom left;
}
<div class="wrapper">
<div class="left"></div>
<div class="right"></div>
</div>
试试这个:
.left {
width: 48.5%;
padding-bottom: 5rem;
position: absolute;
right: -100%;
float: left;
left:0;
transform: skewX(25deg);
border-top: 0.2rem solid;
border-right: 0.2rem solid;
}
.right {
width: 48.5%;
padding-bottom: 5rem;
float: right;
position: relative;
right:0;
border-top: 0.2rem solid;
border-left: 0.2rem solid;
transform: skewX(-25deg);
}
我需要一些帮助。我想用边角做两条线,但我遇到了问题。最终结果将是这样的:
Final result
我做了一些草稿,我认为我的方法是正确的。
HTML:
<div class="left"></div>
<div class="right"></div>
CSS:
.left {
width: 48%;
padding-top: 2rem;
position: absolute;
right: -100%;
float: left;
left:0;
transform: skewX(25deg);
border-top: 0.2rem solid;
border-right: 0.2rem solid;
}
.right {
width: 50%;
padding-top: 2rem;
float: right;
position: relative;
right:0;
border-top: 0.2rem solid;
border-left: 0.2rem solid;
transform: skewX(-25deg);
}
您可以在 codepen.io 上看到相同的代码。关注link
我认为它不在中心。
您需要为 .left
和 .right
元素指定 transform-origin
,将它们的宽度更改为小于 50%(边框宽度的一半)。
transform-origin
属性 指定了发生变换的点或轴。这里 .left
元素应该倾斜,使其右下角保持固定,.right
元素应该倾斜,使其左下角保持固定。因此,我们将这些值赋予 transform-origin
属性.
对于width
,当我们给50%
作为值,然后再给它加上一个border
,元素的实际宽度就变成了50%以上(变为50 % + 0.2rem) 因为边框通常不是元素宽度的一部分。您可以通过修改元素的 box-sizing
属性 或减少 width
来更改此设置。在这里,我们只将其减少边框宽度的一半,因为边框应该重叠。
.left {
width: calc(50% - 0.1rem); /* change this */
/* other properties from your code */
transform: skewX(25deg);
transform-origin: bottom right; /* add this */
}
.right {
width: calc(50% - 0.1rem); /* change this */
/* other properties from your code */
transform-origin: bottom left; /* add this */
transform: skewX(-25deg);
}
body {
font-family: "Open Sans";
font-size: 1.125rem;
line-height: 1.618em;
color: #454545;
}
.left {
width: calc(50% - 0.1rem);
padding-top: 2rem;
position: absolute;
right: -100%;
float: left;
left:0;
transform: skewX(25deg);
transform-origin: bottom right;
border-top: 0.2rem solid;
border-right: 0.2rem solid;
}
.right {
width: calc(50% - 0.1rem);
padding-top: 2rem;
float: right;
position: relative;
right:0;
border-top: 0.2rem solid;
border-left: 0.2rem solid;
transform: skewX(-25deg);
transform-origin: bottom left;
}
<div class="wrapper">
<div class="left"></div>
<div class="right"></div>
</div>
下面是一个稍微调整的版本,它产生相同的输出。以下是已完成的调整:
- 从两个元素中删除了浮点数,因为它们不是必需的。
- 为包装器添加相对位置并相对于它绝对定位子元素。
- 在父项上添加了
overflow: hidden
以防止出现水平滚动条。 - 取消
body
的左右边距以确保线条从一端延伸到另一端。
body {
font-family: "Open Sans";
font-size: 1.125rem;
line-height: 1.618em;
color: #454545;
margin-left: 0;
margin-right: 0;
}
.wrapper{
position: relative;
width: 100%;
height: 2rem;
overflow: hidden;
}
.left {
position: absolute;
left:0;
width: 50%;
height: 100%;
border-top: 0.2rem solid;
border-right: 0.2rem solid;
transform: skewX(25deg);
transform-origin: bottom right;
}
.right {
position: absolute;
right:0;
width: 50%;
height: 100%;
border-top: 0.2rem solid;
border-left: 0.2rem solid;
transform: skewX(-25deg);
transform-origin: bottom left;
}
<div class="wrapper">
<div class="left"></div>
<div class="right"></div>
</div>
试试这个:
.left {
width: 48.5%;
padding-bottom: 5rem;
position: absolute;
right: -100%;
float: left;
left:0;
transform: skewX(25deg);
border-top: 0.2rem solid;
border-right: 0.2rem solid;
}
.right {
width: 48.5%;
padding-bottom: 5rem;
float: right;
position: relative;
right:0;
border-top: 0.2rem solid;
border-left: 0.2rem solid;
transform: skewX(-25deg);
}