Чередование цвета строк и подсветка таблицы с помощью JavaScript

Когда речь идет о работе с большими объемами данных, особенно в таблицах, важно сделать информацию максимально доступной и удобной для восприятия. Один из способов достижения этого — использование чередующихся цветов строк и подсветки активных строк при наведении курсора. Это улучшает читаемость таблицы и помогает пользователям быстрее находить нужную информацию. В этой статье мы рассмотрим, как можно достичь такого эффекта с помощью JavaScript.

Практический пример

Рассмотрим создание таблицы с десятью строками, где строки будут чередоваться по цвету, а активная строка будет выделяться при наведении курсора.

HTML

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Чередование и подсветка строк</title>
    <style>
        table {
            border-collapse: collapse;
            width: 100%;
        }
        th, td {
            padding: 10px;
            text-align: left;
            border-bottom: 1px solid #ddd;
        }
        .odd-row {
            background-color: #f9f9f9; /* Светлый оттенок */
        }
        .even-row {
            background-color: #e6e6e6; /* Темный оттенок */
        }
        .highlighted {
            background-color: lightblue; /* Цвет подсветки */
        }
    </style>
</head>
<body>

<table id="myTable">
    <tr>
        <th>Имя</th>
        <th>Фамилия</th>
        <th>Возраст</th>
    </tr>
    <!-- Десять строк данных -->
    <tr><td>Иван</td><td>Иванов</td><td>25</td></tr>
    <tr><td>Петр</td><td>Петров</td><td>30</td></tr>
    <tr><td>Анна</td><td>Сидорова</td><td>28</td></tr>
    <tr><td>Сергей</td><td>Кузнецов</td><td>32</td></tr>
    <tr><td>Елена</td><td>Михайлова</td><td>27</td></tr>
    <tr><td>Дмитрий</td><td>Васильев</td><td>29</td></tr>
    <tr><td>Ольга</td><td>Николаева</td><td>26</td></tr>
    <tr><td>Алексей</td><td>Орлов</td><td>31</td></tr>
    <tr><td>Марина</td><td>Павлова</td><td>24</td></tr>
    <tr><td>Виктор</td><td>Захаров</td><td>33</td></tr>
</table>

<script>
// Функция для авто-чередования цвета строк
function alternateRowColors(table) {
    const rows = table.querySelectorAll("tr:not(:first-child)");
    rows.forEach((row, index) => {
        if (index % 2 === 0) {
            row.classList.add("even-row");
        } else {
            row.classList.add("odd-row");
        }
    });
}

// Функция для подсветки строки при наведении
function highlightRows(table) {
    const rows = table.querySelectorAll("tr:not(:first-child)");
    rows.forEach(row => {
        row.addEventListener('mouseover', () => {
            row.classList.add('highlighted');
        });
        
        row.addEventListener('mouseout', () => {
            row.classList.remove('highlighted');
        });
    });
}

// Инициализация функций после загрузки страницы
window.onload = () => {
    const myTable = document.getElementById("myTable");
    alternateRowColors(myTable);
    highlightRows(myTable);
};
</script>

</body>
</html>

Объяснение работы кода

  1. HTML: В документе создается таблица с заголовком и десятью строками данных.
  2. CSS: Определяем стили для таблицы и создаем три класса:
    • .odd-row и .even-row для авто-чередования фона строк.
    • .highlighted для подсветки строки при наведении.
  3. JavaScript:
    • Функция alternateRowColors(table) принимает таблицу в качестве аргумента и чередует классы .odd-row и .even-row для всех строк, кроме первой (заголовочной).
    • Функция highlightRows(table) добавляет обработчики событий mouseover и mouseout ко всем строкам таблицы, кроме первой. При наведении курсора на строку добавляется класс .highlighted, а при уходе курсора — удаляется.
    • После загрузки страницы вызываются обе функции для инициализации чередования и подсветки строк.

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

Добавить комментарий

Войти с помощью: