标题中多条线的边缘偏斜



我遇到了一个小CSS问题。我正在尝试获得标题偏斜的边缘,该标题也适用于多行(请参阅添加的屏幕(。重要的是:偏斜的边缘应出现在每一行上。

我已经尝试了遵循100%行不通的解决方案:

  • :after, :before元素作为三角形或平行四边形(https://css-tricks.com/examples/shapesofcss/(

.element {
    background: red;
    line-height: 30px;
    width: 100px;
    margin-right: 50px;
    position: relative;
    display: inline-block;
    clear: both;
}
.element:after {
        background: #f00;
        content: "";
        display: block;
        height: 100%;
        transform: skew(-20deg);
        position: absolute;
        right: -5px;
        top: 0;
        width: 30px;
}
<div class="element">Headline 1</div>
<div class="element">Headline 2 veeery long</div>

->对多行不起作用,因为它需要符合右上角的左下角

  • 具有偏斜的边缘 ->不起作用,可以使其在没有伪元素的情况下偏边。像上面的同样问题。

您能帮我解决这个问题吗?

这应该与显示内联用:

body {
  background: black;
}
div {
  max-width: 300px;
}
h1 {
  line-height: 46px;
  color: #fff;
  background-image: linear-gradient(110deg, transparent 50%, red 53%), linear-gradient(110deg, red 50%, transparent 53%), linear-gradient(to left, red, red);
  background-size: 16px 100%, 16px 100%, calc(100% - 32px) 100%;
  background-position: left, right, center;
  background-repeat: no-repeat;
  display: inline;
  padding: 0 16px;
  -webkit-box-decoration-break: clone;
          box-decoration-break: clone;
}
<div><h1>Some dynamic text on several lines with no special meaning...</h1></div>

目前没有边缘支持,因为"盒子 - 决策破裂"不受支持(尚未?(。

希望这对您有所帮助。这里只是将线性梯度应用于元素之前和之后,并将它们放置在绝对的位置。其高度将根据相对Div的高度

的高度增加

如果您想增加弯曲区域,则只需根据给定宽度的量更新宽度并将其放置在左右。如示例。

.element {
    line-height: 30px;
    width: 100px;
    margin-right: 50px;
    position: relative;
    display: inline-block;
    clear: both;
    psdding: 10px;
    background: #f00;
    padding: 10px;
}
.element:after, .element:before {
     
        content: "";
        width: 10px;
        position:absolute;
        height: 100%;
        
        
}
.element:before {
 top: 0px; background: linear-gradient(to top left, #ff0000 50%, transparent 50%);
 left: -10px;
}
.element:after {
 top: 0px; background: linear-gradient(to bottom right, #ff0000 50%, transparent 50%);
 right: -10px;
}
<div class="element">Headline 1</div>
<div class="element">Headline 2 veeery long</div>

查看提供的链接,
根据我的说法,这是最好的答案...(希望如此(
像我在以下代码段中一样增加元素宽度,

    width: 200px;

将在您想要的样品的方式上正常工作

在全屏中查看Code snippet

.element {
    background: red;
    line-height: 30px;
    padding : 10px ;
    width: 200px;
    position: relative;
    display: inline-block;
    clear: both;
}
.element:after {
        background: #f00;
        content: "";
        display: block;
        height: 100%;
        transform: skew(-10deg);
        position: absolute;
        right: -5px;
        top: 0;
        width: 50px;
}
.element:before {
        background: #f00;
        content: "";
        display: block;
        height: 100%;
        transform: skew(-10deg);
        position: absolute;
        left: -5px;
        top: 0;
        width: 10px;
}
<div class="element">Headline 1</div>
<div class="element">Headline 2 veeery long</div>
<div class="element">Headline</div>
<div class="element">Another Headline</div>

您可以使用多个背景并依靠重复:

.element {
  background: red;
  margin:10px;
  line-height: 30px;
  width: 100px;
  padding:0 30px;
  display: inline-block;
  position:relative;
  background:
  linear-gradient(to bottom right,red 50%,transparent 0)100% 0/30px 30px repeat-y,
  linear-gradient(to top left,red 50%,transparent 0)0 0/30px 30px repeat-y,
  linear-gradient(red,red)30px 0/calc(100% - 60px) 100% no-repeat;
}
<div class="element">Headline 1</div>
<div class="element">Headline 2 veeery long</div>
<div class="element">Headline 2 veeery long veeery long veeery long</div>

相关内容

  • 没有找到相关文章

最新更新