Помогите реализоаать: все сылки на сайт открывают его с самого вверху, а вот все внутренее переходы должны открывать ниже шапки скрол 600px.
Если я правильно понял, нужно чтоб шапка оставалась одинаковой на всех страницах, а контент менялся в зависимости от передаваемых параметров? Не?
попробую объяснить подробней: есть сайт многостраничный, верхняя часть "шапка" на весь экран и контент тоже внушительной высоты. Стоит задача при первом визите зайдя на любую страницу сайта пользователь видит сайт с самого верху, а совершая внутренние переходы ему открывается страница прокрученная на высоту шапки, конечно если есть желание можно прокрутить вверх и увидеть шапку).
Ну как вариант - поставить после шапки якорь, ко всем внутренним ссылкам добавлять ссылку на этот якорь. Или же проверять HTTP_REFERER, если он - сторонний сайт - ничего, а если нет - то с помощью js прокручивать экран на высоту шапки.
а можно объеденить первый способ и второй чтобы не использовать js. Проверять HTTP_REFERER, если он - сторонний сайт - ничего, а если нет - то поставить после шапки якорь и переходить к нему?
Не вопрос. Если HTTP_REFERER твой сайт - делать header ('Location: mysite/page#anchor') --- Добавлено --- Но мне этот способ не нравится, т.к. он оставляет #якорря в адресной строке. (Щас сурикат начнёт рассказывать что адресная строка для того и дадена чтоб её засирать)
@SamyRed, а мне HTTP_REFERER не нравится. Пользовался им когда-нибудь? Знаешь как он тупить может?) без js можно с якорями. Тогда они будут в ссылке (кстати, что в принципе правильно. Пользователь при желании видит, куда он идёт). А можно прикрутить какой-нибудь jquery и листать до якоря с помощью него. Тогда можно избежать якоря в ссылке
Ну без хттп_реферера можно, конечно, но заморочно. Мне тоже хттп_реферер не нравится, т.к. он может просто напросто отсутствовать. Я, может, не хочу никому говорить откуда я пришёл...
ребята так запутали) вот не охото js использовать и якорями портить ссылки тоже, а с CSS и PHP нет не каких вариантов?
А чё на php? Может вообще на html написать? Не, лучше на xhtml1.0. Зачем использовать php Он не нужен совсем. А css и подавно. Фигню всякую напридумали, нормальным людям мозги забивают. Тут шапку надо подвинуть, а они со своими жабоскриптами и реферерами какими-то... Не знаю что и думать. Почему бы не использовать js как все нормальные люди? Нет блин, надо выебнуться...
Тогда немноооого так непонятно, почему нельзя использовать #anchor, но можно использовать ?anchor.... (Идиотский вопрос ) --- Добавлено --- Есть ещё 1 минус. Если я захочу дать кому-то такую ссылку, мне прийдётся вручную вырезать "?anchor", иначе у того, кому я её передам шапка не загрузится не смотря на то что он пришёл с другого сайта.
я новичок в этом очень мало что понимаю, начал эту тему для познания истеного рационального решения, если это найлучший вариант, помогите его реализовать?
с якорями то же самое. Лучшие варианты тебе не нравятся. --- Добавлено --- А как через JS можно сделать что то понять не могу. Ты же на серваке будешь определять, от куда пришел клиент. --- Добавлено --- единственный разумный вариант ИМХО - referer. Если не придет - придется скроллить) что тут поделаешь... Не так это и критично.
Короче, только что сам понял что HTTP_REFERER лучше вообще не использовать и забыть что это такое (Кроме случаев если нужно узнать страницу с ЭТОГО же сайта). Почти все браузеры его тупо блокируют. Только что пытался сделать простенькую статистику посещений (Типа откуда человек пришёл), а оказывается, этот заголовок вообще не приходит. Приходит только если обновляю страницу, или при внутренних переходах. НО! Т.к. нам нужно проверить именно внутренние переходы, делаем что-то типа: PHP: if (document.referrer == site) { window.scrollTo (0, 100); } --- Добавлено --- Я тольк не понимаю почему этот код не выполняется.... Не удовлетворяется условие, хотя строки я указал абсолютно одинаковые. (В переменной site - мой домен.) --- Добавлено --- В общем, работает. Это я тупонул. Вместо перехода по ссылке просто страницу перезагружал. Но лучше делать так: PHP: if (document.referrer) { refurl = document.referrer; refdomain = refurl.match(/:\/\/(.[^/]+)/)[1]; if (refdomain === 'МойСайт.ПЗД') { window.scrollTo (0, 100); } }
спасибо все работает, подскажите только как скрол расчитать правильно у меня шапка высатой: height:700px;min-height:100vh; и еще один div: height:200px, при мобильной адаптации этот div: height:520px, а шапка высатой: height:480px;min-height:100vh .Вот страница должна открыться ниже их.
Можно получить значение высоты нужных элементов, сложить их и промотать на полученное значение. Код (Javascript): //JQuery var height = $('#Top').css("height"); // Вернет высоту элемента с id="Top"
Просто $('элемент').height (); или: $('Элемент который после шапки').top (); Но это JQuery. Его нужно или скачивать, или подключать со стороннего ресурса: <script src="https://code.jquery.com/jquery-3.2.0.js"></script> - это в <head></head>
У меня JQuery подключен, Дивы .header и .advantage, подскажите как правильно просумировать их высоту и вставить в скрипт?
Какой элемент у тебя после хедера, и всей остальной херни, которую надо пропустить? Вот его id, или класс и пиши. А просуммировать: var height = $('.header').height() + $('.advantage').height();
Код (Javascript): var height = $('.header').height() + $('.advantage').height(); - это мы просуммировали их высоту, вот ее и нужно пропустить. А как эту высоту в этот скрипт добавить? Код (Javascript): if (document.referrer) { refurl = document.referrer; refdomain = refurl.match(/:\/\/(.[^/]+)/)[1]; if (refdomain === 'МойСайт.ПЗД') { window.scrollTo (0, 100); } }
вот так работает, это правильный срипт? Код (Javascript): <script> if (document.referrer) { refurl = document.referrer; refdomain = refurl.match(/:\/\/(.[^/]+)/)[1]; if (refdomain === 'vdmy.ru') { var height = $('.header').height() + $('.advantage').height(); $("body").animate({"scrollTop":height}); } } </script>