使用 this 的修改版本技术,我已经设法为我正在处理的网站制作倾斜的响应式 div。我遇到的问题是有 3 个倾斜的 div
在彼此之上,它们旨在在页面下方创建一条对 Angular 线(因此每个倾斜的 div 需要与那些倾斜的 div 正确对齐周围)。到目前为止,对这些 div 使用百分比宽度还没有奏效,但我不确定还能尝试什么。
对此的一个好的解决方案是响应式的并且 [最好] 仅使用 css。
*{
margin: 0;
padding:0;
}
.hero{
width: 100%;
position: relative;
border: 1px solid black;
background-color: green;
}
.slanted{
position: relative;
background-color: purple;
width: 40%;
padding: 3em 0 3em 1em;
}
.slanted:after{
content: '';
background-color: purple;
position: absolute;
top: 0;
bottom: 0;
right: -6em;
width: 20em;
overflow: visible;
z-index: 1;
-webkit-transform: skewX(-13deg);
-moz-transform: skewX(-13deg);
-ms-transform: skewX(-13deg);
-o-transform: skewX(-13deg);
transform: skewX(-13deg);
}
.slanted h2{
position: relative;
z-index:3;
}
.hero1 .slanted{
width: 30%;
}
.hero2 .slanted{
width: 20%;
}
.hero3 .slanted{
width: 10%;
}
<div class="hero hero1">
<div class="slanted">
<h2>Some text</h2>
</div>
</div>
<div class="hero hero2">
<div class="slanted hero-text">
<h2>Some text</h2>
</div>
</div>
<div class="hero hero3">
<div class="slanted hero-text">
<h2>Some text</h2>
</div>
</div>
最佳答案
如果您对内容 div 使用仅基于百分比的宽度,对倾斜使用静态宽度,则您将无法仅使用 CSS 来完成此操作。
想象一下,假设您的页面宽度为 10,每个倾斜的宽度为 1。您有 3 个 10%、20% 和 30% 的 div,这意味着它们的宽度为 1 ,2 和 3 分别。添加倾斜使它们的宽度为 2、3 和 4,因此它们排成一行。现在,当我们将容器宽度设置为 20 时,问题就来了,所以在添加倾斜后,div 现在是 4、6 和 8,或者 5、7 和 9。它们不再对齐,因为 div 宽度发生了变化,但倾斜度没有变化。
如果您不介意不支持 IE8,则可以结合使用 calc ( http://caniuse.com/#feat=calc ) 和最小宽度来实现您想要的效果。倾斜长度为 29px,因此如果将 div 宽度更改为 calc(100% -700px)、calc(100% -729px) 和 calc(100% -758px) 或任何一组三个像素宽度,只要它们保持 29px分开然后设置一个最小宽度也是 29px 分开,你应该能够实现你想要的东西。
编辑: Codepen 示例 http://codepen.io/supah_frank/pen/oJcIA
只需更改此 CSS
.hero1 .slanted{
width: calc(100% - 900px);
min-width: 358px;
}
.hero2 .slanted{
width: calc(100% - 929px);
min-width: 329px;
}
.hero3 .slanted{
width: calc(100% - 958px);
min-width: 300px;
}
关于html - 响应式对齐倾斜的 Div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26763010/