【问题标题】:Slant the top of a div using css without skewing text使用 css 倾斜 div 的顶部而不倾斜文本
【发布时间】:2012-11-15 12:11:26
【问题描述】:

我正在尝试使用 CSS 创建一个仅在顶部倾斜并且不会倾斜其中的文本的 div。 我希望它是纯 CSS 的原因是因为它是一种响应式设计并且需要响应百分比,因为该 div 的其余部分会随着设备宽度的变化而弯曲。

我正在努力完成的照片在这里:

到目前为止,我所做的是创建一个倾斜的 div 并将其放置在另一个 div 中,然后使用负边距将其向上拉。我这样做有两个问题。第一个问题是,在最小的屏幕收缩(使您的浏览器宽度非常小)上,倾斜的 div 变得比包含的 div 小,使它看起来很奇怪。此外,这个 div 覆盖了我在它之后添加的任何文本。

标记:

<aside>
                <div id="skew"></div><!-- #skew -->
                <h3 id="refer">Refer Your Friends</h3>
</aside>

CSS:

   #skew {
background:#00328b;
width:103%;
height:66px;
border-radius:8px;
margin-top:-47px;
margin-left:-1.2%;
  -webkit-transform: skewY(-5.5deg); 
 -moz-transform: skewY(-5.5deg); 
  -ms-transform: skewY(-5.5deg); 
   -o-transform: skewY(-5.5deg); 
      transform: skewY(-5.5deg); 
}

.main aside {
color: white;
padding: 20px 10px;
margin-top:120px;
border-radius:8px;
background: rgb(0,51,141); /* Old browsers */
}

我尝试过在父级上使用倾斜,但这会倾斜其中的所有子元素。如果这是一个固定的布局,我会使用绝对定位来帮助我,但由于它是响应式和可弯曲的,我不知道该采取什么其他方法。

我也希望它出现在 CSS 中,因为我还有其他效果要添加到 div,例如使用 box-shadow 的外发光和背景渐变。

我也无法更改设计。

任何关于如何实现这一点的意见都会很棒!

【问题讨论】:

    标签: html css responsive-design transform css-shapes


    【解决方案1】:

    一个方向倾斜盒子,另一个方向倾斜它的内容:

    <aside class="skew-neg">
        <div class="skew-pos">
            <p>Hello World.</p>
            <p>@jonathansampson.</p>
            <p>This box is skewed.</p>
            <p>In supported browsers.</p>
        </div>
    </aside>
    
    /* Skew the container one way */
    .skew-neg {
        -webkit-transform: skewY(-5deg);
        -moz-transform: skewY(-5deg);
        -ms-transform: skewY(-5deg);
        -o-transform: skewY(-5deg);
        transform: skewY(-5deg);
    }
    
    /* And the child another way */
    .skew-pos {
        -webkit-transform: skewY(5deg);
        -moz-transform: skewY(5deg);
        -ms-transform: skewY(5deg);
        -o-transform: skewY(5deg);
        transform: skewY(5deg);
    }
    

    这会导致类似于以下内容:

    演示:http://jsfiddle.net/Q7dKT/191/

    【讨论】:

    • 这是一个很好的简单解决方案......但是,当我添加其他元素(我必须这样做)时,还有更多问题。将此添加到您的 jsfiddle 中,看看我的意思:&lt;aside class="skew-neg"&gt; &lt;p&gt;Hello World.&lt;/p&gt; &lt;p&gt;@jonathansampson.&lt;/p&gt; &lt;p&gt;This box is skewed.&lt;/p&gt; &lt;p&gt;In supported browsers.&lt;/p&gt; &lt;div id="formWrapper"&gt; &lt;form&gt; &lt;input type="text" value="Name" /&gt; &lt;/form&gt; &lt;hr /&gt; &lt;/div&gt; &lt;/aside&gt;
    • @yurtdweller 好点。将第二个选择器更改为仅调整直接子级:.skew-neg &gt; *.
    • 完美!这很适合我的需求。感谢您的专业知识!
    • @JonathanSampson 如果是 li & span 这个技巧不起作用here
    • here得到解决方案
    猜你喜欢
    • 1970-01-01
    • 2023-03-19
    • 2016-12-25
    • 2016-12-23
    • 2020-09-21
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    • 2022-12-13
    相关资源
    最近更新 更多