2017-02-14 16 views
2

Я ищу применить тень только к строке, которая проходит между строками таблицы. В примере ниже «красные» линии. Я не хочу, чтобы тень применялась к синим границам.Применить тень к верхней границе строк таблицы

Если кто-нибудь может поиграть с нижеприведенным фрагментом, чтобы заставить его работать, это был бы мой герой дня.

EDIT: Я вижу, что у моего фрагмента есть проблема с красной линией. В идеале я действительно хочу сплошную не разделенную красную линию.

Это своего рода эффект Я ищу: enter image description here

.shadow { 
 
    margin: 20px; 
 
    width: 80%; 
 
    background: yellow; 
 
    border-radius: 15px; 
 
    border: 2px solid blue; 
 
} 
 
.shadow td, .shadow th { 
 
    border-top: 5px solid red; 
 
    border-right: 2px solid blue; 
 
    padding: 10px; 
 
    text-align: center; 
 
} 
 
.shadow th { 
 
    border-top: none; 
 
} 
 
.shadow td:last-child, .shadow th:last-child { 
 
    border-right: none; 
 
}
<div> 
 
    <table class="shadow"> 
 
    <tr> 
 
     <th>AH</th> 
 
     <th>BH</th> 
 
     <th>CH</th> 
 
    </tr> 
 
    <tr> 
 
     <td>A1</td> 
 
     <td>B1</td> 
 
     <td>C1</td> 
 
    </tr> 
 
    <tr> 
 
     <td>A2</td> 
 
     <td>B2</td> 
 
     <td>C2</td> 
 
    </tr> 
 
    <tr> 
 
     <td>A3</td> 
 
     <td>B3</td> 
 
     <td>C3</td> 
 
    </tr> 
 
    </table> 
 
</div>

ответ

1

Вот мой вклад, надеюсь, что это помогает. :)

.table { 
 
    margin: 20px; 
 
    width: 80%; 
 
    background: yellow; 
 
    border-radius: 15px; 
 
    border: 2px solid blue; 
 
    border-spacing: 0px; 
 
} 
 

 
.table tr { 
 
    box-shadow: 0 3px 4px -1px rgba(0,0,0,0.65); 
 
} 
 

 
.table th, .table td { 
 
    padding: 10px; 
 
    text-align: center; 
 
    border-bottom: 4px solid red; 
 
    border-right:2px solid blue; 
 
} 
 

 
.table tr:last-child td { 
 
    border-bottom: none; 
 
} 
 

 
.table tr td:last-child, 
 
.table tr th:last-child{ 
 
    border-right: none; 
 
} 
 

 
.table tr:last-child { 
 
    box-shadow: none; 
 
}
<div> 
 
    <table class="table"> 
 
    <tr> 
 
     <th>AH</th> 
 
     <th>BH</th> 
 
     <th>CH</th> 
 
    </tr> 
 
    <tr> 
 
     <td>A1</td> 
 
     <td>B1</td> 
 
     <td>C1</td> 
 
    </tr> 
 
    <tr> 
 
     <td>A2</td> 
 
     <td>B2</td> 
 
     <td>C2</td> 
 
    </tr> 
 
    <tr> 
 
     <td>A3</td> 
 
     <td>B3</td> 
 
     <td>C3</td> 
 
    </tr> 
 
    </table> 
 
</div>

+0

Ницца, это с одной точки зрения ближайший из них до сих пор, это оговорки, являющиеся 1). Верхний правый и левый углы имеют слабый белый точечный фон для них. 2) Тень находится только ниже красных линий, а не выше. 3) Тень не применяется одинаково к нижней строке чтения, как к другим красным линиям. Это не очень заметно при запуске фрагмента, но при игре с ним (настройка 'box-shadow: 0 3px 4px -1px rgba (0,0,0,0,65);' line) на jsfiddle очень заметна. – Trevor

+0

Я отмечаю, что вы отвечаете так же корректно, как и в случае упомянутых выше оговорок, я смог добиться очень хороших результатов.(Код, который я использовал, был несколько короче, может быть, я отправлю его как какой-то момент) Еще раз спасибо – Trevor

+0

Рад, что я смог помочь. – Brad

2

Мне кажется, следующий фрагмент кода будет решить вашу проблему. Дайте мне знать, если что-то не так, или вам нужно что-то объяснить. В основном я добавил тень коробки для всех ТД и я, а потом я просто удалил их из последней строки с помощью: последнего-ребенка селектора

EDIT: Как было предложено в комментариях, я обновил добавление только

.shadow tr:not(:last-child) td, .shadow th{ 
    box-shadow: 0px 10px 5px rgba(0,0,0,0.6); 
} 

который делает трюк, а

.shadow { 
 
    margin: 20px; 
 
    width: 80%; 
 
    background: yellow; 
 
    border-radius: 15px; 
 
    border: 2px solid blue; 
 
} 
 
.shadow td, .shadow th{ 
 
    border-top: 5px solid red; 
 
    border-right: 2px solid blue; 
 
    padding: 10px; 
 
    text-align: center; 
 
} 
 

 
.shadow tr:not(:last-child) td, .shadow th{ 
 
    box-shadow: 0px 10px 5px rgba(0,0,0,0.6); 
 
} 
 

 
.shadow th { 
 
    border-top: none; 
 
} 
 
.shadow td:last-child, .shadow th:last-child { 
 
    border-right: none; 
 
}
<div> 
 
    <table class="shadow"> 
 
    <tr> 
 
     <th>AH</th> 
 
     <th>BH</th> 
 
     <th>CH</th> 
 
    </tr> 
 
    <tr> 
 
     <td>A1</td> 
 
     <td>B1</td> 
 
     <td>C1</td> 
 
    </tr> 
 
    <tr> 
 
     <td>A2</td> 
 
     <td>B2</td> 
 
     <td>C2</td> 
 
    </tr> 
 
    <tr> 
 
     <td>A3</td> 
 
     <td>B3</td> 
 
     <td>C3</td> 
 
    </tr> 
 
    </table> 
 
</div>

+1

+1. Вы также можете применить селектор ': not (: last-child)', чтобы избавить вас от необходимости отменить стиль при описании. – ne1410s

+0

Вы правы, я обновил ответ. Не большая разница, я думаю, но все же проще :) –

+0

Спасибо, но есть заметная тень от синих линий тоже, также см. Мой комментарий к Brads ответить – Trevor

1

Вы можете сделать это с :after псевдо-элемент и position: absolute:

.shadow { 
 
    margin: 20px; 
 
    width: 80%; 
 
    background: yellow; 
 
    border-radius: 15px; 
 
    border: 2px solid blue; 
 
} 
 
.shadow td, .shadow th { 
 
    border-top: 5px solid red; 
 
    border-right: 2px solid blue; 
 
    padding: 10px; 
 
    text-align: center; 
 
    position: relative; 
 
} 
 
.shadow th { 
 
    border-top: none; 
 
} 
 
.shadow td:last-child, .shadow th:last-child { 
 
    border-right: none; 
 
} 
 
.shadow td:after, .shadow th:after { 
 
    content: ''; 
 
    display: block; 
 
    box-shadow: black 1px 3px 3px; 
 
    height: 2px; 
 
    width: 100%; 
 
    position: absolute; 
 
    left: 0; 
 
    bottom: 0; 
 
} 
 

 
.shadow tr:last-child td:after, .shadow tr:last-child th:after { 
 
    display: none; 
 
}
<div> 
 
    <table class="shadow"> 
 
    <tr> 
 
     <th>AH</th> 
 
     <th>BH</th> 
 
     <th>CH</th> 
 
    </tr> 
 
    <tr> 
 
     <td>A1</td> 
 
     <td>B1</td> 
 
     <td>C1</td> 
 
    </tr> 
 
    <tr> 
 
     <td>A2</td> 
 
     <td>B2</td> 
 
     <td>C2</td> 
 
    </tr> 
 
    <tr> 
 
     <td>A3</td> 
 
     <td>B3</td> 
 
     <td>C3</td> 
 
    </tr> 
 
    </table> 
 
</div>

+0

Это тоже хорошо, но я по-прежнему предпочитаю Brads. У этого также есть тень, не идущая как сверху, так и ниже красных линий. Также есть что-то не так с красными линиями, что некоторые из них выходят наклонены в конце. – Trevor

+0

Я вижу, что у моего оригинального фрагмента также есть проблема с красной линией. В идеале я действительно хочу сплошную не разделенную красную линию – Trevor