Почему раскрывающийся список моих кнопок активирован, а я не зависаю на нем? - PullRequest
0 голосов
/ 11 февраля 2020

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

Одна идея, которую я рассмотрел, - это разбить сетку на гораздо более мелкие части, но я изо всех сил стараюсь загрузите их, так как некоторые комбинации grid-template-areas не работают. Должен ли я разрешить себе использовать flexbox для решения этой проблемы, прежде чем я смогу решить эту проблему?

Кроме того, не является ли смысл решетки иметь несколько элементов в одном блоке? Кажется, это естественный способ сделать это.

Соответствующий код ниже:

enter image description here

.item1 {
  grid-area: header;
}

.item2 {
  grid-area: menu;
}

.item3 {
  grid-area: main;
}

.item4 {
  grid-area: right;
}

.item5 {
  grid-area: footer;
}

.item6 {
  grid-area: footer2;
}

.item7 {
  grid-area: footer3;
}

.grid-container {
  display: grid;
  grid-template-areas: 'header header header header header header' 'menu main main main right right' 'menu footer footer footer footer footer' 'menu footer2 footer2 footer2 footer2 footer2' 'menu footer3 footer3 footer3 footer3 footer3';
  grid-gap: 20px;
  background-color: #2196F3;
  padding: 20px;
  padding-bottom: 250px;
  margin-bottom: 120px;
}

.grid-container>div {
  background-color: rgba(255, 255, 255, 0.8);
  text-align: center;
  padding: 20px 0;
  font-size: 30px;
}


/* Style The Dropdown Button */

.dropbtn {
  margin-right: 1700px;
  display: block;
  background-color: rgb(20, 149, 255);
  color: white;
  padding: 16px;
  font-size: 16px;
  border: none;
  cursor: pointer;
}


/* Dropdown button */

.dropdown {
  position: relative;
  display: inline-block;
}


/* Dropdown Content (Hidden by Default) */

.dropdown-content {
  display: none;
  position: absolute;
  background-color: #f9f9f9;
  min-width: 80px;
  box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
  z-index: 1;
}


/* Links inside the dropdown */

.dropdown-content a {
  color: black;
  padding: 12px 16px;
  text-decoration: none;
  display: block;
}


/* Change color of dropdown links on hover */

.dropdown-content a:hover {
  background-color: #f1f1f1
}


/* Show the dropdown menu on hover */

.dropdown:hover .dropdown-content {
  display: block;
}


/* Change the background color of the dropdown button when the dropdown content is shown */

.dropdown:hover .dropbtn {
  background-color: rgb(20, 149, 255);
}


/* Dropdown button ends here */
<div class="header">
  <h1 class="titleText">Shopping Project</h1>
  <div class="topnav">
    <form class="example" action="/action_page.php">
      <input type="text" placeholder="Search.." name="search">
      <button type="submit"><i class="fa fa-search"></i></button>
    </form>
  </div>
</div>
<br>
<br>
<div class="grid-container">
  <div class="item1">
    <div class="dropdown">
      <button class="dropbtn">Dropdown</button>
      <div class="dropdown-content">
        <a href="#">Link 1</a>
        <a href="#">Link 2</a>
        <a href="#">Link 3</a>
      </div>
    </div>
  </div>
  <div class="item2">Menu</div>
  <div class="item3">Main</div>
  <div class="item4">Right</div>
  <div class="item5">Footer</div>
  <div class="item6">Footer</div>
  <div class="item7">Footer</div>
</div>

Ответы [ 3 ]

3 голосов
/ 11 февраля 2020

вам нужно добавить кнопку наведения вместо выпадающего списка

удалить это

.dropdown:hover .dropdown-content {
   display: block;
 }

Добавить это

button.dropbtn:hover + .dropdown-content {
   display: block;
}
1 голос
/ 11 февраля 2020

Проверьте стили .dropdown и .dropbtn.

.item1 {
  grid-area: header;
}

.item2 {
  grid-area: menu;
}

.item3 {
  grid-area: main;
}

.item4 {
  grid-area: right;
}

.item5 {
  grid-area: footer;
}

.item6 {
  grid-area: footer2;
}

.item7 {
  grid-area: footer3;
}

.grid-container {
  display: grid;
  grid-template-areas: 'header header header header header header' 'menu main main main right right' 'menu footer footer footer footer footer' 'menu footer2 footer2 footer2 footer2 footer2' 'menu footer3 footer3 footer3 footer3 footer3';
  grid-gap: 20px;
  background-color: #2196F3;
  padding: 20px;
  padding-bottom: 250px;
  margin-bottom: 120px;
}

.grid-container>div {
  background-color: rgba(255, 255, 255, 0.8);
  text-align: center;
  padding: 20px 0;
  font-size: 30px;
}


/* Style The Dropdown Button */

.dropbtn {
  display: block;
  background-color: rgb(20, 149, 255);
  color: white;
  padding: 16px;
  font-size: 16px;
  border: none;
  cursor: pointer;
}


/* Dropdown button */

.dropdown {
  position: relative;
  float: left;
  margin-left: 20px;
}


/* Dropdown Content (Hidden by Default) */

.dropdown-content {
  display: none;
  position: absolute;
  background-color: #f9f9f9;
  min-width: 80px;
  box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
  z-index: 1;
}


/* Links inside the dropdown */

.dropdown-content a {
  color: black;
  padding: 12px 16px;
  text-decoration: none;
  display: block;
}


/* Change color of dropdown links on hover */

.dropdown-content a:hover {
  background-color: #f1f1f1
}


/* Show the dropdown menu on hover */

.dropdown:hover .dropdown-content {
  display: block;
}


/* Change the background color of the dropdown button when the dropdown content is shown */

.dropdown:hover .dropbtn {
  background-color: rgb(20, 149, 255);
}


/* Dropdown button ends here */
<div class="header">
  <h1 class="titleText">Shopping Project</h1>
  <div class="topnav">
    <form class="example" action="/action_page.php">
      <input type="text" placeholder="Search.." name="search">
      <button type="submit"><i class="fa fa-search"></i></button>
    </form>
  </div>
</div>
<br>
<br>
<div class="grid-container">
  <div class="item1">
    <div class="dropdown">
      <button class="dropbtn">Dropdown</button>
      <div class="dropdown-content">
        <a href="#">Link 1</a>
        <a href="#">Link 2</a>
        <a href="#">Link 3</a>
      </div>
    </div>
  </div>
  <div class="item2">Menu</div>
  <div class="item3">Main</div>
  <div class="item4">Right</div>
  <div class="item5">Footer</div>
  <div class="item6">Footer</div>
  <div class="item7">Footer</div>
</div>
1 голос
/ 11 февраля 2020

Позвольте мне показать вам ошибку. Если вы осмотрите элемент в инструментах разработчика, то увидите, что ваш .dropdown почти занят его полной шириной div image

Так что hover работает так, как должно быть. Итак, что я сделал здесь, это просто добавил ширину для .dropdown и также поместил ее влево.

.item1 {grid-area: header;}
.item2 {grid-area: menu;}
.item3 {grid-area: main;}
.item4 {grid-area: right;}
.item5 {grid-area: footer;}
.item6 {grid-area: footer2;}
.item7 {grid-area: footer3;}

.grid-container{
  display: grid;
  grid-template-areas:
    'header header header header header header'
    'menu main main main right right'
    'menu footer footer footer footer footer'
    'menu footer2 footer2 footer2 footer2 footer2'
    'menu footer3 footer3 footer3 footer3 footer3';
  grid-gap: 20px;
  background-color: #2196F3;
  padding: 20px;
  padding-bottom: 250px;
  margin-bottom: 120px;
}

.grid-container > div{
  background-color: rgba(255, 255, 255, 0.8);
  text-align: center;
  padding: 20px 0;
  font-size: 30px;
}

/* Style The Dropdown Button */
.dropbtn {
  margin-right: 1700px;
  display:block;
  background-color: rgb(20, 149, 255);
  color: white;
  padding: 16px;
  font-size: 16px;
  border: none;
  cursor: pointer;
}

/* Dropdown button */
.dropdown {
  position: relative;
  display: inline-block;
//Adding these two css properties to fix the issue
  float:left;
  width:150px; 
}

/* Dropdown Content (Hidden by Default) */
.dropdown-content {
  display: none;
  position: absolute;
  background-color: #f9f9f9;
  min-width: 80px;
  box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
  z-index: 1;
}

/* Links inside the dropdown */
.dropdown-content a {
  color: black;
  padding: 12px 16px;
  text-decoration: none;
  display: block;
}

/* Change color of dropdown links on hover */
.dropdown-content a:hover {background-color: #f1f1f1}

/* Show the dropdown menu on hover */
.dropdown:hover .dropdown-content {
  display: block;
}

/* Change the background color of the dropdown button when the dropdown content is shown */
.dropdown:hover .dropbtn {
  background-color: rgb(20, 149, 255);
}

/* Dropdown button ends here */
<div class="header">
          <h1 class="titleText">Shopping Project</h1>
          <div class="topnav">
              <form class="example" action="/action_page.php">
                <input type="text" placeholder="Search.." name="search">
                <button type="submit"><i class="fa fa-search"></i></button>
              </form>
          </div> 
        </div> 
        <br>
        <br>
        <div class="grid-container">
          <div class="item1">
            <div class="dropdown">
              <button class="dropbtn">Dropdown</button>
              <div class="dropdown-content">
                <a href="#">Link 1</a>
                <a href="#">Link 2</a>
                <a href="#">Link 3</a>
              </div>
            </div> 
          </div>
          <div class="item2">Menu</div>
          <div class="item3">Main</div>  
          <div class="item4">Right</div>
          <div class="item5">Footer</div>
          <div class="item6">Footer</div>
          <div class="item7">Footer</div>
        </div>
...