我正在使用Wordpress,我需要在页面滚动时将div固定在顶部。由于响应原因,div( .details )必须具有百分比宽度。我找到了一个javascript来停止div( .details ),当它从顶部开始是40px时,将它从相对位置切换到固定位置。它在相对位置时具有25%的宽度,但是当它变得固定时,25%的宽度现在基于窗口并且它不基于父元素( .entry ),比窗口小,所以滚动时它会变大。这些是CSS和Javascript( .carousel 是 .entry 中的另一个div,它位于.details的左侧):
<style>
.entry { position:relative; width:100%; }
.carousel { width:70%; height: auto; position: relative; float: left; margin-top: 0px;}
.details { width: 25px; height: 100%; float: right; margin-top: 0px; line-height: 20px;}
</style>
<script>
$(window).scroll(function(){
if ($(window).scrollTop() >= 90){
$('.details').css({position:'fixed',right:40,top:40,width:'25%'});
} else {
$('.details').css({position:'relative',right:0,top:0,width:'25%'});
}
});
</script>
我需要根据.entry创建.details div的宽度,而不是在窗口上。 任何人都可以找到错误或需要别的东西吗?我不是Javascript的专家。 谢谢大家!
答案 0 :(得分:3)
执行此操作的唯一方法是使用JavaScript设置.details
宽度。试试这个:
$(window).scroll(function(){
if($(window).scrollTop() >= 90){
$('.details').css({position:'fixed',right:40,top:40});
} else {
$('.details').css({position:'relative',right:0,top:0});
}
});
// set the width of the details div when window resizes
window.addEventListener('resize', function(){
var $el = $('.details')
$el.width( $el.parent().outerWidth() * .25 )
})