【问题标题】:Removing border from first-child从第一个孩子中删除边框
【发布时间】:2014-02-03 23:56:59
【问题描述】:

是否可以在不增加第一个框的高度的情况下移除第一个透明边框?我最初尝试使用边距,但由于使用了百分比,这不起作用。这是我所拥有的 - http://jsfiddle.net/KCbgM/1/

更新:我试图删除的边框已经是透明的 - 第一个框的左边框。我试图让这些框在第一个孩子之前没有间隙地适合 100% - 目前是使用 '.grid ul li .grid-item' 类的透明边框。

HTML:

<div class="grid">
    <ul>

        <li>
            <div class="grid-item grid-five">
                <div class="grid-person-wrapper">
                    <img class="grid-person-mug" src="http://boardingarea.wpengine.netdna-cdn.com/deltapoints/files/2012/07/test.jpg">
                </div>
            </div>
        </li>
        <li>
            <div class="grid-item grid-five">
                <div class="grid-person-wrapper">
                    <img class="grid-person-mug" src="http://boardingarea.wpengine.netdna-cdn.com/deltapoints/files/2012/07/test.jpg">
                </div>
            </div>
        </li>
        <li>
            <div class="grid-item grid-five">
                <div class="grid-person-wrapper">
                    <img class="grid-person-mug" src="http://boardingarea.wpengine.netdna-cdn.com/deltapoints/files/2012/07/test.jpg">
                </div>
            </div>
        </li>
        <li>
            <div class="grid-item grid-five">
                <div class="grid-person-wrapper">
                    <img class="grid-person-mug" src="http://boardingarea.wpengine.netdna-cdn.com/deltapoints/files/2012/07/test.jpg">
                </div>
            </div>
        </li>
        <li>
            <div class="grid-item grid-five">
                <div class="grid-person-wrapper">
                    <img class="grid-person-mug" src="http://boardingarea.wpengine.netdna-cdn.com/deltapoints/files/2012/07/test.jpg">
                </div>
            </div>
        </li>

    </ul>   
</div>

CSS:

    .grid {
        display: block;
        float: left;
        border:1px solid #000;
    }

    .grid ul {
        list-style: none;
        margin: 0;
        padding: 0;
    }

    .grid ul li {
        display: inline;
        text-align: -webkit-match-parent;
    }

    .grid-five {
        width: 20%;
    }

    .grid-item {
        float: left;
        display: block;
        background: transparent;   
        position: relative;
        overflow: hidden;  
    }

    .grid ul li .grid-item {
        border-left: 34px solid transparent;
        -webkit-box-sizing: border-box;
        -moz-box-sizing: border-box;
        box-sizing: border-box;
    }

    .grid ul li:first-child .grid-item {
        margin-left:0px;
    }

    .grid-person-wrapper {
        border: 8px solid #cad7c5;
        -webkit-box-sizing: border-box;
        -moz-box-sizing: border-box;
        box-sizing: border-box;
        background: #fff;
        float: left;
        position: relative;
        z-index: 1;
        width: 100%;
        cursor: pointer;
        display: block;
        -webkit-transition: All 0.1s ease;
        -moz-transition: All 0.1s ease;
        -o-transition: All 0.1s ease;
        -ms-transition: All 0.1s ease;
        transition: All 0.1s ease;
    }

    .grid-person-wrapper:hover {
        border: 8px solid #a9f001;
        opacity: 0.8;
    }

    .grid-person-mug {
        width: 100%;
        border: none;
        max-width: 100%;
    }

【问题讨论】:

  • 所以我可能没有理解这里的问题 - 你想删除图像之间的间距,但保持图像大小相同(好像它们之间确实有空格/边框)?你想达到什么目的?
  • 我正在尝试从第一个孩子身上移除透明的左边框。
  • 我已经更新了我的答案 - 我认为这就是你要找的......

标签: css responsive-design


【解决方案1】:

移除透明边框,改为在列表中设置text-align:justify;,并使用伪元素将内容拉伸到100%宽度:

FIDDLE

(相关)CSS

.grid ul {
    list-style: none;
    margin: 0;
    padding: 0;
    text-align:justify;
}
.grid ul:after {
    content: '';
    width: 100%;
    display: inline-block;
}

.grid ul li {
    display: inline;
}

.grid-five {
    width: 18%;
}

【讨论】:

  • 很好 - 但假设 OP 希望在最后一项之后保持原始间距和间隙? (在设计方面我不会,这就是我喜欢你的解决方案的原因)。
  • 实际上,我刚刚注意到每个框之间的空间的宽度会根据所使用的设备或视口而改变,所以这不是解决一个问题,而是解决另一个问题。
  • @user2965429 - 但是你不能在盒子之间有固定的间距,盒子的固定尺寸有一个流体容器。如果您想要一个流体容器,则必须允许膨胀/收缩......
  • 我不想要盒子的固定尺寸。看看上面的 CSS,盒子是流动的。
【解决方案2】:

你可以试试这个……

Fiddle here..

.grid ul li:first-child .grid-person-wrapper
 {
    border-left:transparent;
 }

如果您的要求不同,请告诉我..

祝你好运...:)

【讨论】:

  • 我试图删除的边框已经是透明的。我试图让这些盒子 100% 适合前面没有间隙 - 目前是一个透明边框。
  • 我很好奇谁赞成这个,结果还是一样。
【解决方案3】:

您还需要解决 width 更改。试试看:

.grid ul li:first-child .grid-item {
    border-left: none;
    width: 15%;
}

小提琴http://jsfiddle.net/KCbgM/5/

编辑 1:

如何更改divs 之间的边距以解决变化?

.grid ul li .grid-item {
    -moz-box-sizing: border-box;
    border-left: 34px solid rgba(0, 0, 0, 0);
    margin-left: 1.25%;
}

.grid ul li:first-child .grid-item {
    border-left: medium none;
    margin-left: 0;
    width: 15%;
}

小提琴:http://jsfiddle.net/KCbgM/6/

如果这是你想要的,请告诉我。

【讨论】:

  • 不,这只是将空间移动到五个框的另一侧。这五个盒子需要填满容器的宽度。
  • @user2965429 :试图了解您的问题,如果边框透明保持与您原来的 css 一样,有什么区别?
  • 目标是 - 五个框的宽度和高度必须相同 + 它们之间的间隙必须相同 (34px) + 五个框必须跨越网页/容器的 100% 宽度他们在。这是一个简单的目标,但不容易实现。这有意义吗?
【解决方案4】:

试试:

.grid ul li .grid-item {

padding-left: 34px;

-webkit-box-sizing:border-box;

-moz-box-sizing:border-box;

box-sizing:border-box;

}

编辑:

好的,现在我看到了问题。

这应该可以解决问题:

.grid ul li:first-child .grid-item {
    margin-left:-34px;
}

【讨论】:

  • 我认为这不能解决他的问题。他想删除第一个边界。即使将其替换为填充,删除时的结果也是相同的。
  • without increasing the height of the first box? 不幸的是,这仍然会发生。
  • 我很好奇谁对我的第一个答案投了反对票,因为当时的目标还不太清楚......
  • 我猜可能是 CSS/设计经验的水平。当您没有意识到边框是用来封闭/突出显示项目而不是隔开它时,边框是一个非常明显的选择。当然我可能完全错了......
  • 在这种情况下,您应该使用@Danield 的答案,尽管间距会略有不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-01
  • 2020-09-18
  • 2018-08-19
  • 1970-01-01
  • 2015-05-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多