У меня есть эта часть HTML, которую я хочу стилизовать. Html - таблица (и фактическая таблица), которую я хочу предоставить. Элемент также имел: перед псевдоэлементом, который я использую, чтобы поместить маленький треугольник в верхний угол.
JSFiddle здесь. Надеюсь, это имеет смысл. Я урезал разметку и CSS как можно больше, потому что это фактически небольшая часть большого сайта.
http://jsfiddle.net/GolezTrol/28yDb/2/
Теперь проблема состоит в том, что комбинация из 2 столбцов, имеющих border-collapse: collapse;
в таблице и псевдо-элемент :before
, приводит к тому, что верхняя граница элемента частично исчезает. Это только там для длины первого столбца.
Вы могли бы предположить, что это псевдоэлемент, расположенный поверх границы, но этот элемент очень мал, и, насколько я могу судить, это не может быть проблемой. Я добавил visibility: hidden;
в псевдоэлемент, и я могу сказать, что треугольник ушел, но граница все еще неполна.
К сожалению, я не могу изменить разметку, так как это выводится MediaWiki, но у меня есть полный контроль над CSS.
HTML:
<div id="globalWrapper">
<div id="column-content">
<div class="thumb tright">
<table class="infobox vcard" style="">
<tbody>
<tr>
<th colspan="2" class="fn org" style=""> Example text</th>
</tr>
<tr>
<th>Row head</th>
<td>Content</td>
</tr>
CSS:
/* Generic table styling */
table {
border-collapse: collapse;
/*border-spacing: 0;*/ }
/* The box */
.thumb.tright table.infobox.vcard {
border: 3px solid #fae104;
position: relative;
}
/* Triangle */
.thumb.tright table.infobox.vcard:before {
content: "";
position: absolute;
width: 0;
height: 1px;
border-top: 5px solid transparent;
top: -7px;
border-left: 10px solid #555;
visibility: hidden;
right: -1px; }
Я уже выяснил, что он работает, когда я удаляю border-collapse: collapse;
, но я не уверен, что это правильное решение, и даже если это так, мне очень хотелось бы объяснить, что происходит.
Btw. Я столкнулся с этой проблемой как в Chrome 29, так и в Internet Explorer 10. Не тестировали другие браузеры.
Update
Вместо того, чтобы использовать -или не использовать- "border-collapse", чтобы исправить проблему, я обнаружил, что это также работает:
.thumb.tright table.infobox.vcard tbody {
display: block;
}
Таким образом, сама таблица по-прежнему является таблицей, псевдоэлемент все еще находится в таблице, как и граница, позиционирование и т.д. Тесть, которая ранее была незакрашена, теперь является блоком, и проблема решена в обоих браузерах. Я нашел это методом проб и ошибок и все еще не знал причину этого.
Обновлен скрипт: http://jsfiddle.net/GolezTrol/28yDb/9/