• Как скачать файл при помощи nodejs?

    Например так:
    var http = require('http');
    var fs = require('fs');
    
    var file = fs.createWriteStream("file.jpg");
    var request = http.get("http://test/test.jpg", function(response) {
      response.pipe(file);
    });
    Ответ написан
    2 комментария
  • Как передать параметры из формы в URL?

    Вот ловите накатал примерчик:
    HTML:
    <form role="form" id="form" action="catalog/vse-tovaryi/" data-def="catalog/vse-tovaryi/">
      <select name="ms|price">
          <option value="">Любая</option>
          <option value="500">500 рублей</option>
      </select>
            <select name="msoption|tags">
          <option value="1">Тэг 1</option>
          <option value="2">Тэг 2</option>
      </select>
    
      <button type="submit">Подобрать</button>
    </form>

    JS:
    window.onload = function () {
    	var form = $('#form'), def = form.data('def'), data = {}, action;
      
      $(document).on('change', '#form select', function () {
      	var el = $(this), val = el.val(), name = el.attr('name');
        if (val) {
        	data[name] = val;
        } else {
          delete data[name];
        }
        action = def + "?";
        for(var i in data) {
          action += i + "=" + data[i] + '&';
        }
        action = action.substr(0, action.length - 1);
        form.attr('action', action);
      });
    };

    Смысл заключается в генерации нужного вам url и подстановки его в аттрибут action вашей формы в связи с чем после нажатия на кнопку отправить, вы перейдете туда куда нужно.
    Ответ написан
    4 комментария
  • Как сделать такой паралакс?

    Вот вам простой пример чтобы посмотреть логику работы.
    HTML:
    <div class="wrapper">
      <section class="page page--one">
        
      </section>
      <section class="page page--two">
        
      </section>
      <section class="page page--free">
        
      </section>
    </div>

    CSS:
    body, html {
      width: 100%;
      height: 100%;
    }
    
    body {
      overflow: hidden;
    }
    
    .wrapper {
      width: 100%;
      height: 100%;
      
      [class*=page--] {
        position: absolute;
        left: 0;
        height: 100%;
        width: 100%;
        transform: translateY(100%);
        transition: transform 2s;
        
        &:first-child {
          position: relative;
          transform: translateY(0);
        }
        
        &.active {
          transform: translateY(-100%);
        }
      }
      
      .page--one {
        background-color: red;
      }
      
      .page--two {
        background-color: green;
      }
      
      .page--free {
        background-color: blue;
      }
    }

    JS:
    (function (w, d) {
      var blocks = d.querySelectorAll('.page'), 
          ln = blocks.length,
          index = 0, 
          stop = false, 
          direction,
          next,
          curr;
      
      $(window).on("mousewheel DOMMouseScroll", function(event) {
      	event.preventDefault();
        var evt = event.originalEvent ? event.originalEvent : event;
        if (!stop) {
        	stop = true;
            direction = evt.detail ? evt.detail*(-40) : evt.wheelDelta;
            if (direction < 0) {
                index + 1 < ln ? index++ : "";
      			next = blocks[index];
                next ? next.classList.add('active') : "";
            } else {
                curr = blocks[index];
                if (curr) {
            	curr.classList.remove('active');
            	index > 0 ? index-- : "";  
                }
            }
            setTimeout(function () {
                stop = false;
            }, 1000);
         }
      });
    }(window, document));

    Только не надо принимать, что так и должно быть, это всего лишь простой пример, чтобы уеснить технологию, он очень топорный и простой и написан за 15 минут.

    Пример
    Ответ написан
    Комментировать
  • Как сделать адаптивные круги и растянуть по ширине бокса?

    HTML:
    <div class="wrapper">
      <div class="circle">
          <i></i>
      </div>
      <div class="circle">
          <i></i>
      </div>
      <div class="circle">
          <i></i>
      </div>
    </div>

    CSS:
    body, html {
      width: 100%;
      height: 100%;
    }
    
    .wrapper {
      width: 100%;
      text-align: justify;
      background-color: #000;
      
      &:after {
        content: "";
        display: inline-block;
        width: 100%;
      }
      
      .circle {
        display: inline-block;
        vertical-align: top;
        width: 23%;
        height: 100%;
        
        i {
          display: block;
          background-color: yellow;
          width: 100%;
          padding-bottom: 100%;
          border-radius: 50%;
        }
      }
    }

    Пример
    Ответ написан
    Комментировать
  • Где найти такой скрипт?

    Любой слайдер контент внутри которого вы сверстаете как на картинке.
    Ответ написан
    Комментировать
  • Отдать файл из PHP?

    Делайте запрос ajax-сом. Если все нормально, то возвращайте ссылку на созданный zip-архив и делайте переход на неё или создавайте тег a и эмулируйте клик по ней:
    var link = document.createElement("a");
    link.href = "test";
    link.download = "test.zip";
    var event = document.createEvent("MouseEvents");
    event.initMouseEvent("click", true, false, self, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
    link.dispatchEvent(event);

    Ну а если есть ошибки, то тут вы можете обработать как вашей душе угодно.
    Ответ написан
    Комментировать
  • Как уменьшить скорость скролла страницы?

    Вы можете только сгладить его при помощи анимации, сделать скролл страницы плавным. Убогий вариант этого будет выглядеть примерно так:
    var latestKnownScrollY = $('html').scrollTop() || $('body').scrollTop();
    $(window).on("scroll", function () {
        latestKnownScrollY = $('html').scrollTop() || $('body').scrollTop();
    });
    $(window).on("mousewheel DOMMouseScroll", function(event) {
        var scrollTo,
              scrollDistance  = 400,
              delta;
        if (event.type == 'mousewheel') {
              delta = event.originalEvent.wheelDelta / 120;
        } else if (event.type == 'DOMMouseScroll') {
              delta = - event.originalEvent.detail / 3;
        }
        scrollTo = latestKnownScrollY - delta * scrollDistance;
        if (scrollTo) {
            event.preventDefault(); 
            event.stopPropagation(); 
            $('body,html').stop().animate( { 
                scrollTop : scrollTo
             } , 500);
         }  
    } );

    А так для реализации этого эффекта есть масса плагинов. Так же помните что в последних версиях Firefox плавный скрол включен на уровне браузера, и эмулировать его не надо.
    Ответ написан
    4 комментария
  • Как получить список стилей и свойств элемента?

    Можно кое что придумать если воспользоваться свойством styleSheets объекта document:
    HTML:
    <div class="wrapper"></div>
    CSS:
    .wrapper {
      color: red;
      width: 100%;
      margin-top: 10px;
    }

    function getStyle(className) {
        var classes = document.styleSheets[0].rules || document.styleSheets[0].cssRules;
        for (var x = 0; x < classes.length; x++) {
            if (classes[x].selectorText == className) {
                (classes[x].cssText) ? alert(classes[x].cssText) : 		alert(classes[x].style.cssText);
            }
        }
    } 
    
    getStyle('.wrapper');

    Результатом будет строка:
    .wrapper { color: red; width: 100%; margin-top: 10px; }

    Рабочий пример.
    Ответ написан
    Комментировать
  • Как сделать ajax ленту совместно с mFilter2?

    Все довольно просто. mFilter пишет значения для фильтрации в url в виде get - параметров, а в качестве сниппета для пагинации используется pdoPage. Запросы при фильтрации и пагинации mFilter шлет на коннектор assets/components/msearch2/action.php.
    В итоге вам надо взять любой js - плагин, который реализует бесконечный скролл, или написать его самому. При достижении конца страницы вы берете url разбиваете его на параметры (можно использовать ф-ю mSearch2.Hash.get() она является частью js api mSearch) и скармливаете их скрипту. Вот и все.
    Когда-то я писал подобную реализацию для скроллинга использовал свой плагин miniScroll. Для него реализация будет выглядеть так:
    var ms = $('.catalog_lattice');
    var params = mSearch2.Hash.get();
    params['action'] = 'filter';
    params['pageId'] = mse2Config.pageId;
    params['key'] = mse2Config.key;
    
    ms.miniScroll({
        limit: 5,
        controllerUrl: 'assets/components/msearch2/action.php',
        responceType: 'json',
        dop: params,
        preloderPath: 'assets/templates/ikeds/img/loader.gif',
        success: function (responce, elm) {
            if (responce.data.results) {
                elm.find('.pager').before(responce.data.results);
            }
        }
    });

    Плагин писался давно и сейчас есть более достойные реализации. Сниппет mSearch вызываете как обычно, только скрываете ссылки с пагинацией.
    Ответ написан
    Комментировать
  • Как сменить фон у DIV через определённый промежуток времени?

    Вот по быстрому накидал:
    HTML:
    <div class="wrapper"></div>
    CSS:
    body,html {
      width: 100%;
      height: 100%;
    }
    
    .wrapper {
      width: 100%;
      height: 100%;
      transition: background 1s;
      background: none;
    }

    JS:
    (function (w, d) {
    	w.onload = function () {
    		var wp = d.querySelector('.wrapper'),
            colors = ['yellow', 'red', 'green', 'blue'],
            ln = colors.length;
        
        var changeColor = function (i) {
          if (i < ln) {
            setTimeout(function () {
              wp.style.cssText = "background: " + colors[i] +";"; 
              i++;
              changeColor(i);
            }, 2000);
          } else {
            changeColor(0);
          }
        };
        
        changeColor(0);
      };
    }(window, document));

    Это на чистом js, его легко можно заменить на jQuery.
    Рабочий пример.
    Ответ написан
    5 комментариев
  • Возможно ли сделать бекграунды не стандартной формы в адаптивном дизайне? Стоит ли вообще?

    Можно попробовать сделать при помощи трансформаций.
    Вот по быстрому пример набросал:
    <div class="treangle">
      <div class="treangle--left"></div>
      <div class="treangle--right"></div>
    </div>

    CSS:
    body, html {
      height: 100%;
      width: 100%;
    }
    .treangle {
      width: 100%;
      height: 100%;
      position: relative;
      background-color: #000;
      overflow: hidden;
      
      [class*='treangle--'] {
        width: 100%;
        height: 50%;
        position: absolute;
        background-color: yellow;
      }
      
      .treangle--left {
        float: left;
        left: -50%;
        transform: rotate(20deg);
        transform: matrix(-1, -0.2, 0, 1, 0, 0);
      }
      
      .treangle--right {
        float: right;
        right: -50%;
        transform: rotate(-20deg);
        transform: matrix(1, -0.2, 0, 1, 0, 0);
      }
    }

    Все будет ресайзиться как надо. Вопрос только в поддержке браузеров.

    Рабочий пример.
    Ответ написан
    2 комментария
  • Есть какой нибудь туториал по созданию подобного эффекта?

    Это обычная css трансформация, не чего сложно там нет, единственное что при анимации используются функции плавности.
    easings.net/ru
    Подберите нужную и будет вам счастье.
    Ответ написан
    Комментировать
  • Как использовать "или" в селекторе атрибутов?

    Можно от противного написать:
    input:not([type="submit"]) {
        display: block;
    }

    Будет применяться ко всем кроме input с типом submit.
    Ответ написан
    5 комментариев
  • Почему undefined и как получить дочерний элемент?

    Ответ на первый ваш вопрос вы можете посмотреть вот тут first-child. Вы не к тому применяете селектор :first-child.
    Надо так:
    $("div#" + thisColID + " div:first-child").attr('id');


    Можно сделать попроще. Рабочий вариант будет выглядеть примерно так:
    var getBlockInColumn = function() {
    	var thisColID = $(this).attr('id'), children = $("div#" + thisColID).children();
            if (children.length) {
                alert($(children[0]).attr('id'));
            }
    };
    
    $(document).ready(function(){
    	$(".column").on("click",getBlockInColumn);
    });
    Ответ написан