Как я могу сделать так, чтобы jQuery функция слайда перестала двигать мои другие элементы div? - PullRequest
0 голосов
/ 24 января 2020

У меня есть четыре div, в которых есть неупорядоченные списки. Для их неупорядоченных списков задано значение display: none, поэтому при наведении курсора на родительские элементы списка списки скользят вниз (используя jQuery slideToggle()).

Это все работает нормально, за исключением проблемы, когда другие три элемента делятся на функцию слайдера. Я хочу, чтобы все div остались на своих местах, когда список выскользнет.

$(document).ready(function() {
  $("#school").hover(function() {
    $("#schoolList").slideToggle("fast");
  });
  $("#entertainment").hover(function() {
    $("#entertainmentList").slideToggle("fast");
  });
  $("#programming").hover(function() {
    $("#programmingList").slideToggle("fast");
  });
  $("#projects").hover(function() {
    $("#projectList").slideToggle("fast");
  });
});
html,
body {
  overflow: hidden;
  background-color: #53a8ed;
  color: white;
  font-family: 'Dosis', sans-serif;
  letter-spacing: 2px;
  font-weight: bolder;
  margin: 0 auto;
}

#title {
  margin: 0 auto;
  line-height: 150px;
  font-size: 48px;
  height: 150px;
  text-align: center;
  background-color: #0c5591;
}

.contentHeader {
  font-size: 24px;
}

.category {
  width: 250px;
  margin: 0 2%;
  background-color: #0c5591;
  display: inline-block;
}

#content {
  margin-top: 175px;
  text-align: center;
}

.list {
  display: none;
  text-align: center;
  /* margin-left: -12%; */
  font-size: large;
  line-height: 50px;
  list-style-type: none;
}

a {
  color: white;
}

a:hover {
  color: #9ad0fc;
}

#googleSearch {
  position: absolute;
  left: 50%;
  margin-left: -375px;
  top: 27.5%;
  display: flex;
  flex-direction: row;
}

#searchBar {
  width: 700px;
  height: 40px;
  border-radius: 25px 0 0 25px;
  ;
  border: none;
  flex-grow: 2;
}

#searchBar:focus {
  outline: none;
}

#searchBar[type=text] {
  padding-left: 15px;
  font-family: 'Dosis';
  font-size: 16px;
  letter-spacing: 0.5px;
}

#goButton {
  width: 50px;
  border: none;
  background: #0c5591;
  color: white;
  border-radius: 0 25px 25px 0;
  font-family: 'Dosis';
  font-size: 16px;
  letter-spacing: 0.5px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<link href="https://fonts.googleapis.com/css?family=Dosis&display=swap" rel="stylesheet">

<h1 id="title">Home</h1>
<form id="googleSearch" action="https://www.google.com/search" method="GET">
  <input id="searchBar" type="text" name="q" placeholder="Search">
  <button id="goButton" type="submit">Go</button>
</form>
<div id="content">
  <div id="school" class="category">
    <h3 class="contentHeader">School</h3>
    <ul id="schoolList" class="list">
      <li><a href="https://app.schoology.com/home">Schoology</a></li>
      <li><a href="https://drive.google.com/drive/my-drive">Google Drive</a></li>
      <li><a href="https://plusportals.com/gmhs">Plus Portals</a></li>
      <li><a href="https://owl.purdue.edu/owl/research_and_citation/mla_style/mla_formatting_and_style_guide/mla_formatting_and_style_guide.html">MLA
                            Citation</a></li>
    </ul id="schoolList" class="list">
  </div>
  <div id="entertainment" class="category">
    <h3 class="contentHeader">Entertainment</h3>
    <ul id="entertainmentList" class="list">
      <li><a href="https://www.youtube.com/">Youtube</a></li>
      <li><a href="https://www.netflix.com">Netflix</a></li>
    </ul>
  </div>
  <div id="programming" class="category">
    <h3 class="contentHeader">Programming</h3>
    <ul id="programmingList" class="list">
      <li><a href="">cPanel</a>
      </li>
      <li><a href="">NameCheap</a>
      </li>
      <li><a href="">Github</a></li>
      <li><a href="">Khan
                            Academy</a></li>
      <li><a href="https://www.udemy.com/home/my-courses/learning/">uDemy</a></li>
      <li><a href="https://www.mediacollege.com/linux/command/linux-command.html">Linux Commands</a></li>
    </ul>
  </div>
  <div id="projects" class="category">
    <h3 class="contentHeader">Projects</h3>
    <ul id="projectList" class="list">
      <li><a href="chrome://extensions/">Extensions</a></li>
      <li><a href="http://www.grahambillington.com/pong">Pong</a></li>
    </ul>
  </div>
</div>

Ответы [ 2 ]

0 голосов
/ 24 января 2020

Проблема вызвана контейнером. Изменяя отображение на «inline-grid», div будет вести себя лучше. Тем не менее, у вас все равно будет не так, как вы хотите. Мое лучшее предположение из-за "положения" элемента. Вы можете избежать неприятностей, управляя содержащимися элементами с помощью «position: absolute» или создавая представление списка, а не столбцы и строки.

.category {
  width: 250px;
  margin: 0 2%;
  background-color: #0c5591;
  display: inline-grid;
}
0 голосов
/ 24 января 2020

Я исправил эту проблему, добавив вертикальное выравнивание к родительскому div:

.category {
   width: 250px;
   margin: 0 2%;
   background-color: #0c5591;
   display: inline-block;
   vertical-align: top;
}

Это выравнивает все div относительно верхней части других окружающих div.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...