За последние 24 часа нас посетил 17541 программист и 1718 роботов. Сейчас ищут 1713 программистов ...

Эффект перелистывания страниц

Тема в разделе "JavaScript и AJAX", создана пользователем kit, 27 май 2015.

  1. kit

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

    С нами с:
    18 дек 2006
    Сообщения:
    331
    Симпатии:
    1
    Адрес:
    местный
    Рыл и гуглил эту тему весь день. Скажу честно информации много. Но все как-то заморочено, и не совсем то что соответствовало бы моим потребностям. По этому остаток дня потратил на самостоятельное написание.
    Сделано для 4-х страниц, но можно сделать и больше, для этого просто вставить сколько надо div-ов класса block с соответствующим id="blockN" (где N - порядковый номер блока) и соответствующим вложенным div с id="block_inN" (где N - порядковый номер блока). Скрипт написан на основе функции animate для jqery. Не знаю как на счет кроссбраузерности, пробовал только в хроме и ие. Отпишитесь у кого другие.
    Критика приветствуется. Вот весь код (может кому пригодиться):
    Код (Text):
    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4.   <style>
    5.     #main {
    6.         position: absolute;
    7.         top: 50%;
    8.         left: 50%;
    9.         width: 1000px;
    10.         height: 500px;
    11.         margin-top: -225px;
    12.         margin-left: -500px;
    13.         }
    14.     .nav {
    15.         position: absolute;
    16.         background-color:#0fa;
    17.         width:30px;
    18.         height:30px;
    19.         top:450px;
    20.         text-align:center;
    21.         }
    22.     #forward {
    23.         left:900px;
    24.         display:block
    25.     }  
    26.     #back {
    27.         left:100px;
    28.         display:none
    29.     }
    30.     #page {
    31.         left:50%;
    32.     }
    33.     .block {
    34.         position: absolute;
    35.         width:100%;
    36.         height:100%;
    37.         }
    38.   </style>
    39.   <script src="http://code.jquery.com/jquery-latest.min.js"></script>
    40.   <script>
    41.   var page=1;
    42.     window.onload = function() {
    43.         document.getElementById('page').innerHTML = page;
    44.         }
    45.     function push_arrow (ev) {
    46.         var e = window.event || ev, K = e.keyCode;
    47.         if (K == 37 && page>1) navigation('back');
    48.         else if (K == 39 && page<$('div.block').length) navigation('forward');
    49.         }
    50.     function navigation(nav){
    51.         var width;
    52.         var opacity;
    53.         if (nav=='forward') {
    54.             width="0px";
    55.             opacity=0;
    56.             }
    57.         else {
    58.             width="100%";
    59.             opacity=1;
    60.             }
    61.         if (nav=='back') page=page-1;
    62.         $("#block" + page).animate({width: width}, 1000);
    63.         $("#block_in" + page).animate({opacity: opacity}, 1000);
    64.         if (nav=='forward') page=page+1;
    65.         document.getElementById('page').innerHTML = page;
    66.         if (page>1) document.getElementById('back').style.display = 'block';
    67.         else  document.getElementById('back').style.display = 'none';
    68.         if (page<$('div.block').length) document.getElementById('forward').style.display = 'block';
    69.         else  document.getElementById('forward').style.display = 'none';
    70.         };
    71.   </script>
    72. </head>
    73. <body onkeydown="push_arrow (event)">
    74. <div id="main">
    75.   <div id="block4" class="block" style="background-color:#ddd"><div id="block_in4">Trulala</div></div>
    76.   <div id="block3" class="block" style="background-color:#ccc"><div id="block_in3">Hatter</div></div>
    77.   <div id="block2" class="block" style="background-color:#bbb"><div id="block_in2">Rubbit</div></div>
    78.   <div id="block1" class="block" style="background-color:#aaa"><div id="block_in1">Alisa </div></div>
    79.   <div id="forward" class="nav" onclick="navigation('forward')">>></div>
    80.   <div id="page" class="nav"></div>
    81.   <div id="back" class="nav" onclick="navigation('back')"><<</div>
    82. </div>
    83. </body>
    84. </html>
    А тепрь собственно вопрос: Ну как?
     
  2. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
  3. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Просьба залить на jsfiddle и выдать внизу ссылку на демку сразу. Чтобы можно было пощупать в правильно собранном варианте.
     
  4. kit

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

    С нами с:
    18 дек 2006
    Сообщения:
    331
    Симпатии:
    1
    Адрес:
    местный
    Не ну конечно! А есть еще лучше с 3D, но я сделал
    https://jsfiddle.net/6ogpk9tw/
     
  5. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Это понятно, но тестировать остальным то, что отвечает вашим потребностям надо основываясь, соответственно, на чем ?)
    Конечно, за простоту и Спарту, но хотя бы листание с клавиатуры, не говоря уж про листание с планшето-телефонов неплохо бы добавить (каждый первый заказчик за них душу вытрясет ведь).
     
  6. kit

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

    С нами с:
    18 дек 2006
    Сообщения:
    331
    Симпатии:
    1
    Адрес:
    местный
    Я думаю самое главное сильно не заморачиваться на этом. Потестил - не подошло - ищешь дальше, подошло - залил в скелет графику и контент и используешь :)

    Добавлено спустя 1 минуту 30 секунд:
    согласен, есть над чем работать
     
  7. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Вашими бы устами :). У иных ухо от заказчиков болит от несовместимости с платформами и новыми-старами js-либами того что было когда-то кем-то написано и "импортировано в скелет"
     
  8. kit

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

    С нами с:
    18 дек 2006
    Сообщения:
    331
    Симпатии:
    1
    Адрес:
    местный
    навигацию с клавиатуры сделал, код поправил
    как сделать экранное пальцеперелистовывание?
     
  9. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Если используете jquery то событие swipe, плагин и реализацию в мобильной jquery покурите по мануалам если нативная реализация на js не интересует.
     
  10. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА