Заголовок столбца CSS с img – как закрепить img/div справа?
-
19-08-2019 - |
Вопрос
У меня есть таблица HTML, которую я использую в качестве заголовков столбцов в виде сетки.Нажатие на заголовок столбца запускает JavaScript, который выполняет сортировку представления сетки, а рядом с текстом столбца отображается значок, показывающий, что столбец отсортирован, как показано ниже:
|---------------------------------------------------------------------------------|
| <span> Column 1 </span> <div class="sortImgSprite" /> | <span> Column 2 </span> |
|---------------------------------------------------------------------------------|
Таблица имеет табличный макет:исправлено, а диапазон текста имеет переполнение:скрыто, переполнение текста:многоточие, пробел:сейчасрап.
Когда текст очень длинный, я получаю желаемый эффект многоточия, но спрайт значка сортировки (div с заданной шириной и фоном) обрезается с правой стороны ячейки таблицы.Есть какие-нибудь предложения, как сделать так, чтобы значок сортировки имел приоритет над пространством над эллиптическим текстом с помощью CSS?Если столбец «отсортирован», я хочу, чтобы сортировка img всегда была там и имела размер эллипса текста вместо текста, выталкивающего img из видимого пространства ячейки:
Решение
Я не уверен, какие плавающие объекты вы добавляете к изображению, но пытались ли вы плавать вправо и добавлять правое поле размером около 5 пикселей? Это бы подтолкнуло его внутрь.
Другие советы
Почему бы вам просто не добавить класс sortImgSprite в <span>
вместо этого тег?Поскольку вы все равно выполняете сортировку с помощью JavaScript, у вас должен быть дескриптор столбца таблицы?
Когда пользователь сортирует столбец, добавьте класс «sortImgSprite» слева или справа (возможно, добавьте небольшое дополнение, если необходимо) и удалите его, когда этот столбец больше не сортируется.
...или я что-то пропустил?
Ах.Я что-то пропустил.Думал, что переполненный текст находился в строках под заголовками столбцов, а не в самих заголовках.
Хорошо, а что, если вы добавите класс в заголовок таблицы?Твой <th>
тег (если это то, что вы используете) может выровнять изображение по правому краю ячейки, а затем ваше <span>
тег может наследовать этот класс и добавить другое форматирование (например, переполнение текста и т. д.)?
Опять же, вам может потребоваться отступ справа от диапазона, чтобы фоновое изображение ячейки заголовка таблицы было четко видно за любым текстом.
Спасибо за рекомендации! Вот что я сделал, чтобы получить то, что хотел через CSS:
<html>
<head>
<style type="text/css">
table
{
table-layout:fixed;
width: 300px;
}
div.foo
{
float:right;
width:25px;
height:1.2em;
background-color:green;
}
.bar
{
margin-right:30px;
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis;
}
</style>
</head>
<body>
<table border="1">
<tr>
<td>
<div class="foo"></div>
<div class="bar" title="This is some text. This is some text. This is some text. This is some text.">This is some text. This is some text. This is some text.</div>
</td>
</tr>
</table>
</body>
</html>