响应对齐倾斜的Div

Meg*_*Meg 8 html css

使用这种技术的修改版本,我已经设法为我正在研究的网站制作倾斜的,响应式的div.我divs遇到的问题是有3个倾斜在一起,它们意味着在页面上创建一条对角线(因此每个倾斜的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%;
}
Run Code Online (Sandbox Code Playgroud)
<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>	
Run Code Online (Sandbox Code Playgroud)

的jsfiddle

And*_*Tet 4

如果您只使用基于百分比的内容 div 宽度和静态宽度倾斜,您将无法仅使用 CSS 来完成此操作。

想象一下,假设页面的宽度为 10,每个倾斜的宽度为 1。您有 3 个 div,分别为 10%、20% 和 30%,这意味着它们的宽度为 1,2,和 3 分别。添加倾斜度使它们的宽度分别为 2、3 和 4,因此它们对齐。现在,当我们将容器宽度设置为 20 时,问题就出现了,因此添加倾斜后,div 现在为 4、6 和 8,或者 5、7 和 9。它们不再对齐,因为 div 宽度发生了变化,但倾斜度没有变化。

如果您不支持 IE8,您可以使用 calc ( http://caniuse.com/#feat=calc ) 和 min-width 的组合来实现您想要的效果。倾斜的长度为 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;
}
Run Code Online (Sandbox Code Playgroud)