Невозможно использовать положение: липкий; при добавлении элемента через .innerHTML - PullRequest
0 голосов
/ 24 марта 2020

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

document.getElementById('menu-js').innerHTML = `<div id="menu">
	<div class="dropdown">
			<button class="dropbtn">Button_1</button>
			<div class="dropdown-content">
				<a href="/src">Link 1</a>
				<a href="/src">Link 2</a>
				<a href="/src">Link 3</a>
			</div>
		</div>
	<div class="dropdown">
		<button class="dropbtn">Button_2</button>
		<div class="dropdown-content">
			<a href="/src">Link 4</a>
			<a href="/src">Link 5</a>
			<a href="/src">Link 6</a>
		</div>
	</div>
</div>`
@import url('https://fonts.googleapis.com/css?family=Abril+Fatface|Arsenal|Rubik&display=swap');
#menu {
  background-color: white;
  top: 0px;
  left: 0px;
  position: sticky;
  padding-left: 10px;
  margin-top: -8px;
  margin-left: -30px;
  margin-right: -0.51%;
  border-bottom-color: black;
  border-bottom-style: solid;
  border-bottom: 5px;
}

.dropbtn {
  background-color: white;
  color: black;
  padding: 16px;
  font-size: 16px;
  border: none;
  margin: none;
  font-family: 'Arsenal';
}

.dropdown {
  display: inline-block;
}

.dropdown-content {
  display: none;
  position: absolute;
  background-color: #f2d3d8;
  min-width: 200px;
  z-index: 1;
  font-family: 'Arsenal';
}

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

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

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

.dropdown:hover .dropbtn {
  background-color: #c06014;
  color: white;
}

#page-container {
  position: relative;
  min-height: 100vh;
}

#content-wrap {
  padding-bottom: 2.5rem;
}

footer {
  position: absolute;
  bottom: 0;
  width: 100%;
  height: 2.5rem;
}

hr {
  margin-left: -20px;
  color: #c06014
}
<html>

<head>
  <title>TITLE</title>
  <link rel="stylesheet" type="text/css" href="style.css">
</head>

<body>
  <div id='page-container'>
    <div id='content-wrap'>
      <h1>Content above menu</h1>
      <div id='menu-js'></div>
      <h1>body</h1>
      <h2>body</h2>
    </div>
    <footer>
      <hr>FOOTER</footer>
  </div>
  <script src='menu.js'></script>
</body>

</html>

Если возможно, я хотел бы использовать только эти три языка. Спасибо!

1 Ответ

0 голосов
/ 24 марта 2020

Ваш код кажется почти идеальным с точки зрения липкости. Попробуйте добавить свойство max-height (значение в пикселях) к menu-js div.

...