Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.04.2017, 21:50
Аватар для LADYX
Профессор
Отправить личное сообщение для LADYX Посмотреть профиль Найти все сообщения от LADYX
 
Регистрация: 19.02.2015
Сообщений: 217

Как оставить скроллбар?
Добрый день! Есть скрипт для выдвижного блока. При открытом блоке в стиле для body и html присваивается overflow hidden, а у блока overflow auto/scroll. Как можно сделать, чтобы при открытом блоке скроллбар оставался у body, а не у блока, при этом прокрутка происходила самого открытого блока, но не body? Благодарю!

$(document).ready(function() {
	$('.sidebar_icon, .sidebar_bg').click(function(e){
	e.preventDefault();
	var tdata = {
		".sidebar":    "sidebar_toggled",
		".sidebar_bg": "sidebar_bg_toggle",
		".sidebar_icon-close": "icon-close-active",
		".wrapper":    "wrapper_push",
		"body":        "site-cache"
	};
	var remove = $(this).hasClass("sidebar_bg");
	$.each(tdata, function(sel, cls){
		remove ? $(sel).removeClass(cls) : $(sel).toggleClass(cls);     
	});    
	});
});

<style>.sidebar_icon {
    float: right;
    width: 30px;
    height: 30px;
    margin: 20px;
    position: relative;
    cursor: pointer;
    background: #000;
}
.sidebar {
	position: absolute;
	top: 0;
	left: -240px;
	width: 240px;
}
.sidebar_toggled {
	position: fixed;
	left: 0;
	width: 240px;
	background: #ccc;
	overflow: hidden;
}</style>
<div class="sidebar_icon"></div>
<div class="sidebar"></div>
Ответить с цитированием
  #2 (permalink)  
Старый 21.04.2017, 13:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

LADYX,
без полноценного макета сложно понять
Ответить с цитированием
  #3 (permalink)  
Старый 21.04.2017, 14:48
Аватар для LADYX
Профессор
Отправить личное сообщение для LADYX Посмотреть профиль Найти все сообщения от LADYX
 
Регистрация: 19.02.2015
Сообщений: 217

рони,
приветствую вас! В смысле без полноценного? Так я же привел здесь весь и хтмл код и стиль. Что я упустил?
Ответить с цитированием
  #4 (permalink)  
Старый 21.04.2017, 16:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Сообщение от LADYX
В смысле без полноценного?
такого чтоб можно было увидеть проблему и проверить решение, если такое будет.
Ответить с цитированием
  #5 (permalink)  
Старый 21.04.2017, 16:13
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Вот некий макет - насколько я понял задачу.
В диве есть горизонтальное переполнение. Если поставить overflow: scroll; - будет работать scrollbar.
У body скроллбар есть.
Но, поскольку у body нет переполнения, скроллбар неактивен, и им невозможно пользоваться для прокрутки содержимого div.
<!DOCTYPE html>
<html>
<head>
    <title>Untitled Page</title>
    <style>
        .sidebar_icon
        {
            float: right;
            width: 30px;
            height: 30px;
            margin: 20px;
            position: relative;
            cursor: pointer;
            background: #000;
        }
        .sidebar
        {
            position: absolute;
            top: 0;
            left: -240px;
            width: 240px;
            overflow: hidden;
        }
        .sidebar_toggled
        {
            position: fixed;
            left: 0;
            width: 240px;
            background: #ccc;
            overflow: hidden;
        }
    </style>
    <script src='http://code.jquery.com/jquery-latest.js'></script>
    <script>
        $(document).ready(function () {
            $('.sidebar_icon, .sidebar_bg').click(function (e) {
                e.preventDefault();
                var tdata = {
                    ".sidebar": "sidebar_toggled",
                    ".sidebar_bg": "sidebar_bg_toggle",
                    ".sidebar_icon-close": "icon-close-active",
                    ".wrapper": "wrapper_push",
                    "body": "site-cache"
                };
                var remove = $(this).hasClass("sidebar_bg");
                $.each(tdata, function (sel, cls) {
                    remove ? $(sel).removeClass(cls) : $(sel).toggleClass(cls);
                });
            });
            $(window).on('scroll', function(e) {
                e.preventDefault();
            });
        });

    </script>
</head>
<body  style="overflow:scroll">
    <div style="width: 2000px">-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</div>
    <div class="sidebar_icon">
    </div>
    <div class="sidebar">hhkhkj hkjhkj xchxczhjkzxcvhk hkhzxkjhkjh  khzxkjchkjzxc
    zxclkjxzcklj  zxjklzx cllj zxcljkjjlxzcccccccccccccjxvzcl
    zxclhkllllllllllllllllllllll ljlzxcvjlvkzjlkvzjxlkxvzj xzjlxzvjvzlxjvzxljvxzl
    xzkv;lzxvklzxkvl;vkzx;lzxvk;lzxvkl;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;vzxkzvklkxlxkzlkzxvlklvzxkzvlkzvlkzvxlkzvlkvzxvzkxlvzkxlvkzxlkzvxlkvzlvzklvzxklvzxklzvklvzklzvxklkvz
    zvxjkzjvxkljvzxlk
    zxvvzxjkjzxvljvzxlkjzx
    </div>
</body>
</html>

Последний раз редактировалось Dilettante_Pro, 21.04.2017 в 17:58.
Ответить с цитированием
  #6 (permalink)  
Старый 21.04.2017, 17:12
Аватар для LADYX
Профессор
Отправить личное сообщение для LADYX Посмотреть профиль Найти все сообщения от LADYX
 
Регистрация: 19.02.2015
Сообщений: 217

$(document).ready(function() {
	$('.sidebar_icon, .sidebar_bg').click(function(e){
	e.preventDefault();
	var tdata = {
		".sidebar":    "sidebar_toggled",
		".sidebar_bg": "sidebar_bg_toggle",
		".sidebar_icon-close": "icon-close-active",
		".wrapper":    "wrapper_push",
		"body":        "site-cache"
	};
	var remove = $(this).hasClass("sidebar_bg");
	$.each(tdata, function(sel, cls){
		remove ? $(sel).removeClass(cls) : $(sel).toggleClass(cls);     
	});    
	});
});

<div class="sidebar_icon"></div>
<div class="sidebar">1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> </div>

<body>1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> 1<br />1<br />1<br /> </body>

.sidebar_icon {
    float: right;
    width: 30px;
    height: 30px;
    margin: 20px;
    position: relative;
    cursor: pointer;
    background: #000;
}
.sidebar {
	position: absolute;
	top: 0;
	left: -240px;
	width: 240px;
}
.sidebar_toggled {
	position: fixed;
	left: 0;
	width: 240px;
	background: #ccc;
	overflow: hidden;
}


рони,
у body есть скроллбар. Нужно, чтобы при открытии блока, этот скроллбар начинал прокручивать этот самый блок, а не body.

Я хочу добавить сообщение, как это сделал Dilettante_Pro, чтобы была кнопка "Посмотреть", но у меня почему-то не получается.

Dilettante_Pro,
в диве возможно переполнение по вертикали, но зависеть это будет от высоты экрана. У body скроллбар всегда активен.

Последний раз редактировалось LADYX, 21.04.2017 в 17:14.
Ответить с цитированием
  #7 (permalink)  
Старый 21.04.2017, 17:45
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

В пост №5 активизировал скроллбар боди при помощи широкого div
e.preventDefault(); для скролла не работает
рони знает способ дезактивации скролла

Можно творить имитацию скролла дива

Для создания работающего примера читайте Форматирование на javascript.ru

Последний раз редактировалось Dilettante_Pro, 21.04.2017 в 17:51.
Ответить с цитированием
  #8 (permalink)  
Старый 21.04.2017, 17:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

LADYX,
[HTML run]код страницы целиком сюда[/HTML]
Ответить с цитированием
  #9 (permalink)  
Старый 21.04.2017, 18:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Сообщение от LADYX
этот скроллбар начинал прокручивать этот самый блок, а не body.
не понимаю
Ответить с цитированием
  #10 (permalink)  
Старый 21.04.2017, 18:20
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Очевидно, имеется в виду, чтобы у боди отключить прокрутку по умолчанию и программно эмулировать прокрутку в диве
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
переманную как условие в if блок xas Общие вопросы Javascript 3 02.02.2016 21:17
initComponent: Как получить данные родителя и как получить store для вызова load()? Пролетарий ExtJS 76 04.07.2015 09:22
Как взять только текст а разметку оставить внутри элемента? Кирюха =) jQuery 3 17.05.2015 22:32
Как сделать что бы картинки с другого url отображались как свои zlodey Серверные языки и технологии 1 04.05.2015 21:30
Как правильно реализовать такой функционал? Julian Общие вопросы Javascript 3 16.01.2015 12:34