#html #css #hover #css-grid
#HTML #css #наведите #css-grid
Вопрос:
Если бы я не использовал grid для создания topnav, я бы просто создал div и поместил туда элементы 2, 3, 4 и 5, чтобы они появлялись при наведении курсора мыши на div и оставались такими, даже если вы наведете курсор на сам список. Я пытался реализовать такой div в сетке, но, к сожалению, я не смог заставить его работать. Заранее спасибо :).
*{
margin: 0;
padding: 0;
color: black;
}
#Topnav1{
height: 80px;
width: 100%;
background-color: plum;
display: grid;
grid-template: 1fr / repeat(23,1fr);
grid-gap: 0px;
order: 1;
z-index: 3;
grid-template-areas:
" a a a a a a a b b b f f f g g g h h h h h h h "
" . . . . . . . c c c . . . . . . . . . . . . . "
" . . . . . . . d d d . . . . . . . . . . . . . "
" . . . . . . . e e e . . . . . . . . . . . . . "
;
font: 20px Arial black, Helvetica, sans-serif;
color: black;
}
.topgrid{
border: 1px black solid;
background-color: darkblue;
align-items: center;
justify-items: center;
display: flex;
justify-content: center;
align-items: center;
height: 80px;
}
#Topnav1 a{
text-decoration: none;
}
.topitem2:hover ~ .topgrid{
display: flex;
}
.topitem1{grid-area: a;}
.topitem2{grid-area: b;}
.topitem3{display: none; grid-area: c;}
.topitem4{display: none; grid-area: d;}
.topitem5{display: none; grid-area: e;}
.topitem6{grid-area: f;}
.topitem7{grid-area: g;}
.topitem8{grid-area: h;}
img{
height: 80px;
}
<body>
<nav id="Topnav1">
<div class="topgrid topitem1"><a href="#"><img src="../Images/logo.png"></a></div>
<a href="#" class="topgrid topitem2">item 2</a>
<a href="#" class="topgrid topitem3">item 3</a>
<a href="#" class="topgrid topitem4">item 4</a>
<a href="#" class="topgrid topitem5">item 5</a>
<a href="#" class="topgrid topitem6">item 6</a>
<a href="#" class="topgrid topitem7">item 7</a>
<div class="topgrid topitem8">
<form id="frm1">
<input id="text" type="text" name="searchbox" placeholder="Search here...">
<input type="button" onclick="myFunction()" value="Submit">
</form>
</div>
</nav>
</body>
Комментарии:
1. Я, честно говоря, думаю, что это можно сделать более простым способом. Вы слишком сильно себя усложнили.
2. @MarkBurns Ты прав. На самом деле, я уже создал нечто подобное с помощью flexbox. Просто я только начал изучать grid и не смог разобраться с этой конкретной проблемой. Так что в основном это просто для учебных целей.
3. Да, Markburns, попробуйте использовать GRID только для макета, а не для элементов в grid. например, используйте простую навигацию с вложенным подменю и показывайте или скрывайте с помощью over родительского элемента li вложенного UL
Ответ №1:
Вот простой пример этого
https://codepen.io/r0binxp/pen/JjXXvEm
сетка используется только для макета. и подменю, вложенное в элемент списка
#Topnav1{
height: 80px;
width: 100%;
background-color: plum;
display: grid;
order: 1;
z-index: 3;
font: 20px Arial black, Helvetica, sans-serif;
color: black;
grid-template-columns: 3fr 3fr 1fr;
}