Html 设置固定的div宽度以继承父级';s流体宽度

Html 设置固定的div宽度以继承父级';s流体宽度,html,css,fixed,Html,Css,Fixed,我试图修复一个“header”div,当它的滚动位置到达浏览器顶部时。当然,这会使其脱离文档流,因此需要设置宽度。如果容器的宽度设置为特定值,则此操作可以正常工作但是如果容器是流体,比如[min width:300px;max width:500px;],那么整个容器就会散架。 CSS #容器{ 最小宽度:300px;最大宽度:500px; 背景:#FFC;} #包装纸{ /*宽度:500px;您需要使用jquery设置相对于包含div的宽度。 例如,将现有代码更改为: if (y >=

我试图修复一个“header”div,当它的滚动位置到达浏览器顶部时。当然,这会使其脱离文档流,因此需要设置宽度。如果容器的宽度设置为特定值,则此操作可以正常工作但是如果容器是流体,比如[min width:300px;max width:500px;],那么整个容器就会散架。

CSS

#容器{
最小宽度:300px;最大宽度:500px;
背景:#FFC;}
#包装纸{

/*宽度:500px;您需要使用jquery设置相对于包含div的宽度。 例如,将现有代码更改为:

if (y >= top) {
   $('#logo_banner').addClass('banner_fixed');
   $('#logo_banner').width($('#container').width());
} else {
   $('#logo_banner').removeClass('banner_fixed');
   $('#logo_banner').width('100%');
}
因为宽度将是固定的px大小,所以您需要随时重置宽度#容器更改宽度。假设这是一种响应性设计,它只应在窗口大小更改时更改,因此我们可以运行如下操作:

// Trigger when window size is changed
$(window).resize(function(){
   // Only trigger if the element is fixed
   if (#logo_banner.hasClass('banner_fixed')) {
      $('#logo_banner').width($('#container').width());
   }
});
如果我们正在练习干式(不要重复自己)编程,您可以将其移动到单独的函数中 例如:

然后,当您滚动时,只需在设置banner_fixed类后调用该函数

...
   if (y >= top) {
      $('#logo_banner').addClass('banner_fixed');
   } else {
      $('#logo_banner').removeClass('banner_fixed');
   }

   set_banner_width();
...
窗口大小也一样

$(window).resize(function(){
   set_banner_width();
});

当您将元素位置设置为fixed时,实际上它没有父元素——可以说,它已从正常的dom流中删除。您可能需要借助javascript获取并设置正确的宽度。设置[width:inherit]如果继承是固定值,则有效。因此,最后,我想我需要一个解决方案,将其设置为父项的变化/流动宽度。即,实时更新该宽度。您的问题提醒了我最近提出的另一个问题->。如果您将
#logo#banner
移动到
#容器中,它将帮助您解决问题
我将开始尝试这种方法。绝对会的。我只需要确保我有足够的时间为它付出坚实的努力。;)
...
   if (y >= top) {
      $('#logo_banner').addClass('banner_fixed');
   } else {
      $('#logo_banner').removeClass('banner_fixed');
   }

   set_banner_width();
...
$(window).resize(function(){
   set_banner_width();
});