Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.10.2016, 13:11
Аспирант
Отправить личное сообщение для Alexbelkevich Посмотреть профиль Найти все сообщения от Alexbelkevich
 
Регистрация: 02.10.2014
Сообщений: 52

Ищу плагин До/После
Здравствуйте! В сети много плагинов, которые работают в принципу, как этот слайдер.

Но вот вопрос:
Может кто-нибудь встречал, чтобы в этот слайдер можно было вставить не картинку, а div с определенными контентом, плюс чтобы он был вертикальным? По ссылке выше плагин имеет возможность вертикального слайдера, но там нельзя вставить div.

Прошу о помощи
Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 08.10.2016, 20:04
Аспирант
Отправить личное сообщение для Alexbelkevich Посмотреть профиль Найти все сообщения от Alexbelkevich
 
Регистрация: 02.10.2014
Сообщений: 52

Rise,
Там беда в том получается еще, что если в диве что-то размещаешь, то потом выделить ничего нельзя. Блок сверху видно как-то все перекрывает Блоки кликабельны внутри быть должны..
Ответить с цитированием
  #3 (permalink)  
Старый 08.10.2016, 20:18
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Alexbelkevich,
а убрать то что мешает в плагине кликам?
Ответить с цитированием
  #4 (permalink)  
Старый 08.10.2016, 20:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126


(function($){

  $.fn.twentytwenty = function(options) {
    var options = $.extend({default_offset_pct: 0.5, orientation: 'horizontal'}, options);
    return this.each(function() {

      var sliderPct = options.default_offset_pct;
      var container = $(this);
      var sliderOrientation = options.orientation;
      var beforeDirection = (sliderOrientation === 'vertical') ? 'down' : 'left';
      var afterDirection = (sliderOrientation === 'vertical') ? 'up' : 'right';
      
      
      container.wrap("<div class='twentytwenty-wrapper twentytwenty-" + sliderOrientation + "'></div>");
      //container.append("<div class='twentytwenty-overlay'></div>");
      var beforeImg = container.find(".img:first");
      var afterImg = container.find(".img:last");
      container.append("<div class='twentytwenty-handle'></div>");
      var slider = container.find(".twentytwenty-handle");
      slider.append("<span class='twentytwenty-" + beforeDirection + "-arrow'></span>");
      slider.append("<span class='twentytwenty-" + afterDirection + "-arrow'></span>");
      container.addClass("twentytwenty-container");
      beforeImg.addClass("twentytwenty-before");
      afterImg.addClass("twentytwenty-after");
      
      var overlay = container.find(".twentytwenty-overlay");
      //overlay.append("<div class='twentytwenty-before-label'></div>");
      //overlay.append("<div class='twentytwenty-after-label'></div>");

      var calcOffset = function(dimensionPct) {
        var w = beforeImg.width();
        var h = beforeImg.height();
        return {
          w: w+"px",
          h: h+"px",
          cw: (dimensionPct*w)+"px",
          ch: (dimensionPct*h)+"px"
        };
      };

      var adjustContainer = function(offset) {
      	if (sliderOrientation === 'vertical') {
      	  beforeImg.css("clip", "rect(0,"+offset.w+","+offset.ch+",0)");
      	}
      	else {
          beforeImg.css("clip", "rect(0,"+offset.cw+","+offset.h+",0)");
    	}
        container.css("height", offset.h);
      };

      var adjustSlider = function(pct) {
        var offset = calcOffset(pct);
        slider.css((sliderOrientation==="vertical") ? "top" : "left", (sliderOrientation==="vertical") ? offset.ch : offset.cw);
        adjustContainer(offset);
      }

      $(window).on("resize.twentytwenty", function(e) {
        adjustSlider(sliderPct);
      });

      var offsetX = 0;
      var offsetY = 0;
      var imgWidth = 0;
      var imgHeight = 0;
      
      slider.on("movestart", function(e) {
        if (((e.distX > e.distY && e.distX < -e.distY) || (e.distX < e.distY && e.distX > -e.distY)) && sliderOrientation !== 'vertical') {
          e.preventDefault();
        }
        else if (((e.distX < e.distY && e.distX < -e.distY) || (e.distX > e.distY && e.distX > -e.distY)) && sliderOrientation === 'vertical') {
          e.preventDefault();
        }
        container.addClass("active");
        offsetX = container.offset().left;
        offsetY = container.offset().top;
        imgWidth = beforeImg.width(); 
        imgHeight = beforeImg.height();          
      });

      slider.on("moveend", function(e) {
        container.removeClass("active");
      });

      slider.on("move", function(e) {
        if (container.hasClass("active")) {
          sliderPct = (sliderOrientation === 'vertical') ? (e.pageY-offsetY)/imgHeight : (e.pageX-offsetX)/imgWidth;
          if (sliderPct < 0) {
            sliderPct = 0;
          }
          if (sliderPct > 1) {
            sliderPct = 1;
          }
          adjustSlider(sliderPct);
        }
      });

      container.find(".img").on("mousedown", function(event) {
        //event.preventDefault();
      });

      $(window).trigger("resize.twentytwenty");
    });
  };

})(jQuery);
Ответить с цитированием
  #5 (permalink)  
Старый 08.10.2016, 21:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Rise,
ок! ... где-то на форуме были решения на данную тему
Ответить с цитированием
  #6 (permalink)  
Старый 08.10.2016, 23:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

до и после, минимальная версия
нажать на белую полосу и переместить вверх/вниз

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>demo</title>
  <style type='text/css'>
body{
  background-color: #A9A9A9;
}
.container {
    width: 500px;
    height: 300px;
     margin: 80px auto;
     position: relative;
      text-align: center;
}
.container a{
  color: #FFFFFF;
}

.container > .top {
    height: 100%; width: 100%;
    position: absolute;
    top: 0;
    left: 0;
    overflow: auto;
    background: blue;
}
.container > .bottom {
    height: 100%;  width: 100%;
    position: absolute;
    top: 0;
    left: 0;
    overflow: auto;
    background: red;
}
.container > .bar {
    height: 3px;
    position: absolute;
    top: 0px;
    right: 0;
    left: 0;
    background: #FFFFFF;
    cursor: move;
}
  </style>



<script>
window.addEventListener("DOMContentLoaded", function() {
    [].forEach.call(document.querySelectorAll(".container"), function(b) {
        var k = b.querySelector(".bottom"),
            c = b.querySelector(".bar"),
            d, e = b.clientHeight,
            l = b.clientWidth,
            g = function(a) {
                a = a.clientY - d;
                a = Math.min(e, Math.max(0, a));
                f(a)
            },
            f = function(a) {
                k.style.clip = "rect(0," + l + "px," + a + "px,0)";
                c.style.top = a + "px"
            };
        f(e / 2);
        var h = function(a) {
            window.removeEventListener("mousemove", g, !0);
            window.removeEventListener("mouseup", h, !0)
        };
        c.addEventListener("mousedown", function(a) {
            d = a.clientY - c.offsetTop;
            window.addEventListener("mousemove", g, !0);
            window.addEventListener("mouseup", h, !0)
        }, !0)
    })
});
</script>


</head>
<body>
  <div class="container">
    <div class="top"><h2><a href="http://javascript.ru/forum/" title="http://javascript.ru/forum/">forum</a></h2></div>
    <div class="bottom"><h2><a href="http://www.yandex.ru/" title="http://www.yandex.ru/">yandex</a></h2></div>
    <div class="bar"></div>
</div>
  <div class="container">
    <div class="top"><h2><a href="http://javascript.ru/forum/" title="http://javascript.ru/forum/">forum</a></h2></div>
    <div class="bottom"><h2><a href="http://www.yandex.ru/" title="http://www.yandex.ru/">yandex</a></h2></div>
    <div class="bar"></div>
</div>
</body>


</html>
Ответить с цитированием
  #7 (permalink)  
Старый 09.10.2016, 13:18
Аспирант
Отправить личное сообщение для Alexbelkevich Посмотреть профиль Найти все сообщения от Alexbelkevich
 
Регистрация: 02.10.2014
Сообщений: 52

Спасибо Вам большое!!!
Ответить с цитированием
  #8 (permalink)  
Старый 09.10.2016, 18:16
Аспирант
Отправить личное сообщение для Alexbelkevich Посмотреть профиль Найти все сообщения от Alexbelkevich
 
Регистрация: 02.10.2014
Сообщений: 52

рони,
Не сочтите за наглость. А не подскажете, как заставить работать разделяющую линию по тапу? Чтобы на сенсорах работало? Хотя бы в какую сторону копать?
Ответить с цитированием
  #9 (permalink)  
Старый 09.10.2016, 18:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Alexbelkevich,
Цитата:
"Зачем искать черта тому, у кого черт за плечами..."
плагин посмотрите внимательно, там есть jquery.event.move.js его и копайте
не хватит тогда сюда
https://developer.mozilla.org/en-US/...I/Touch_events
https://habrahabr.ru/post/118318/
Ответить с цитированием
  #10 (permalink)  
Старый 09.10.2016, 18:58
Аспирант
Отправить личное сообщение для Alexbelkevich Посмотреть профиль Найти все сообщения от Alexbelkevich
 
Регистрация: 02.10.2014
Сообщений: 52

Спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ищу плагин для скрытия/открытия контента Giorgi jQuery 3 19.04.2016 05:29
ищу Drag & drop плагин для построения плана помещения Den Brown Элементы интерфейса 0 31.07.2015 19:23
Ищу jQuery плагин для создания меню Zeboton jQuery 9 15.09.2014 15:31
Ищу плагин jQuery для визуального изменения размера картинки FRIE jQuery 4 02.09.2012 23:22
Ищу плагин автоподбора с добавлением выбранных элементов в хранилище? bobroff jQuery 3 30.11.2009 18:07