Неправильная работа якорей
Почему при клике на элемент, открывается новая страница вместо того, чтобы плавно скролить к соответствующему разделу на текущей странице?
В body в самом вверху вставляю меню:
/* Стили для меню навигации */
.nav {
font-family: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-size: 0.95em;
position: fixed;
top: 0;
right: 150px;
width: 300px;
height: 100vh;
overflow-y: auto;
background-color: #eee;
padding: 20px;
border-right: 1px solid #ccc;
text-align: left;
}
.nav ul {
list-style: none;
margin: 0;
padding: 0;
}
.nav a {
display: block;
padding: 10px 0;
text-decoration: none;
color: #333;
font-weight: bold;
}
.nav a:hover {
background-color: rgba(0, 0, 0, 0.418);
}
<nav class="nav">
<ul>
<li><a href="#section1">Секция 1</a></li>
<li><a href="#section2">Секция 2</a></li>
<li><a href="#section3">Секция 3</a></li>
<li><a href="#section4">Секция 4</a></li>
<li><a href="#section5">Секция 5</a></li>
<li><a href="#section6">Секция 6</a></li>
<li><a href="#section7">Секция 7</a></li>
<li><a href="#section8">Секция 8</a></li>
<li><a href="#section9">Секция 9</a></li>
<li><a href="#section10">Секция 10</a></li>
</ul>
</nav>
и прописываю id="section1" в дивах блоков:
<div class="block" id="section1">
...
...
</div>
Но при клике в меню навигации у меня открывается новая страница, но никак не скролится, почему?
Ответы (2 шт):
Автор решения: Евгений Ли
→ Ссылка
Вот у меня всё работает, при нажатии на Секцию 1 проматывает вниз
/* Стили для меню навигации */
.nav {
font-family: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-size: 0.95em;top: 0;
width: 100%;
height: 1200px;
background-color: #eee;
padding: 20px;
border-right: 1px solid #ccc;
text-align: left;
display:flex;
flex-direction: column;
justify-content: space-between;
}
.nav ul {
display: flex;
gap: 20px;
list-style: none;
margin: 0;
padding: 0;
}
.nav a {
display: block;
padding: 10px 0;
text-decoration: none;
color: #333;
font-weight: bold;
}
.nav a:hover {
background-color: rgba(0, 0, 0, 0.418);
}
<nav class="nav">
<ul>
<li><a href="#section1">Секция 1</a></li>
<li><a href="#section2">Секция 2</a></li>
<li><a href="#section3">Секция 3</a></li>
<li><a href="#section4">Секция 4</a></li>
<li><a href="#section5">Секция 5</a></li>
<li><a href="#section6">Секция 6</a></li>
<li><a href="#section7">Секция 7</a></li>
<li><a href="#section8">Секция 8</a></li>
<li><a href="#section9">Секция 9</a></li>
<li><a href="#section10">Секция 10</a></li>
</ul>
<div id="section1">Якорь</div>
</nav>
Автор решения: Air
→ Ссылка
Все должно работать
/* Стили для меню навигации */
.nav {
font-family: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-size: 0.95em;
position: fixed;
top: 0;
right: 150px;
width: 300px;
height: 100vh;
overflow-y: auto;
background-color: #eee;
padding: 20px;
border-right: 1px solid #ccc;
text-align: left;
}
.nav ul {
list-style: none;
margin: 0;
padding: 0;
}
.nav a {
display: block;
padding: 10px 0;
text-decoration: none;
color: #333;
font-weight: bold;
}
.nav a:hover {
background-color: rgba(0, 0, 0, 0.418);
}
.section {
height: 300px;
background: red;
}
<nav class="nav">
<ul>
<li><a href="#section1">Секция 1</a></li>
<li><a href="#section2">Секция 2</a></li>
<li><a href="#section3">Секция 3</a></li>
<li><a href="#section4">Секция 4</a></li>
<li><a href="#section5">Секция 5</a></li>
<li><a href="#section6">Секция 6</a></li>
<li><a href="#section7">Секция 7</a></li>
<li><a href="#section8">Секция 8</a></li>
<li><a href="#section9">Секция 9</a></li>
<li><a href="#section10">Секция 10</a></li>
</ul>
</nav>
<div>
<div class="section" id="section1">section1</div>
<div class="section" id="section2">section2</div>
<div class="section" id="section3">section3</div>
<div class="section" id="section4">section4</div>
<div class="section" id="section5">section5</div>
<div class="section" id="section6">section6</div>
<div class="section" id="section7">section7</div>
<div class="section" id="section8">section8</div>
<div class="section" id="section9">section9</div>
<div class="section" id="section10">section10</div>
</div>