2017-01-26 1 views
3

position: 'sticky' landed in Chrome 56, но при определенных обстоятельствах граница становится невидимой.Почему граница не видна с «позицией: липкой», когда существует фоновый цвет?

Рассмотрим следующий пример:

table { 
 
    border-collapse: collapse; 
 
} 
 

 
thead { 
 
    position: sticky; 
 
    top: 0; 
 
} 
 

 
th { 
 
    background-color: #fff; 
 
    border-right: 5px solid red; 
 
}
<table> 
 
    <thead> 
 
    <tr> 
 
     <th>First</th> 
 
     <th>Second</th> 
 
     <th>Third</th> 
 
    </tr> 
 
    </thead> 
 
</table>

В Chrome 56.0.2924.76 только последний <th> «s граница видна, и это только тогда, когда <th> имеет background-color указанный.

Это ошибка в Chrome?

Playground

+1

Это воспроизводимо на Firefox 52.0a2. Граница снова появляется во всех заголовках таблицы, когда «border-collapse: collapse;» удаляется. – Xufox

+0

рядом с элементами стола + позиция: липкая; в firefox не работает, так как он все еще экспериментальный, я считаю, что он еще не исправлен –

ответ

2

кажется, чтобы заставить оплавления будет частично помощь:

table { 
 
    border-collapse: collapse; 
 
} 
 

 
thead { 
 
    position: sticky; 
 
    top: 0; 
 
} 
 

 
th { 
 
    border-right: 5px solid red; 
 
    transform:scale(0.999); 
 
}
<table> 
 
    <thead> 
 
     <tr> 
 
     <th>First</th> 
 
     <th>Second</th> 
 
     <th>Third</th> 
 
     </tr> 
 
    </thead> 
 
    </table>

background-clip кажется, также эффективны и безвредны:

table { 
 
    margin-top: 1em; 
 
    border-collapse: collapse; 
 
    margin-bottom: 200vh 
 
} 
 

 
thead { 
 
    position: sticky; 
 
    top: 0; 
 
} 
 

 
th { 
 
    border-right: 5px solid red; 
 
    background:white; 
 
    background-clip: padding-box; 
 
}
<table> 
 
    <thead> 
 
     <tr> 
 
     <th>First</th> 
 
     <th>Second</th> 
 
     <th>Third</th> 
 
     </tr> 
 
    </thead> 
 
    </table>

5

У меня была та же проблема. Моим обходным путем было использование псевдоэлемента :after для эмуляции нижней границы.

th:after{ 
    content:''; 
    position:absolute; 
    left: 0; 
    bottom: 0; 
    width:100%; 
    border-bottom: 1px solid rgba(0,0,0,0.12); 
} 
+0

Это сделало трюк! – timbru31

Смежные вопросы