Ответы пользователя по тегу JavaScript
  • Как осуществить то что изображено на картинке?

    Kiriniy
    @Kiriniy
    Графический и веб-дизайнер
    .basic-plan:hover .basic-plan-catig{
      color: #fff;
    }
    Ответ написан
    Комментировать
  • Как сделать что бы JS работал в нескольких блоках на сайте?

    Kiriniy
    @Kiriniy
    Графический и веб-дизайнер
    В документе может быть только один id со значением output.
    Можно попробовать поменять на класс и getElementsByClassName. Проблема в том, что getElementsByClassName работает с массивами и тут нельзя вызвать getContext напрямую, нужна обёртка forEach.

    <div id="wrap">
       <canvas class="output"></canvas>
       <canvas class="output"></canvas>
       <canvas class="output"></canvas>
       <canvas class="output"></canvas>
    </div>


    Вот как-то так...

    var img = document.getElementById('input');
    
    var c = document.getElementsByClassName('output');
    
    c = Array.prototype.slice.call(c);
    
    c.forEach(function (c) {
    
    var ctx = c.getContext('2d');
    
    c.width = img.width;
    c.height = img.height;
    
    var tic, sine, sineNormalized,
        start = Date.now();
        
    var params = {
      AMP: 20,
      FREQ: 0.03,
      SPEED: 4,
      VERTICAL: true
    };
    
    function update() {
      tic = (Date.now() - start) * 0.001;
    }
    
    function render() {
      ctx.clearRect(0, 0, c.width, c.height);
      for(var i = 0; i < img.height; i++) {
        if(params.VERTICAL) {
          var ofs = params.AMP * (0.5 + (Math.sin(tic * params.SPEED + (i * params.FREQ)) * 0.5));
          ctx.drawImage(img,
                      0, i, img.width, 1,
                      0, i - (ofs * 0.5), img.width, 1 + ofs);
        } else {
          var ofs = params.AMP * Math.sin(tic * params.SPEED + (i * params.FREQ));
          ctx.drawImage(img,
                      0, i, img.width, 1,
                      0 + ofs, i, img.width, 1);
        }
        
      }
    }
    
    function loop() {
      requestAnimationFrame(loop);
      update();
      render();
    }
    
    $('nav input').on('input change', function() {
      var t = $(this).attr('data-param');
      if(t == 'VERTICAL') {
        params.VERTICAL = $(this).is(':checked');
      } else {
        params[t] = $(this).val();
      }
      
    });
    
    loop();
    
    });
    Ответ написан
  • Как вывести текст, начиная с отображения 1,2,3 букв и т.д.?

    Kiriniy
    @Kiriniy
    Графический и веб-дизайнер
    Если я правильно понимаю, вам нужен эффект набора, как если кто-то печатает в этом вашем блоке или теге? Есть готовые js решения, Typed например. А это другие прикольные примеры вывода текста.
    Ответ написан
    Комментировать
  • Как работают переменные и циклы в связке scss + bootstrap (Разбор кода сайта. Не пойму, как работает)?

    Kiriniy
    @Kiriniy
    Графический и веб-дизайнер
    В браузере вы просматриваете уже скомпилированный css файл, а тут привели кусок sass. Либо ищите дальше, по остальным sass файлам, либо просто переопределите свойства этого класса отдельно в конце.
    Ответ написан
  • Bootstrap 3 шаблон. Kак отключить анимацию автоскроллингa?

    Kiriniy
    @Kiriniy
    Графический и веб-дизайнер
    Предполагаю, вам нужен файл custom.js и вот эта его часть:

    // latest post slider call 
        $('.latest_postnav').newsTicker({
            row_height: 64,
            speed: 800,
            prevButton: $('#prev-button'),
            nextButton: $('#next-button')
        });
    Ответ написан
    Комментировать
  • Как исправить проблему с отображения фона лендинга на ios?

    Kiriniy
    @Kiriniy
    Графический и веб-дизайнер
    Очень старая проблема и не только на iOS, а на большинстве браузеров для мобильных устройств в принципе. Суть в том, что использование background-attachment: fixed; сказывается на производительности и он тупо отключён в мобильных устройствах. Может однажды всё будет работать, но пока так. После нескольких лет поиска решения я пришёл к следующим выводам.

    Если эффект крайне необходим, вы можете использовать технологию параллакса (есть бесплатные плагины), когда позиционирование элемента изменяется динамически во время прокрутки, либо использовать отдельный пустой div, где вместо background-attachment: fixed; ставите position: fixed; этому пустому блоку и регулируете всё через z-index.

    Если эффект не так важен и вы согласны пойти на компромисс с мобильными, то можете воспользоваться моим личным вариантом. На компьютерах эффект работает как должен, а на мобильных — фон просто растягивается по высоте блока и двигается вместе со страницей.

    HTML
    Тут ваша разметка шапки, но с разложенными по классам свойствами CSS.
    <header class="main-header bg-cover bg-fixed">...</header>


    CSS
    Из своего основного класса убираете всё, что касается фона, кроме картинки. Естественно, если вам там ещё что-то нужно, вроде высоты, флоатов и тд., сами решите. Теперь добавляете два класса, которые пойдут как фреймворк и могут использоваться многократно. Один растягивает картинку (центрует и без повторений), другой делает тот самый эффект fixed.
    .main-header {background-image: url(img/picjumbo-bg5.jpg);}
    .bg-cover {background-repeat: no-repeat; background-position: center center; background-size: cover; -webkit-background-size: cover;}
    .bg-fixed {background-attachment: fixed;}


    JS
    Добавляете этот код в шаблон или в файл скриптов. Если ваш сайт открывают на мобильных устройствах, скрипт находит все блоки по классу bg-cover и убирает из них класс bg-fixed, если он есть. Фоновая картинка просто будет скролиться со всем остальным.
    var device = navigator.userAgent.toLowerCase();
    var mob = device.match(/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/);
            if (mob) {
                $(".bg-cover").removeClass("bg-fixed");
            }
    Ответ написан
    8 комментариев