Я пытаюсь создать меню, которое выкладываю, используя сетку CSS.Проблема, которую я имею, состоит в том, чтобы выяснить, как я могу сделать меню интерактивным, когда мышь наводит курсор на каждый элемент меню.
Я бы хотел выделить всю строку, когда указатель мыши находится над любым из пунктов меню в строке.Я могу выделить каждую отдельную ячейку сетки, добавив правило: hover css, но я не знаю, как выделить всю строку сетки.
Вторая часть затем определяет, когда щелкают строки.Опять же, я могу добавить обработчик события onClick для каждой ячейки, но это не кажется идеальным, поскольку пользователи могут случайно щелкнуть в промежутке между ячейками сетки.Я думал, что если я смогу выяснить, как выделить всю строку, то я мог бы добавить обработчик кликов к этой подсветке строк, и это решило бы проблему щелчка щелчка.
Я создал пример codepen, который демонстрируеткак в настоящее время создается меню: https://codepen.io/marekKnows_com/pen/RqMgGw
HTML:
<div class="myGrid">
<div class="anchor" id="item1">
<i class="image material-icons">folder_open</i>
</div>
<span class="text">Open...</span>
<span class="shortcut">Ctrl+O</span>
<div class="anchor" id="item2">
<i class="image material-icons">save</i>
</div>
<span class="text">Save...</span>
<span class="shortcut">Ctrl+S</span>
<div class="anchor" id="item3"></div>
<span class="text">Action</span>
<div class="separator"></div>
<div class="anchor" id="item4"></div>
<span class="text">Exit</span>
<span class="shortcut">Ctrl+X</span>
</div>
CSS:
.myGrid {
border: 1px solid black;
display: grid;
grid-template-columns: 20px auto auto;
grid-gap: 2px 6px;
align-items: center;
justify-items: start;
padding: 10px;
box-sizing: border-box;
}
.image {
width: 24px;
}
.text {
height: 28px;
line-height: 28px
}
.shortcut {
justify-self: end;
padding: 0 5px;
height: 28px;
line-height: 28px
}
.separator {
grid-column: 1 / span 3;
width: 100%;
height: 3px;
border-bottom: 1px solid lightgray;
}