我正在使用引导网格系统在我的页面上创建不同大小的“块”。其中一些需要丝带(例如“新”产品)。问题是,我创建色带的方式(我知道唯一的方法)意味着我必须包装块的内容并在框周围创建填充,这样色带可以“包装”它并创建所需的幻觉。
然而,这也意味着这些盒子比应该的要小一点,也就是说,我必须申请缎带的填充。
下面是它当前外观的演示:fiddleLink
CSS

.row {
    padding: 5px;
    background: #efefef;
}

.block {
    position: relative;
    padding: 5px;
}

.block-inner {
    background: #fcc;
    padding: 15px;
}

div.ribbon {
    z-index: 1;
    position: absolute;
    top: 2px;
    left: 0;
    width: 88px;
    height: 86px;
}

div#no-ribbon {
    background: #ccf;
}

div.ribbon-text {
    position: absolute;
    top: 25px;
    left: -15px;
    width: 100px;
    height: 20px;

    text-align: center;
    font-style: italic;
    font-size: 16px;
    color: white;

    transform: rotate(-45deg);
}

HTML格式
<div class="container">
    <div class="row">
        <div class="col-xs-3 block">
            <div class="ribbon">
                <div class="ribbon-text">New!</div>
            </div>
            <div class="block-inner">
                <p>Some awesome text and imagery, whatever</p>
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-xs-3" id="no-ribbon">
            <p>A block with its "actual" size</p>
        </div>
    </div>
</div>

截图
如您所见,可见的左边框未对齐。当然,从技术上讲,这是非常合乎逻辑的。但是,从用户的角度来看,它只是看起来“关闭”。
我怎样才能做到这一点,使带色带的块的左边框与不带色带的块的左边框对齐?

最佳答案

更新和工作
尝试margin-left: -5px;到块。

.block-inner {
    background: #fcc;
    padding: 15px;
    /* Add this */
    margin-left: -5px;
}

div.ribbon {
    margin-left: -5px;
}

div.ribbon + .block-inner {
    margin-right: -5px;
}

预览:
小提琴:https://jsfiddle.net/kpopsj5x/5/

关于html - 使色带附着的块看起来相同大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31206611/

10-13 00:18