具有固定角度的对角线与css中的曲线

时间:2016-11-17 12:41:16

标签: html css

你如何绘制一条对角线,它总是有一个11°的角度,每端有固定的圆角。它将用作图像的叠加层,例如以下示例:

enter image description here

灰色区域应位于顶部,蓝色应为图像。

理想情况下,可以通过纯CSS或数据:image / svg + xml作为背景图像。

也许类似于在图像顶部使用::after选择器。或者甚至可能会添加到内容div上的::before选择器。例如类似于:

<div class="card">
  <div class="header">
    <img src="#" />
  </div>
  <div class="content">
   <h1>Title</h1>
   <p>Body copy</p>
  </div>
</div>

<style>
  .content:before {
    content: '';
    display: block;
    width: 100%;
  }
</style>

2 个答案:

答案 0 :(得分:4)

您可以部署::before::after伪元素。

每个伪元素使用以下组合:

  • absolute positioning
  • border
  • border-radius
  • box-shadow
  • transform: skewY

&#13;
&#13;
div {
display:inline-block;
position: relative;
width: 256px;
height: 140px;
margin-right:32px;
background: url('/my-image.jpg') no-repeat rgb(15,150,196);
overflow: hidden;
}

div::before, div::after {
content: '';
position: absolute;
left: 0;
display: block;
width: calc(100% - 12px);
height: 100%;
border-width: 3px 6px;
border-style: solid;
border-color: rgb(178,178,178);
border-radius: 9px;
box-shadow: 36px -36px 0 36px rgb(178,178,178), -2px 2px 0 2px rgb(178,178,178);
transform: skewY(11deg);
}

div::before {
bottom: 50%;
}


div::after {
top: 50%;
box-shadow: -36px 36px 0 36px rgb(178,178,178), 2px -2px 0 2px rgb(178,178,178);
}

.with-image {
background: url('https://images.pexels.com/photos/115045/pexels-photo-115045.jpeg?w=940&h=650&auto=compress&cs=tinysrgb') no-repeat 0 0 / 256px 140px rgb(15,150,196);
}

.with-image::before, .with-image::after {
border-color: rgb(0,127,0);
box-shadow: 36px -36px 0 36px rgb(0,127,0), -2px 2px 0 2px rgb(0,127,0);
}

.with-image::after {
box-shadow: -36px 36px 0 36px rgb(0,127,0), 2px -2px 0 2px rgb(0,127,0);
}
&#13;
<div></div>
<div class="with-image"></div>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

我认为此代码可以帮助您达到您想要做的事情。

&#13;
&#13;
.container{
  width:300px; 
  margin-top:30px;
}
.imagecontainer{
  width:100%; 
  height:200px;
  background:blue;
  transform: skew(0deg, 11deg);
  border-radius:10px;
  margin-bottom:4px;
}
&#13;
<div class="container">
  <div class="imagecontainer"></div>
  <div class="imagecontainer"></div>
  <div class="imagecontainer"></div>
</div>
&#13;
&#13;
&#13;