it-swarm.asia

كيف تجعل الحدود تنهار (على div)؟

افترض أن لدي علامة مثل: http://jsfiddle.net/R8eCr/1/

<div class="container">
    <div class="column">
        <div class="cell"></div>
        <div class="cell"></div>
        <div class="cell"></div>
    </div>
    <div class="column">
        <div class="cell"></div>
        <div class="cell"></div>
        <div class="cell"></div>
    </div>
    <div class="column">
        <div class="cell"></div>
        <div class="cell"></div>
        <div class="cell"></div>
    </div>
    ...
</div>

ثم المغلق

.container {
    display: table;
    border-collapse: collapse;
}
.column {
    float: left;
    overflow: hidden;
    width: 120px;
}
.cell {
    display: table-cell;
    border: 1px solid red;
    width: 120px;
    height: 20px;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
}

لدي div الخارجي مع display: table; border-collapse: collapse; والخلايا التي تحتوي على display: table-cell لماذا لا تزال لا تنهار؟ ما الذي أفتقده هنا؟

بالمناسبة ، ربما يكون هناك عدد متغير من الخلايا في عمود ، لذلك لا يمكنني أن يكون لدي حدود على جانب واحد.

70
Jiew Meng

هنا هو التجريبي

تحتاج أولا إلى تصحيح خطأ بناء الجملة الخاص به

display: table-cell;

لا diaplay: table-cell;

   .container {
    display: table;
    border-collapse:collapse
}
.column {
    display:table-row;
}
.cell {
    display: table-cell;
    border: 1px solid red;
    width: 120px;
    height: 20px;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
}
32
Hushme

استخدم الهامش السلبي البسيط بدلاً من استخدام جدول العرض.

تم التحديث في الكمان JS Fiddle

.container { 
    border-style: solid;
    border-color: red;
    border-width: 1px 0 0 1px;
    display: inline-block;
}
.column { 
    float: left; overflow: hidden; 
}
.cell { 
    border: 1px solid red; width: 120px; height: 20px; 
    margin:-1px 0 0 -1px;
}
.clearfix {
    clear:both;
}
77
iamjustcoder

بدلاً من ذلك ، استخدم border استخدم box-shadow:

  box-shadow: 
    2px 0 0 0 #888, 
    0 2px 0 0 #888, 
    2px 2px 0 0 #888,   /* Just to fix the corner */
    2px 0 0 0 #888 inset, 
    0 2px 0 0 #888 inset;

العرض التوضيحي: http://codepen.io/Hawkun/pen/rsIEp

68
user1032559

تحتاج إلى استخدام display: table-row بدلاً من float: left; إلى العمود الخاص بك ومن الواضح أنهHushme صحح diaplay: table-cell الخاص بك إلى display: table-cell;

 .container {
    display: table;
    border-collapse: collapse;
}
.column {
    display: table-row;
    overflow: hidden;
    width: 120px;
}
.cell {
    display: table-cell;
    border: 1px solid red;
    width: 120px;
    height: 20px;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
}

عرض توضيحي

5
Bhojendra Rauniyar

يمكنك أيضًا استخدام الهوامش السلبية:

.column {
  float: left;
  overflow: hidden;
  width: 120px;
}
.cell {
  border: 1px solid red;
  width: 120px;
  height: 20px;
  box-sizing: border-box;
}
.cell:not(:first-child) {
  margin-top: -1px;
}
.column:not(:first-child) > .cell {
  margin-left: -1px;
}
<div class="container">
  <div class="column">
    <div class="cell"></div>
    <div class="cell"></div>
    <div class="cell"></div>
  </div>
  <div class="column">
    <div class="cell"></div>
    <div class="cell"></div>
    <div class="cell"></div>
  </div>
  <div class="column">
    <div class="cell"></div>
    <div class="cell"></div>
    <div class="cell"></div>
  </div>
  <div class="column">
    <div class="cell"></div>
    <div class="cell"></div>
    <div class="cell"></div>
  </div>
  <div class="column">
    <div class="cell"></div>
    <div class="cell"></div>
    <div class="cell"></div>
  </div>
</div>
4
mpen

لماذا لا تستخدم الخطوط العريضة؟ هذا هو ما تريد الخطوط العريضة: 1px الصلبة الأحمر.

2
Muslimbek

مثال على استخدام انهيار الحدود: منفصل ؛ مثل

  • الحاوية المعروضة كجدول: [.
    ol[type="I"]>li{
      display: table;
      border-collapse: separate;
      border-spacing: 1rem;
    }
    
  • 0
    Dmytro Yurchenko