Как добавить треугольник в ячейку таблицы
Мне нужно добавить правый треугольник в ячейку.
![enter image description here]()
Как это сделать?
Я попытался добавить span и значок внутри диапазона, но он не работает
<span style="position: relative;float:right;top:-30px;">@Html.ImageContent("triangle_bonus.png", "")</span>
Ответы
Ответ 1
Использование CSS-треугольников:
У вас в основном есть элемент высоты 0, 0 и используйте границы для построения треугольника. Поскольку линия между границами (например, между верхним и левым) диагональна, вы можете создавать с ней красивые, сплошные цветные треугольники!
Вот пример!
HTML:
<table border="1">
<tr>
<td class="note">Triangle!</td>
<td>No Triangle!</td>
</tr>
</table>
CSS
td {
padding: 20px;
}
.note {
position: relative;
}
.note:after { /* Magic Happens Here!!! */
content: "";
position: absolute;
top: 0;
right: 0;
width: 0;
height: 0;
display: block;
border-left: 20px solid transparent;
border-bottom: 20px solid transparent;
border-top: 20px solid #f00;
} /* </magic> */
Преимущества:
- Нет изображений!. Значение, без дополнительного запроса.
- Нет дополнительной разметки!. Значит, вы не помещаете свой HTML неземной разметкой.
- Выглядит хорошо на всех размерах!. Поскольку он отображается в браузере, он будет выглядеть идеально на любом размере и любом разрешении.
Недостатки:
- Зависит от псевдоэлементов. Это означает, что более низкие версии IE не будут отображать треугольник. Если это важно, вы можете немного изменить CSS и использовать
<span>
в своем HTML, вместо того чтобы полагаться на :after
.
Ответ 2
Нашел этот вопрос через Google и столкнулся с проблемами, поэтому я добавлю это здесь, несмотря на возраст оригинального сообщения.
Ответ Мадары работает в большинстве браузеров и работает везде вне таблицы во всех браузерах. Но, как упоминалось в комментариях, этот пример не работает в Firefox.
Там очень старый билет в Bugzilla относительно position:absolute;
не работает в <td>
.
Основное решение - добавить внутренний <div>
:
HTML:
<table border="1">
<tr>
<td><div class="note">Triangle!</div></td>
<td>No Triangle!</td>
</tr>
</table>
CSS
td .note {
padding: 20px;
}
Пример jsFiddle
Я обнаружил, что можно было достичь без внутреннего <div>
, но только тогда, когда <td>
был пуст, что, вероятно, не помогает.
Ответ 3
Сделать текст ячейки внутри div это хорошая идея. но если вы просто добавили дополнительный div для СТРЕЛКИ не для текста. потому что он создает проблему, когда td
задает ширину и высоту, а текст остается в TOP с padding-top:20px;
.
Я нашел другое решение и протестировал его во всех основных браузерах (например, IF и FF)
.arrow-right-1 {
position: absolute;
top: -1px;
right: -5px;
float: right;
width: 0;
height: 0;
border-left: 10px solid transparent;
border-right: 10px solid transparent;
border-bottom: 10px solid red;
transform: rotate(45deg);
}
td {
border: solid 1px blue;
width: 160px;
height: 100px;
/* padding: 0px !important; */
/* vertical-align: top; */
position: relative;
}
<table class="table">
<tbody>
<tr>
<td>
<div class="arrow-right-1"></div>you can increase or decrease the size of td height or can put more text
</td>
</tr>
</tbody>
</table>