我有两个带有
id=left
和id=right
属性的div。带有id=left
属性的div包含一些带有标记符号的li
元素列表,漂浮在左侧。带有id=right
属性的div包含一些文本和HTML(任何类型的内容)。问题是,有时左侧的id=left
和id=right
属性的div。带有id=left
属性的div包含一些带有标记符号的li
元素列表,漂浮在左侧。带有id=right
属性的div包含一些文本和HTML(任何类型的内容)。问题是,有时左侧的根据您在评论中提到的,#left
的宽度为 250px
,#right
的宽度为 750px
。当您将 #left
容器应用 position: absolute
属性时,就可以实现这种行为。
body, html {
padding: 0;
margin: 0;
}
.main {
position: relative; /* To contain #left */
}
#left {
background-color: skyblue;
overflow: auto;
position: absolute;
top: 0;
bottom: 0; /* top and bottom values are to stretch the #left inside the parent container */
width: 250px;
}
#right {
background-color: tomato;
width: 750px;
margin-left: 250px; /* equal to #left's width */
}
注意:在上面的演示中,我使用了br
标签来换行,这只是为了演示目的。
$(document).ready(function(){
for(var i = 1; i < 100; i++){
var menuli = "<li>"+"Menu - " +i+"</li>";
$("#left ul").append(menuli);
};
setmenuheight();
});
function setmenuheight(){
$("#left").height($(".content").height()+"px");
}
<div id="left">
<ul>
<li><a href="#">Item 1</a></li>
<li><a href="#">Item 1</a></li>
...
</ul>
</div>
<div id="right">
lorem ipsum ...
</div>
#left{
width: 250px;
float:left;
overflow-y: hidden;
}
#right{
margin-top: 10px;
width: 750px;
float: right;
}
var $right = $('#right'), var $left = $('#left');
if($right.height()<$left.height()){
$left.height($right.height());
}
$(window).on('scroll', function () {
$('#left').scrollTop($(this).scrollTop());
});
仅使用CSS:http://jsfiddle.net/tomsarduy/88eag6e7/2/
使用jQuery:http://jsfiddle.net/tomsarduy/88eag6e7/1/
Jquery:
$(document).ready(function() {
$("#left").height( $("#right").height() );
$(window).scroll( function(){
if($(window).scrollTop() >= $('#right').offset().top + $('#right').outerHeight() - window.innerHeight) {
} else {
$('.hideme').each( function(i){
var bottom_of_object = $(this).offset().top + $(this).outerHeight();
var bottom_of_window = $(window).scrollTop() + $(window).height();
if( bottom_of_window > bottom_of_object ){
$(this).animate({'opacity':1},500);
}
});
}
});
});
HTML:
<div id="left">
<li>Hello</li>
<li>Hello</li>
<li>Hello</li>
<li>Hello</li>
<li>Hello</li>
<li>Hello</li>
<li class="hideme">Fade In</li>
<li class="hideme">Fade In</li>
<li class="hideme">Fade In</li>
<li class="hideme">Fade In</li>
<li class="hideme">Fade In</li>
<li class="hideme">Fade In</li>
</div>
<div id="right">
Your text here
</div>
#left
{
height:auto;
width: 250px;
float: left;
overflow: hidden;
display: block;
}
#right {
float: right;
width: 200px;
}
#left li
{
margin:10px;
padding:50px;
background-color:lightgreen;
}
.hideme
{
opacity:0;
}
点击此处查看 JS Fiddle: http://jsfiddle.net/e5qaD/4000/
display: none
来隐藏它们,在滚动时使用display: block
来显示。我不想通过动态加载从服务器加载列表。 - MM PP#left
或#right
的宽度是否会动态变化?如果不会,那么它们的宽度至少是以百分比还是已知的固定宽度为基础? - Mr_Green