За последние 24 часа нас посетили 25267 программистов и 1740 роботов. Сейчас ищут 1157 программистов ...

Все внутренее переходы открывать ниже шапки скрол 600px

Тема в разделе "PHP для новичков", создана пользователем fxtalant, 15 мар 2017.

  1. fxtalant

    fxtalant Активный пользователь

    С нами с:
    15 мар 2017
    Сообщения:
    23
    Симпатии:
    0
    Адрес:
    Россия, Москва, Радужная улица, 15, корп. 1
    Помогите реализоаать: все сылки на сайт открывают его с самого вверху, а вот все внутренее переходы должны открывать ниже шапки скрол 600px.
     
  2. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Если я правильно понял, нужно чтоб шапка оставалась одинаковой на всех страницах, а контент менялся в зависимости от передаваемых параметров? Не?
     
  3. fxtalant

    fxtalant Активный пользователь

    С нами с:
    15 мар 2017
    Сообщения:
    23
    Симпатии:
    0
    Адрес:
    Россия, Москва, Радужная улица, 15, корп. 1
    попробую объяснить подробней: есть сайт многостраничный, верхняя часть "шапка" на весь экран и контент тоже внушительной высоты. Стоит задача при первом визите зайдя на любую страницу сайта пользователь видит сайт с самого верху, а совершая внутренние переходы ему открывается страница прокрученная на высоту шапки, конечно если есть желание можно прокрутить вверх и увидеть шапку).
     
  4. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Ну как вариант - поставить после шапки якорь, ко всем внутренним ссылкам добавлять ссылку на этот якорь.

    Или же проверять HTTP_REFERER, если он - сторонний сайт - ничего, а если нет - то с помощью js прокручивать экран на высоту шапки.
     
  5. fxtalant

    fxtalant Активный пользователь

    С нами с:
    15 мар 2017
    Сообщения:
    23
    Симпатии:
    0
    Адрес:
    Россия, Москва, Радужная улица, 15, корп. 1
    а можно объеденить первый способ и второй чтобы не использовать js. Проверять HTTP_REFERER, если он - сторонний сайт - ничего, а если нет - то поставить после шапки якорь и переходить к нему?
     
  6. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Не вопрос. Если HTTP_REFERER твой сайт - делать header ('Location: mysite/page#anchor')
    --- Добавлено ---
    Но мне этот способ не нравится, т.к. он оставляет #якорря в адресной строке. (Щас сурикат начнёт рассказывать что адресная строка для того и дадена чтоб её засирать:))
     
  7. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    @SamyRed, а мне HTTP_REFERER не нравится. Пользовался им когда-нибудь? Знаешь как он тупить может?)
    без js можно с якорями. Тогда они будут в ссылке (кстати, что в принципе правильно. Пользователь при желании видит, куда он идёт). А можно прикрутить какой-нибудь jquery и листать до якоря с помощью него. Тогда можно избежать якоря в ссылке
     
  8. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Ну без хттп_реферера можно, конечно, но заморочно.

    Мне тоже хттп_реферер не нравится, т.к. он может просто напросто отсутствовать. Я, может, не хочу никому говорить откуда я пришёл...
     
  9. fxtalant

    fxtalant Активный пользователь

    С нами с:
    15 мар 2017
    Сообщения:
    23
    Симпатии:
    0
    Адрес:
    Россия, Москва, Радужная улица, 15, корп. 1
    ребята так запутали) вот не охото js использовать и якорями портить ссылки тоже, а с CSS и PHP нет не каких вариантов?
     
  10. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    А чё на php? Может вообще на html написать? Не, лучше на xhtml1.0. Зачем использовать php Он не нужен совсем. А css и подавно. Фигню всякую напридумали, нормальным людям мозги забивают. Тут шапку надо подвинуть, а они со своими жабоскриптами и реферерами какими-то... Не знаю что и думать.

    Почему бы не использовать js как все нормальные люди? Нет блин, надо выебнуться...
     
  11. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    $_GET:
    + Без якорей
    + Без JS
    + Без HTTP_REFERER

    - идиотский вариант.

    Итого: всего один минус.
     
    SamyRed нравится это.
  12. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Тогда немноооого так непонятно, почему нельзя использовать #anchor, но можно использовать ?anchor.... (Идиотский вопрос :))
    --- Добавлено ---
    Есть ещё 1 минус. Если я захочу дать кому-то такую ссылку, мне прийдётся вручную вырезать "?anchor", иначе у того, кому я её передам шапка не загрузится не смотря на то что он пришёл с другого сайта.
     
    TeslaFeo нравится это.
  13. fxtalant

    fxtalant Активный пользователь

    С нами с:
    15 мар 2017
    Сообщения:
    23
    Симпатии:
    0
    Адрес:
    Россия, Москва, Радужная улица, 15, корп. 1
    я новичок в этом очень мало что понимаю, начал эту тему для познания истеного рационального решения, если это найлучший вариант, помогите его реализовать?
     
  14. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    с якорями то же самое.
    Лучшие варианты тебе не нравятся.
    --- Добавлено ---
    А как через JS можно сделать что то понять не могу. Ты же на серваке будешь определять, от куда пришел клиент.
    --- Добавлено ---
    единственный разумный вариант ИМХО - referer. Если не придет - придется скроллить) что тут поделаешь...
    Не так это и критично.
     
  15. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Короче, только что сам понял что HTTP_REFERER лучше вообще не использовать и забыть что это такое (Кроме случаев если нужно узнать страницу с ЭТОГО же сайта). Почти все браузеры его тупо блокируют. Только что пытался сделать простенькую статистику посещений (Типа откуда человек пришёл), а оказывается, этот заголовок вообще не приходит. Приходит только если обновляю страницу, или при внутренних переходах.

    НО! Т.к. нам нужно проверить именно внутренние переходы, делаем что-то типа:
    PHP:
    1.     if (document.referrer == site) {
    2.         window.scrollTo (0, 100);
    3.     }
    --- Добавлено ---
    Я тольк не понимаю почему этот код не выполняется.... Не удовлетворяется условие, хотя строки я указал абсолютно одинаковые. (В переменной site - мой домен.)
    --- Добавлено ---
    В общем, работает. Это я тупонул. Вместо перехода по ссылке просто страницу перезагружал. Но лучше делать так:
    PHP:
    1.     if (document.referrer) {
    2.        refurl = document.referrer;
    3.        refdomain = refurl.match(/:\/\/(.[^/]+)/)[1];
    4.        if (refdomain === 'МойСайт.ПЗД') {
    5.            window.scrollTo (0, 100);
    6.        }
    7.     }
     
    TeslaFeo нравится это.
  16. fxtalant

    fxtalant Активный пользователь

    С нами с:
    15 мар 2017
    Сообщения:
    23
    Симпатии:
    0
    Адрес:
    Россия, Москва, Радужная улица, 15, корп. 1
    спасибо все работает, подскажите только как скрол расчитать правильно у меня шапка высатой: height:700px;min-height:100vh; и еще один div: height:200px, при мобильной адаптации этот div: height:520px, а шапка высатой: height:480px;min-height:100vh .Вот страница должна открыться ниже их.
     
    #16 fxtalant, 17 мар 2017
    Последнее редактирование: 17 мар 2017
  17. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Можно получить значение высоты нужных элементов, сложить их и промотать на полученное значение.
    Код (Javascript):
    1. //JQuery
    2. var height =  $('#Top').css("height"); // Вернет высоту элемента с id="Top"
     
  18. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Просто $('элемент').height ();
    или: $('Элемент который после шапки').top ();

    Но это JQuery. Его нужно или скачивать, или подключать со стороннего ресурса:
    <script src="https://code.jquery.com/jquery-3.2.0.js"></script> - это в <head></head>
     
  19. fxtalant

    fxtalant Активный пользователь

    С нами с:
    15 мар 2017
    Сообщения:
    23
    Симпатии:
    0
    Адрес:
    Россия, Москва, Радужная улица, 15, корп. 1
    У меня JQuery подключен, Дивы .header и .advantage, подскажите как правильно просумировать их высоту и вставить в скрипт?
     
  20. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Какой элемент у тебя после хедера, и всей остальной херни, которую надо пропустить? Вот его id, или класс и пиши.
    А просуммировать: var height = $('.header').height() + $('.advantage').height();
     
  21. fxtalant

    fxtalant Активный пользователь

    С нами с:
    15 мар 2017
    Сообщения:
    23
    Симпатии:
    0
    Адрес:
    Россия, Москва, Радужная улица, 15, корп. 1
    Код (Javascript):
    1. var height = $('.header').height() + $('.advantage').height();
    - это мы просуммировали их высоту, вот ее и нужно пропустить.
    А как эту высоту в этот скрипт добавить?
    Код (Javascript):
    1.     if (document.referrer) {
    2.        refurl = document.referrer;
    3.        refdomain = refurl.match(/:\/\/(.[^/]+)/)[1];
    4.        if (refdomain === 'МойСайт.ПЗД') {
    5.            window.scrollTo (0, 100);
    6.        }
    7.     }
     
    #21 fxtalant, 18 мар 2017
    Последнее редактирование модератором: 18 мар 2017
  22. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
  23. fxtalant

    fxtalant Активный пользователь

    С нами с:
    15 мар 2017
    Сообщения:
    23
    Симпатии:
    0
    Адрес:
    Россия, Москва, Радужная улица, 15, корп. 1
    вот так работает, это правильный срипт?
    Код (Javascript):
    1. <script>
    2.   if (document.referrer) {
    3.   refurl = document.referrer;
    4.   refdomain = refurl.match(/:\/\/(.[^/]+)/)[1];
    5.   if (refdomain === 'vdmy.ru') {
    6.   var height = $('.header').height() + $('.advantage').height();
    7.       $("body").animate({"scrollTop":height});
    8.   }
    9.   }
    10. </script>
     
    #23 fxtalant, 18 мар 2017
    Последнее редактирование модератором: 18 мар 2017
  24. fxtalant

    fxtalant Активный пользователь

    С нами с:
    15 мар 2017
    Сообщения:
    23
    Симпатии:
    0
    Адрес:
    Россия, Москва, Радужная улица, 15, корп. 1
    в гугле работает, а в мазиле нет?
     
  25. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Зачем animate? Я же написал правильный метод...
    --- Добавлено ---
    Причем, тут жквери вообще не нужна