고정 위치 컨테이너에서 콘텐츠 일부 스크롤
나는이 position: fixed
사이드 바 같은 레이아웃에 DIV를. 콘텐츠의 일부를 (내부적으로) 상단에 고정하고 나머지 는 div 하단을 넘으면 스크롤하도록 요청 받았습니다 .
나는 이 답변 을 보았지만 거기에 제시된 솔루션은 position: fixed
또는 position: absolute
컨테이너 와 함께 작동하지 않습니다 .
여기 에 내 문제에 대한 JSFiddle 데모를 만들었습니다 . 많은 양의 텍스트는 페이지 하단으로 넘치지 않고 이상적으로 스크롤되어야합니다. 헤더의 높이는 콘텐츠에 따라 다를 수 있으며 애니메이션으로 표시 될 수 있습니다.
body {
background: #eee;
font-family: sans-serif;
}
div.sidebar {
padding: 10px;
border: 1px solid #ccc;
background: #fff;
position: fixed;
top: 10px;
left: 10px;
bottom: 10px;
width: 280px;
}
div#fixed {
background: #76a7dc;
padding-bottom: 10px;
color: #fff;
}
div#scrollable {
overlow-y: scroll;
}
<div class="sidebar">
<div id="fixed">
Fixed content here, can be of varying height using jQuery $.animate()
</div>
<div id="scrollable">
Scrolling content<br><br>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
</div>
Without a fixed header, I can simply add overflow-y: scroll
to div.sidebar
and I can happily scroll all it's content if it overflows the bottom of the container. However, I'm running into issues with having a fixed, variable height header at the top of the sidebar, and having any content underneath that scroll if it's too long to fit into the container.
div.sidebar
must stay position: fixed
, and I would very much like to do this without any hacks, as well as make it as cross browser as possible. I've attempted various things, but none of them work, and I'm unsure as to what to try from here.
How can I make a div inside a position: fixed
container scroll only in the Y direction when it's content overflows the containing div, with a fixed header of varying, indeterminate height? I'd very much like to stay away from JS, but if I have to use it I will.
It seems to work if you use
div#scrollable {
overflow-y: scroll;
height: 100%;
}
and add padding-bottom: 60px
to div.sidebar
.
For example: http://jsfiddle.net/AKL35/6/
However, I am unsure why it must be 60px
.
Also, you missed the f
from overflow-y: scroll;
What worked for me :
div#scrollable {
overflow-y: scroll;
max-height: 100vh;
}
I changed scrollable div to be with absolute position, and everything works for me
div.sidebar {
overflow: hidden;
background-color: green;
padding: 5px;
position: fixed;
right: 20px;
width: 40%;
top: 30px;
padding: 20px;
bottom: 30%;
}
div#fixed {
background: #76a7dc;
color: #fff;
height: 30px;
}
div#scrollable {
overflow-y: scroll;
background: lightblue;
position: absolute;
top:55px;
left:20px;
right:20px;
bottom:10px;
}
Actually this is better way to do that. If height: 100%
is used, the content goes off the border, but when it is 95%
everything is in order:
div#scrollable {
overflow-y: scroll;
height: 95%;
}
Set the scrollable div to have a max-size
and add overflow-y: scroll;
to it's properties.
Edit: trying to get the jsfiddle to work, but it's not scrolling properly. This will take some time to figure out.
참고URL : https://stackoverflow.com/questions/10154250/scroll-part-of-content-in-fixed-position-container
'Program Tip' 카테고리의 다른 글
Button 매개 변수 "command"가 선언 될 때 실행되는 이유는 무엇입니까? (0) | 2020.12.12 |
---|---|
자식 div를 부모 너비에 맞추는 크로스 브라우저 방법 (0) | 2020.12.12 |
RestSharp-SSL 오류 무시 (0) | 2020.12.12 |
다각형 알고리즘의 포인트 (0) | 2020.12.12 |
기본적으로 cmd.exe에서 유니 코드 문자 집합을 만드는 방법은 무엇입니까? (0) | 2020.12.12 |