两条带边角的线

佩德罗·拉莫斯(Pedro Ramos)

我需要一些帮助。我想用边角画两条线,但是有问题。最终结果将如下所示:

最后结果

在此处输入图片说明

我做了一些草稿,我认为我做对了。

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上看到相同的代码。跟随链接

我认为它不在中心。

哈里

您需要指定transform-origin为两个.left.right元素,改变其宽度小于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>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章