У меня есть ссылка на якорь на моей html-странице. При нажатии на ссылку страница прокручивается до якоря, так что якорь находится в самом верху видимой части страницы. Как я могу сделать так, чтобы страница прокручивалась так, чтобы якорь был в середине страницы?
HTML: создание ссылки, ведущей к якорю по центру страницы.
Ответы (10)
Я нашел решение привязывать ссылки с фиксированным заголовком, опубликованное Филиппом. , он веб-дизайнер. Филипп добавил новый ПУСТОЙ пролет в качестве позиции привязки.
<span class="anchor" id="section1"></span>
<div class="section"></div>
затем поместите следующий код css
.anchor{
display: block;
height: 115px; /*same height as header*/
margin-top: -115px; /*same height as header*/
visibility: hidden;
}
Спасибо, Филипп!
Поместите <span class="anchor" id="X">
, затем стилизуйте класс anchor
следующим образом:
.anchor {
position: absolute;
transform: translateY(-50vh);
}
С -50vh
якорь будет прокручиваться в середине экрана.
HTML:
<a id="anchor">NEWS</a>
CSS:
#anchor{
position: relative;
padding-top: 100px; //(whatever distance from the top of the page you want)
}
отлично работал для меня
Нет прямого способа сделать это в чистом html\css. Это возможно, используя js, получая верхнее расположение элемента и устанавливая верхнее положение страницы в положение этого элемента минус половина высоты страницы.
если вы хотите без пробела, сделайте это так:
<h2 id="jump_tag" style="padding-top: 500pt; margin-top: -500pt;"></h2>
но вам все равно придется регулировать высоту из javascript
Определите, какую часть страницы вы действительно хотите разместить вверху, и вместо этого поместите привязку туда. Вы не сможете изменить то, как браузеры интерпретируют якоря, по крайней мере, не расстроив своих пользователей.
Расширяя ответ charles.cc.hsu, мы можем сделать это для элементов произвольной высоты, используя модуль CSS vh
, который относительно высоты области просмотра.
HTML:
<span class="anchor" id="section1"></span>
<div class="section"></div>
CSS:
.anchor{
display: block;
height: 50vh; /* 50% viewport height */
margin-top: -50vh;
visibility: hidden;
}
vh
поддерживается в IE9 и более поздних версиях, поэтому его довольно безопасно использовать.
Поскольку «середина страницы» относится к размеру экрана и окна пользователя в любой момент времени, вам придется использовать Javascript для достижения этого, поскольку в чистом HTML/CSS нет способа получить вертикальный экран. ширина.
Я бы попробовал поставить отрицательное поле (или другой метод позиционирования), равное половине высоты страницы, для целевого тега привязки.
Firefox поддерживает установку свойства padding-top для именованного якоря. Оттуда вы можете установить файл cookie с помощью javascript, который содержит размеры браузера, и соответствующим образом настроить отступы на стороне сервера. Для конечного пользователя это будет выглядеть как чистый html/css, но noam прав в том, что для получения размеров браузера требуется немного JS, поскольку он не дает вам эту информацию без небольшого принуждения.