创建具有重复背景图像的响应式三角形
Creating a responsive triangle with repeating background image
我正在尝试为网站创建一个三角形,该三角形始终保持 100% 的宽度,并且具有重复背景并覆盖动态背景。很高兴使用任何方法,到目前为止已经尝试使用带有模式的 SVG,但没有成功。
也尝试过使用 borderimage 设置边框,但还是没有成功。
我应该提到这将叠加一个图像,所以三角形的一半是矩形使用重复图像,另一半需要是透明的。
有没有人知道如何做到这一点,或者过去有过这样的经历?
编辑
示例:
这些是 3px x 3px 方块中的 1px x 2px 黑线。
您可以使用隐藏溢出的旋转容器。
这将允许您在其他图像、渐变或任何其他非纯背景上显示这些图像:
.wrap {
transform-origin:0 100%;
transform:rotate(-3deg);
overflow:hidden;
width:100%;
padding-right:5%;
}
.images {
transform-origin:inherit;
transform:rotate(3deg);
overflow:hidden;
-webkit-backface-visibility:hidden; /** <-- to prevent diagonal line aliasing in chrome **/
}
img {
float:left;
width:24%;
margin:0 .5%;
}
/** FOR THE DEMO **/
body{background:url('https://farm7.staticflickr.com/6139/5986939269_10721b8017.jpg');background-size:cover;overflow-x:hidden;}
<div class="wrap">
<div class="images">
<img src="http://lorempixel.com/output/people-q-c-300-200-9.jpg" alt="" />
<img src="http://lorempixel.com/output/people-q-c-300-200-3.jpg" alt="" />
<img src="http://lorempixel.com/output/people-q-c-300-200-6.jpg" alt="" />
<img src="http://lorempixel.com/output/people-q-c-300-200-1.jpg" alt=""/>
</div>
</div>
您可以为此使用伪元素来重叠您的图像:
html,
body {
margin: 0;
padding: 0;
}
div {
width: 100vw;
background: rgba(0, 0, 0, 0.4);
height: 300px;
position: relative;
overflow: hidden;
display: inline-block;
}
div:after {
content: "";
position: absolute;
width: 150vw;
height: 40vw;
bottom: -30vw;
left: -25vw;
background: #222;
-webkit-transform: rotate(-5deg);
transform: rotate(-5deg);
}
<div>
<img src="http://placekitten.com/g/200/300" alt="" />
<img src="http://placekitten.com/g/200/300" alt="" />
<img src="http://placekitten.com/g/200/300" alt="" />
</div>
您可以使用可以接收背景图像的伪元素来执行此操作。
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
.wrapper {
position: relative;
width: 80%;
margin: 25px auto;
padding: .25em;
border: 1px solid grey;
overflow: hidden;
/* quick clearfix */
}
.wrapper::after {
position: absolute;
content: "";
width: 150%;
height: 50%;
background-color: rgba(255, 0, 0, 0.5);
bottom: 0;
right: 0;
transform: rotate(-5deg);
transform-origin: top right;
}
.wrapper img {
max-width: 25%;
height: auto;
float: left;
}
<div class="wrapper">
<img src="http://lorempixel.com/output/nature-q-c-200-200-3.jpg" alt="" />
<img src="http://lorempixel.com/output/nature-q-c-200-200-3.jpg" alt="" />
<img src="http://lorempixel.com/output/nature-q-c-200-200-3.jpg" alt="" />
<img src="http://lorempixel.com/output/nature-q-c-200-200-3.jpg" alt="" />
</div>
我正在尝试为网站创建一个三角形,该三角形始终保持 100% 的宽度,并且具有重复背景并覆盖动态背景。很高兴使用任何方法,到目前为止已经尝试使用带有模式的 SVG,但没有成功。
也尝试过使用 borderimage 设置边框,但还是没有成功。
我应该提到这将叠加一个图像,所以三角形的一半是矩形使用重复图像,另一半需要是透明的。
有没有人知道如何做到这一点,或者过去有过这样的经历?
编辑
示例:
这些是 3px x 3px 方块中的 1px x 2px 黑线。
您可以使用隐藏溢出的旋转容器。
这将允许您在其他图像、渐变或任何其他非纯背景上显示这些图像:
.wrap {
transform-origin:0 100%;
transform:rotate(-3deg);
overflow:hidden;
width:100%;
padding-right:5%;
}
.images {
transform-origin:inherit;
transform:rotate(3deg);
overflow:hidden;
-webkit-backface-visibility:hidden; /** <-- to prevent diagonal line aliasing in chrome **/
}
img {
float:left;
width:24%;
margin:0 .5%;
}
/** FOR THE DEMO **/
body{background:url('https://farm7.staticflickr.com/6139/5986939269_10721b8017.jpg');background-size:cover;overflow-x:hidden;}
<div class="wrap">
<div class="images">
<img src="http://lorempixel.com/output/people-q-c-300-200-9.jpg" alt="" />
<img src="http://lorempixel.com/output/people-q-c-300-200-3.jpg" alt="" />
<img src="http://lorempixel.com/output/people-q-c-300-200-6.jpg" alt="" />
<img src="http://lorempixel.com/output/people-q-c-300-200-1.jpg" alt=""/>
</div>
</div>
您可以为此使用伪元素来重叠您的图像:
html,
body {
margin: 0;
padding: 0;
}
div {
width: 100vw;
background: rgba(0, 0, 0, 0.4);
height: 300px;
position: relative;
overflow: hidden;
display: inline-block;
}
div:after {
content: "";
position: absolute;
width: 150vw;
height: 40vw;
bottom: -30vw;
left: -25vw;
background: #222;
-webkit-transform: rotate(-5deg);
transform: rotate(-5deg);
}
<div>
<img src="http://placekitten.com/g/200/300" alt="" />
<img src="http://placekitten.com/g/200/300" alt="" />
<img src="http://placekitten.com/g/200/300" alt="" />
</div>
您可以使用可以接收背景图像的伪元素来执行此操作。
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
.wrapper {
position: relative;
width: 80%;
margin: 25px auto;
padding: .25em;
border: 1px solid grey;
overflow: hidden;
/* quick clearfix */
}
.wrapper::after {
position: absolute;
content: "";
width: 150%;
height: 50%;
background-color: rgba(255, 0, 0, 0.5);
bottom: 0;
right: 0;
transform: rotate(-5deg);
transform-origin: top right;
}
.wrapper img {
max-width: 25%;
height: auto;
float: left;
}
<div class="wrapper">
<img src="http://lorempixel.com/output/nature-q-c-200-200-3.jpg" alt="" />
<img src="http://lorempixel.com/output/nature-q-c-200-200-3.jpg" alt="" />
<img src="http://lorempixel.com/output/nature-q-c-200-200-3.jpg" alt="" />
<img src="http://lorempixel.com/output/nature-q-c-200-200-3.jpg" alt="" />
</div>