【问题标题】:How to set a div percentage width with a fixed position based on the parent element如何根据父元素设置固定位置的div百分比宽度
【发布时间】:2014-03-29 19:10:19
【问题描述】:

我正在使用 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 方面的专家。 谢谢大家!

【问题讨论】:

  • 没有办法制作一个相对于它的父元素的固定元素。它总是相对于窗口。您可以使用 JavaScript 设置宽度,但是您必须附加一个事件侦听器窗口大小更改
  • 您应该创建一个 JSFiddle 或给我们一个示例链接。您是否有理由不希望您的菜单占窗口 100% 的宽度?
  • 这是网站:davidegiorgetta.com/choos。如您所见,右侧有一个文本框(.details)。当您滚动页面时,它会变大。该框不是 100%,因为左侧还有另一个框 (.carousel) 用于放置图像。我要准备小提琴。我希望我很清楚。

标签: javascript jquery wordpress scroll width


【解决方案1】:

这样做的唯一方法是使用 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 )

})

这是crude example

【讨论】:

  • 这是一个完美的解决方案!我试图在 jsfiddle 和一个空白网页上使用它,它可以工作。但是当我把它放在 Wordpress 中时,它没有。也许是因为与 jQuery 的冲突。这是正确的解决方案,您有解决冲突问题的建议吗?谢谢!
  • 尝试查看 JavaScript 控制台并告诉我它在说什么。
  • 我希望我在正确的位置检查(在 Chrome > 元素检查器 > 控制台上)这就是它所说的: Uncaught SyntaxError: Unexpected token 127.0.0.1:4001/isrunning3459
  • 还有这个:阻止了来源为“davidegiorgetta.com”的框架访问来源为“chrome-extension://oknpjjbmpnndlpmnhmekjpocelpnlfdi”的框架。请求访问的帧具有“http”协议,被访问的帧具有“chrome-extension”协议。协议必须匹配。加载资源失败:服务器响应状态为 404(未找到)davidegiorgetta.com/Pronto-child/style.css
  • 好了,终于成功了!!!只是几个自动段落在错误的位置!非常感谢 Kevin Jantzer!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-04
  • 2019-06-28
  • 1970-01-01
  • 1970-01-01
  • 2011-08-17
  • 2012-04-22
  • 2017-01-27
相关资源
最近更新 更多