2017-01-05 6 views
0

Я пробовал все, но безуспешно. Я пытаюсь сделать это, когда кто-то прокручивает правый экран, он будет прокручивать только его, а не всю страницу. Это мой код:Попытка прокрутить только div, а не целую страницу

HTML:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
<div class="content-container"> 
    <div class="content"> 
    <div>text</div> 
<div>text</div> 
<div>text</div> 
<button id="button"> 
Click me 
</button> 
    </div> 
    </div> 
<div class="new-content"> 
<p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p> 
    </div> 

CSS:

.content { 
    position: absolute; 
    top: 50%; 
    left: 50%; 
    transform: translate(-50%, -50%); 
    text-align: center; 
    width: 100%; 
} 
.content-container { 
    height: 100vh; 
    display: block; 
    background: #ddd; 
    float: left; 
    width: 100%; 
    position: relative; 
} 
.new-content { 
    display: none; 
    overflow: auto; 
    float: left; 
    width: 0; 
    height: auto; 
    background: #f60; 
} 
.new-content.half, 
.content-container.half { 
    width: 50%; 
} 

JS:

$('#button').click(function(){ 
    $('.new-content').toggleClass('half').delay(600).fadeIn(100); 
    $('.content-container').toggleClass('half'); 
}); 

** Обратите внимание, что я знал, что если я сделаю height равным 100vh на .new content вместо auto, он будет исправлен, но я точно не знаю высоту этой части, и поэтому мне нужно, чтобы она была автоматической (это будет больше, чем 100vh) * Fiddle:.https://jsfiddle.net/adf4uu31/1/

+0

Как это, что вы хотите, чтобы просмотреть и все еще имеет динамическую высоту? –

ответ

0

набор content-container для position : fixed и установить new-content в float :right в CSS

+0

Я только что попробовал, это не дает мне возможность прокручивать сейчас. И элементы, которые под экраном 100% не отображаются –

+0

Не забудьте запустить скрипт скрипта (вверху слева на странице) после внесения изменений, которые я предложил ... Я внес изменения в свои оригинальные скрипты скрипта ... Сделайте измененный, затем нажмите «запустить» вверх, затем попробуйте и посмотрите ... Вы не заметите оранжевую панель, хотя только один, перемещающийся при прокрутке, будет отображаться в серой панели ... Но это еще одна проблема :) –

0

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

.new-content { 
    max-height: 100vh; 
} 
+0

Ну, я написал в своем вопросе ......... ** Обратите внимание, что я знал, что если я сделаю высоту, чтобы быть 100vh на .new, а не на auto, это будет исправлено, но я не знаю точно высота этой части и, следовательно, мне нужно, чтобы она была автоматической (она будет больше 100vh). * –

+0

Я думал, что вы имели в виду фиксированную высоту, так как вы ссылаетесь на атрибут height, тогда как max-height не является фиксированная высота, а фиксированная величина. Мне не совсем понятно, чего вы хотите достичь, может быть, вы могли бы попытаться объяснить это немного больше? Возможно, вам может помочь с помощью flexbox, это вариант для вас? –

0

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

$(document).ready(function(){ 
 
$('#button').click(function(){ 
 
    $('.new-content').css({'height' : '100vh' }).toggleClass('half').delay(600).fadeIn(100); 
 
    $('.content-container').toggleClass('half'); 
 
}); 
 
});
.content { 
 
    position: absolute; 
 
    top: 50%; 
 
    left: 50%; 
 
    transform: translate(-50%, -50%); 
 
    text-align: center; 
 
    width: 100%; 
 
} 
 
.content-container { 
 
    height: 100vh; 
 
    display: block; 
 
    background: #ddd; 
 
    float: left; 
 
    width: 100%; 
 
    position: relative; 
 
    overflow : auto; 
 
} 
 
.new-content { 
 
    display: none; 
 
    overflow: auto; 
 
    float: left; 
 
    width: 0; 
 
    height: auto; 
 
    background: #f60; 
 
} 
 
.new-content.half, 
 
.content-container.half { 
 
    width: 50%; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="content-container"> 
 
    <div class="content"> 
 
    <div>text</div> 
 
<div>text</div> 
 
<div>text</div> 
 
<button id="button"> 
 
Click me 
 
</button> 
 
    </div> 
 
    </div> 
 
<div class="new-content"> 
 
<p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p> 
 
    </div>