Показать сообщение отдельно
  #1 (permalink)  
Старый 26.02.2016, 11:37
Интересующийся
Отправить личное сообщение для Kirilbl4 Посмотреть профиль Найти все сообщения от Kirilbl4
 
Регистрация: 02.07.2015
Сообщений: 16

Изменение ширины дива мышкой
Всем доброго дня. Задумка следующая: есть 2 блока с бэграундами и блок, назовем его ресайз. Нужно чтобы мышкой можно было регулировать ширину и при этом ширина одного блока увеличивалась, а другого уменьшалась.
Вот примерно то что хочу сделать

двигая ползунок можно просматривать то одно изображение целиком, то другое.

Нашел в нэте скрипт подобного, но что то у меня он не совсем правильно работает.
<!DOCTYPE HTML PUBLIC  "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
<style>
    /*Section-9*******************************/
div.sec-9 {
    margin: 0 auto;
    width: 90%;
    height: 757px;
    position: relative;
    background: #fff;
    padding-top: 50px;
}
.sec-9 h1 {
  position: relative;
  text-align: center;
  font-size: 45px;
  color: #fff;
  font-weight: 700;
  z-index: 100;
}
.sec-9 h2 {
  position: relative;
  text-align: center;
  font-size: 20px;
  color: #fff;
  z-index: 100;
}
.sec-9-good-roof h3 {
  margin: 0;
  font-size: 45px;
  color: #fff;
  font-weight: 700;
  line-height: 757px;
  text-align: center;
}
.sec-9-bad-roof h3 {
  margin: 0;
  font-size: 45px;
  color: #fff;
  font-weight: 700;
  line-height: 757px;
  text-align: center;
}
.sec-9-good-roof {
  position: absolute;
  top: 0;
  right: 0;
  width: 100%;
  height: 757px;
  background: url(img/sec-9-img-2.jpg) no-repeat;
  background-position: right center;
}
.sec-9-good-roof div {
  position: absolute;
  top: 0;
  right: 0;
  width: 50%;
  height: 757px;
}
.sec-9-bad-roof {
  position: absolute;
  top: 0;
  left: 0;
  width: 50%;
  height: 757px;
  background: url(img/sec-9-img-1.jpg) no-repeat;
  background-position: left center;
}
.sec-9-ukaz {
  position: absolute;
  top: 0;
  left: 50%;
  width: 61px;
  height: 757px;
  margin-left: -30.5px;
  background: url(img/sec-9-ukaz.png) no-repeat;
  background-position:center;
}
.sec-9-ukaz:hover {
  cursor: pointer;
}
.sec-9-roof-wid {
  width: 70%;
}
.sec-9-ukaz-wid {
  left: 70%;
}
.sec-9-anim {
  -webkit-transition: all 1s ease;
    -moz-transition: all 1s ease;
    -o-transition: all 1s ease;
    -ms-transition: all 1s ease;
}
</style>
</head>
<body>
<div class="sec-9 doit" id="foto">
        <h1>Результат на лицо</h1>
        <h2>Мы успешно завершили десятки проектов<br>по монтажу кровли</h2>
        <div class="sec-9-good-roof" id="block">
                     <div>
            <h3>После</h3>
                     </div>
        </div>
        <div class="sec-9-bad-roof" style="width: 770px;">
            <h3>До</h3>
        </div>
        <div class="sec-9-ukaz" id="block_resize" style="left: 770px;"></div>
    </div>
<script type="text/javascript">
  var ie = 0;
  var op = 0;
  var ff = 0;
  var block; // Основной блок
  var block_r; // Блок для изменения размеров
  var delta_w = 0; // Изменение по ширине
  var delta_h = 0; // Изменение по высоте
  /* После загрузки страницы */
  onload = function () {
    /* Определяем браузер */
    var browser = navigator.userAgent;
    if (browser.indexOf("Opera") != -1) op = 1;
    else {
      if (browser.indexOf("MSIE") != -1) ie = 1;
      else {
        if (browser.indexOf("Firefox") != -1) ff = 1;
      }
    }
    block = document.getElementById("block"); // Получаем основной блок
    block_r = document.getElementById("block_resize"); // Получаем блок для изменения размеров
    document.onmouseup = clearXY; // Ставим обработку на отпускание кнопки мыши
    block_r.onmousedown = saveWH; // Ставим обработку на нажатие кнопки мыши
  }
  /* Функция для получения текущих координат курсора мыши */
  function getXY(obj_event) {
    if (obj_event) {
      x = obj_event.pageX;
      y = obj_event.pageY;
    }
    else {
      x = window.event.clientX;
      y = window.event.clientY;
      if (ie) {
        y -= 2;
        x -= 2;
      }
    }
    return new Array(x, y);
  }
  function saveWH(obj_event) {
    var point = getXY(obj_event);
    w_block = block.clientWidth; // Текущая ширина блока
    h_block = block.clientHeight; // Текущая высота блока
    delta_w = w_block - point[0]; // Измеряем текущую разницу между шириной и x-координатой мыши
    delta_h = h_block - point[1]; // Измеряем текущую разницу между высотой и y-координатой мыши
    /* Ставим обработку движения мыши для разных браузеров */
    document.onmousemove = resizeBlock;
    if (op || ff) document.addEventListener("onmousemove", resizeBlock, false);
    return false; // Отключаем стандартную обработку нажатия мыши
  }
  /* Функция для измерения ширины окна */
  function clientWidth() {
    return document.documentElement.clientWidth == 0 ? document.body.clientWidth : document.documentElement.clientWidth;
  }
  /* Функция для измерения высоты окна */
  function clientHeight() {
    return document.documentElement.clientHeight == 0 ? document.body.clientHeight : document.documentElement.clientHeight;
  }
  /* При отпускании кнопки мыши отключаем обработку движения курсора мыши */
  function clearXY() {
    document.onmousemove = null;
  }
  function resizeBlock(obj_event) {
    var point = getXY(obj_event);
    new_w = delta_w + point[0]; // Изменяем новое приращение по ширине
    block.style.width = new_w + "px"; // Устанавливаем новую ширину блока
    block.style.height = new_h + "px"; // Устанавливаем новую высоту блока
    /* Если блок выходит за пределы экрана, то устанавливаем максимальные значения для ширины и высоты */
    if (block.offsetLeft + block.clientWidth > clientWidth()) block.style.width = (clientWidth() - block.offsetLeft)  + "px";
    if (block.offsetTop + block.clientHeight > clientHeight()) block.style.height = (clientHeight() - block.offsetTop) + "px";
  }
</script>
</body>
</html>

Подскажите что я делаю не так?
Изображения:
Тип файла: png mini.png (244.3 Кб, 15 просмотров)

Последний раз редактировалось Kirilbl4, 26.02.2016 в 11:46.
Ответить с цитированием