Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/96: Рейтинг темы: голосов - 96, средняя оценка - 4.84
1 / 1 / 0
Регистрация: 10.10.2014
Сообщений: 11

Прокрутка на определённую высоту при клике

10.10.2014, 21:40. Показов 18843. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Прошу помощи.
Есть шапка в 490px, в ней, внизу, меню, а далее, ниже идёт страница сайта, которую не видно.
Нужно, чтобы при клике на пункт меню, страница прокручивалась на 490px.
Чтобы меню оказалось сверху, и видно страницу.

Элемент меню #sdt_menu > li

Пользуюсь таким скриптом, но после того как покрутился, он сразу возвращается в исходное состояние.

JavaScript
1
2
3
4
5
jQuery(document).ready(function(){
    jQuery('#sdt_menu > li').click(function() {
        window.scrollTo( 0, 490 );
    });
});
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.10.2014, 21:40
Ответы с готовыми решениями:

Прокрутка при клике по эллементу
Как при клике на эллемент прокрутить страницу вверх на 1 пиксель, не зависимо от текущей позиции? На сколько я понимаю, необходимо...

Плавная прокрутка при клике
Здравствуйте!) Делаю якоря через "data" (мне удобнее), хотел сделать плавную прокрутку к объекту с id #three, но ничего не получается( ...

При клике менять высоту
Есть две кнопки при клике на которых к существующей высоте добавляется 100px, но кнопка срабатывает всего 1 раз ...

16
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
10.10.2014, 23:39
Смотрите такой вариант. Селекторы, разумеется, что пропишите свои.
JavaScript
1
2
3
4
5
6
7
var nav = $('nav');
$('a', nav).on('click', function(e){
    e.preventDefault();
    $('html, body').animate({
        scrollTop: nav.offset().top
    }, 1000);
});
Но если ссылки вас работают в обычном режиме, т.е. по клику происходит переход на другую страницу, то ловить нужно в другом месте.
1
1 / 1 / 0
Регистрация: 10.10.2014
Сообщений: 11
11.10.2014, 10:33  [ТС]
Большое спасибо, работает, единственное, когда нажимаешь на пункты меню, не загружаются страницы, которые привязаны к пунктам. Не могу понять почему?

Добавлено через 7 минут
А ещё, как сделать так, чтобы страница опускалась именно на определённую высоту в пикселях?

Добавлено через 13 минут
Сделал так:

JavaScript
1
2
3
4
5
var nav = $('nav');
$('a', nav).on('click', function(e){
    e.preventDefault();
    window.scrollTo( 0, 400 );
});
Но проблема с тем, что не грузит страницы по ссылкам в меню, актуальна.

Добавлено через 8 минут
Мне кажется дело в preventDefault, но не могу понять, как исправить.
1
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
11.10.2014, 12:11
Цитата Сообщение от zoomcool7 Посмотреть сообщение
Но проблема с тем, что не грузит страницы по ссылкам в меню
Я же вам об этом и писал выше. Если вы не подгружаете контент страницы с помощью Ajax, а ссылки работают как обычно - по клику идёт переход, страница перезагружается полностью - то решать вашу задачу нужно по другому. Например, проверять URL и, если адрес соответствует определенным условиям, то после загрузки страницы, прокручивать на уровень меню. В других же случаях - оставлять как есть.
1
1 / 1 / 0
Регистрация: 10.10.2014
Сообщений: 11
11.10.2014, 14:25  [ТС]
Не могли бы вы написать мне правильный код, готов 100 рублей на телефон кинуть)

Есть меню
Кликните здесь для просмотра всего текста
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<ul id="sdt_menu" class="sdt_menu">
 <li>
 <a href="$HOME_PAGE_LINK$">
 <img src="http://fitswim.ucoz.ru/images/2.jpg" alt=""/>
 <span class="sdt_active"></span>
 <span class="sdt_wrap">
 <span class="sdt_link">Обо мне</span>
 <span class="sdt_descr">Личный тренер</span>
 </span>
 </a>
 </li>
 <li>
 <a href="http://fitswim.ucoz.ru/index/sportivnoe_plavanie/0-4">
 <img src="http://fitswim.ucoz.ru/images/1.jpg" alt=""/>
 <span class="sdt_active"></span>
 <span class="sdt_wrap">
 <span class="sdt_link">Спортивное плавание</span>
 <span class="sdt_descr">My work</span>
 </span>
 </a>
 <div class="sdt_box">
 <a href="#">Websites</a>
 <a href="#">Illustrations</a>
 <a href="#">Photography</a>
 </div>
 </li>
 <li>
 <a href="http://fitswim.ucoz.ru/index/akvafitnes/0-5">
 <img src="http://fitswim.ucoz.ru/images/3.jpg" alt=""/>
 <span class="sdt_active"></span>
 <span class="sdt_wrap">
 <span class="sdt_link">Аквафитнес</span>
 <span class="sdt_descr">Where ideas get born</span>
 </span>
 </a>
 </li>
 <li>
 <a href="http://fitswim.ucoz.ru/index/reabilitacija/0-6">
 <img src="http://fitswim.ucoz.ru/images/4.jpg" alt=""/>
 <span class="sdt_active"></span>
 <span class="sdt_wrap">
 <span class="sdt_link">Реабилитация</span>
 <span class="sdt_descr">I like to photograph</span>
 </span>
 </a>
 </li>
 <li>
 <a href="http://fitswim.ucoz.ru/index/dajving/0-7">
 <img src="http://fitswim.ucoz.ru/images/5.jpg" alt=""/>
 <span class="sdt_active"></span>
 <span class="sdt_wrap">
 <span class="sdt_link">Дайвинг</span>
 <span class="sdt_descr">I write about design</span>
 </span>
 </a>
 </li>
 <li>
 <a href="#">
 <img src="http://fitswim.ucoz.ru/images/6.jpg" alt=""/>
 <span class="sdt_active"></span>
 <span class="sdt_wrap">
 <span class="sdt_link">Новости</span>
 <span class="sdt_descr">I like to code</span>
 </span>
 </a>
 <div class="sdt_box">
 <a href="#">Job Board Website</a>
 <a href="#">Shopping Cart</a>
 <a href="#">Interactive Maps</a>
 </div>
 </li>
 </ul>


И классы
Кликните здесь для просмотра всего текста
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
ul.sdt_menu{
 margin:0;
 padding:0;
 list-style: none;
 font-family:"Myriad Pro", "Trebuchet MS", sans-serif;
 font-size:14px;
 width:1020px;
 
}
ul.sdt_menu a{
 text-decoration:none;
 outline:none;
}
ul.sdt_menu li{
 float:left;
 width:170px;
 height:85px;
 position:relative;
 cursor:pointer;
}
ul.sdt_menu li > a{
 position:absolute;
 top:0px;
 left:0px;
 width:170px;
 height:85px;
 z-index:12;
 background: #111;
 -moz-box-shadow:0px 0px 2px #000 inset;
 -webkit-box-shadow:0px 0px 2px #000 inset;
 box-shadow:0px 0px 2px #000 inset;
}
ul.sdt_menu li a img{
 border:none;
 position:absolute;
 width:0px;
 height:0px;
 bottom:0px;
 left:85px;
 z-index:100;
 -moz-box-shadow:0px 0px 4px #000;
 -webkit-box-shadow:0px 0px 4px #000;
 box-shadow:0px 0px 4px #000;
}
ul.sdt_menu li span.sdt_wrap{
 position:absolute;
 top:25px;
 left:0px;
 width:170px;
 height:60px;
 z-index:15;
}
ul.sdt_menu li span.sdt_active{
 position:absolute;
 background:#111;
 top:85px;
 width:170px;
 height:0px;
 left:0px;
 z-index:14;
 -moz-box-shadow:0px 0px 4px #000 inset;
 -webkit-box-shadow:0px 0px 4px #000 inset;
 box-shadow:0px 0px 4px #000 inset;
}
ul.sdt_menu li span span.sdt_link,
ul.sdt_menu li span span.sdt_descr,
ul.sdt_menu li div.sdt_box a{
 margin-left:15px;
 text-transform:uppercase;
 text-shadow:1px 1px 1px #000;
}
ul.sdt_menu li span span.sdt_link{
 color:#fff;
 font-size:18px;
 float:left;
 clear:both;
}
ul.sdt_menu li span span.sdt_descr{
 color:#0B75AF;
 float:left;
 clear:both;
 width:155px; /*For dumbass IE7*/
 font-size:10px;
 letter-spacing:1px;
}
ul.sdt_menu li div.sdt_box{
 display:block;
 position:absolute;
 width:170px;
 overflow:hidden;
 height:170px;
 top:85px;
 left:0px;
 display:none;
 background:#000;
 z-index: 10;
}
ul.sdt_menu li div.sdt_box a{
 float:left;
 clear:both;
 line-height:30px;
 color:#0B75AF;
}
ul.sdt_menu li div.sdt_box a:first-child{
 margin-top:15px;
}
ul.sdt_menu li div.sdt_box a:hover{
 color:#fff;
}


От верха до меню 490x, там рекламная информация, и получается внизу меню торчит, а далее контент, который не видно, пока не проскролишь. А нужно, чтобы при клике на меню, страница опускалась на 400px. Чтобы текст контента увидеть.

http://fitswim.ucoz.ru/
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
11.10.2014, 14:58
Цитата Сообщение от zoomcool7 Посмотреть сообщение
готов 100 рублей на телефон кинуть
Такие бешеные деньги, у меня рука не поднимется взять.
Пробуйте так сделать:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var nav = $('nav');
function preloadScroll(ls){
    if(ls !== null){
        $('html, body').animate({
            scrollTop: nav.offset().top
        }, 1000);
        localStorage.removeItem('scrollto');
    }
    return false;
}
function setScroll(){
    localStorage.setItem('scrollto', 1);
}
preloadScroll( localStorage.getItem('scrollto') );
$('a', nav).on('click', setScroll);
Добавлено через 8 минут
P.S. В первой строке измените на:
JavaScript
1
var nav = $('#sdt_menu');
1
1 / 1 / 0
Регистрация: 10.10.2014
Сообщений: 11
11.10.2014, 16:55  [ТС]
Я очень вам благодарен! Всё работает. Но, в идеале, сделать так, чтобы прокручивалось на 400px, поскольку в меню появляются картинки при наводке, и они не видны, если всё опускается до линни меню.

Нужно что-то вроде этого наверно, только при клике на меню.

JavaScript
1
2
3
4
window.onload = function()
{
window.scrollTo( 0, 400 );
}
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
11.10.2014, 17:14
Лучший ответ Сообщение было отмечено zoomcool7 как решение

Решение

Цитата Сообщение от zoomcool7 Посмотреть сообщение
Но, в идеале, сделать так, чтобы прокручивалось на 400px
Вместо nav.offset().top написать 400
1
1 / 1 / 0
Регистрация: 10.10.2014
Сообщений: 11
11.10.2014, 17:40  [ТС]
Спасибо! А реально сделать так, чтобы после первого перехода по ссылке в меню, и опускания, страницы грузились уже, с уровня 400px, при дальнейшем использовании меню?
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
11.10.2014, 18:06
Цитата Сообщение от zoomcool7 Посмотреть сообщение
А реально сделать так, чтобы ...
Реально. Вместо LocalStorage используете cookie, где для expire установить "0". При первом заходе пишем в печеньку метку, на которую ориентируемся при переходах по ссылкам.
1
1 / 1 / 0
Регистрация: 10.10.2014
Сообщений: 11
11.10.2014, 19:24  [ТС]
Если бы я знал язык java script, это было бы может и реально)
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
11.10.2014, 19:45
Цитата Сообщение от zoomcool7 Посмотреть сообщение
Если бы я знал язык java script
Я тоже не асс, но если бы перешли по ссылке, которую я вам дал выше, то всё бы легко нашли.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var nav = $('#sdt_menu');
function getCookie(name) {
  var re = /([\.$?*|{}\(\)\[\]\\\/\+^])/g,
      matches = document.cookie.match(new RegExp(
          "(?:^|; )" + name.replace(re, '\\$1') + "=([^;]*)"
          ));
  return matches ? decodeURIComponent(matches[1]) : undefined;
}
function checkCookie(vis){
    if(typeof vis != 'undefined'){
        $(window).scrollTop(400);
    }
    return false;
}
function setCookie(){
    document.cookie = 'visit=1; path=/;';
}
checkCookie( getCookie('visit') );
$('a', nav).on('click', setCookie);
1
1 / 1 / 0
Регистрация: 10.10.2014
Сообщений: 11
11.10.2014, 20:14  [ТС]
Я перешёл, но там какие-то загагулины страшные написаны)

Что-то не работает, ничего не происходит вообще(
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
11.10.2014, 20:39
Цитата Сообщение от zoomcool7 Посмотреть сообщение
Что-то не работает
Весь JS-код оберните в DOM-Ready:
JavaScript
1
2
3
$(function(){
    // тут весь код
});
0
1 / 1 / 0
Регистрация: 10.10.2014
Сообщений: 11
11.10.2014, 20:45  [ТС]
Заработало, но теперь страница в первый раз грузится уже с опуском в 400px(
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
11.10.2014, 20:47
Цитата Сообщение от zoomcool7 Посмотреть сообщение
но теперь страница в первый раз грузится уже с опуском в 400px
Закройте браузер и откройте еще раз - будет без прокрутки. Когда хоть один раз кликните по ссылке меню, то уже будет с прокруткой.
1
1 / 1 / 0
Регистрация: 10.10.2014
Сообщений: 11
12.10.2014, 14:43  [ТС]
Спасибо за помощь! Я очень благодарен! Всё работает!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.10.2014, 14:43
Помогаю со студенческими работами здесь

При клике на <textarea> увеличить ее высоту в px
Здравствуйте уважаемые форумчане. Собственно сабж... как такое реализовать без jQuery? И еще вопрос - можно ли реализовать...

При клике на определенную ссылку выделяется другая
Народ помогите понять я совсем новенький в веб-программировании поэтому вопрос, при клики на необходимую ссылку выделяется контуром, но...

Запуск макроса при клике на определенную ячейку
Всем доброго вечера. Не могу никак сообразить макрос. Задача: На листе в разных строках может встречаться слово &quot;Итог&quot;. ...

Перемещение обьекта в определенную сторону при клике на кнопку
Пытаюсь понять, как мне написать скрипт, который бы манипулировал данными css. Есть две кнопки. нажимая на одну длинный блок меняет свое...

Как сделать чтобы при клике прокрутка была внизу?
При клике на button мне нужно чтобы scroll всего документа уходила вниз. такой метод не работает, помогите пжл ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru