使边框高度相对于父高度

时间:2010-12-17 19:35:41

标签: css border

这是一个适合你的脑筋急转弯。我正在使用CSS制作一个带有“飞出”的横幅(注意基线高度是1.5em):

.banner {
background-color:red;
color:white;
padding:1.5em 0;
position:relative;
}

.bannerLeft,
.bannerRight {
border-style:solid;
border-width:2.25em 20px;
height:0;
position:absolute;
width:0;
}
.bannerLeft { top:6px; left:-40px; border-color:red red red white; }
.bannerRight { top:6px; right:-40px; border-color:red white red red; }

HTML

<div class="banner">Check out this content!<span class="bannerLeft"></span><span class="bannerRight"></span></div>

用这些三角形切割襟翼制作一个性感的小横幅。麻烦的是,如果换行并且高度增加,则左右襟翼的大小相同。任何想法如何没有JS实现这一点?我想坚持使用边框解决方案,因此我可以控制颜色(红色是前景,白色是背景)。

我能想到的唯一其他解决方案是使用背景颜色(红色),背景图像为白色三角形,高度为100%。如果我正确设置位置,它会给出我想的相同外观,但需要2张PNG / GIF图像。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这个怎么样?

http://jsfiddle.net/suu4N/

它解决了第一个换行问题(在布局再次中断之前最多支持2行)。至少是更灵活一点。您可以调整top div等的bannerContent css属性

CSS:

body
{
    padding:40px;
}
.banner {
    background-color:red;
    color:white;
    position:relative;
    height:65px;
}
.bannerLeft,
.bannerRight {
    border-style:solid;
    border-width:2.25em 20px;
    position:absolute;
    width:0;
}
.bannerLeft {
    top:6px; left:-40px;
    border-color:red red red white;
}
.bannerRight {
    top:6px; right:-40px;
    border-color:red white red red;
}

.bannerContent {
    position:relative;
    top:20%;
    text-align:center;
}

测试标记:

<div class="banner">
    <span class="bannerLeft" />
    <div class="bannerContent">
        Check out this content! Here is some really long text. 
    </div>
    <span class="bannerRight" />
</div>