【问题标题】:Min height for slideshow not working幻灯片的最小高度不起作用
【发布时间】:2015-04-29 07:12:56
【问题描述】:

我在页面顶部的幻灯片具有width:100%height:400px css 属性。

但我想制作一个响应式网页,并根据页面的宽度使幻灯片高度可变。

我尝试过使用min-height,但它不起作用。

我尝试将容器的height 设置为400px 并将图像高度设置为自动,这部分解决了问题,因为幻灯片的高度会响应地变化,但容器保持在400px 上,这会在滑块和菜单栏之间留出空白空间。

你有什么想法吗?

我的css如下:

.container { 
    padding:0px; 
    margin:0px; 
    position:relative; 
    padding:0; 
    height:400px; 
}

.img { 
    position:absolute; 
    left:0; 
    top:0; 
    width:100%; 
    height:400px; 
    min-height:auto; 
}

http://jsfiddle.net/maaah1/cm11jpjb/

【问题讨论】:

  • 你试过自动身高吗?
  • 你能与 JSFIDDlE 中的 demo 分享你的代码吗?没有浮动:两者; css 属性。我的建议你可以使用所有滑块图像作为通用尺寸。

标签: css responsive-design slideshow responsive-slides


【解决方案1】:

您需要一些 JavaScript 来调整容器高度以适应其中的绝对元素。

你可以在this fiddle上看到结果,在窗口加载时调用一次函数来改变高度,然后在每次调整窗口大小时使用$(window).resize(changeHeight);来改变它

$(function() {
  $('.fadein img:gt(0)').hide();
  setInterval(function() {
    $('.fadein :first-child').fadeOut().next('img').fadeIn().end().appendTo('.fadein');
  }, 3000);
});

function changeHeight() {
  var biggestHeight = "0";
  // Loop through elements children to find & set the biggest height
  $(".fadein *").each(function() {
    // If this elements height is bigger than the biggestHeight
    if ($(this).height() > biggestHeight) {
      // Set the biggestHeight to this Height
      biggestHeight = $(this).height();
    }
  });

  // Set the container height
  $(".fadein").height(biggestHeight);
}
changeHeight();
$(window).resize(changeHeight);
.fadein {
  padding: 0px;
  margin: 0px;
  position: relative;
  padding: 0;
}
.fadein img {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<div class="fadein">
  <img src="http://i.imgur.com/FGLGf6M.png" align="middle">
  <img src="http://i.imgur.com/WPo9fHR.jpg" align="middle">
  <img src="http://i.imgur.com/IHIUS1K.png" align="middle">
</div>I'm a text

【讨论】:

  • 非常感谢您的帮助。我正在使用 CMS(方形空间)并在 CMS 中注入代码。我退出了大三,所以如果我说错了,请原谅,但似乎没有像我在原始 CSS 上所做的那样将高度值放在 400px 上,这会使菜单 div(它应该位于幻灯片下方)跳到图片上,并且一旦我添加了一个固定的高度,java代码就不再工作了,所以问题仍然存在!
  • 是的,如果你只使用我们的 CSS 你会遇到这个问题,但是 JavaScript 中的changeHeight() 函数是在这里为你选择高度值的,所以你不需要说你自己height:400px!顺便说一句,我从未使用过 CMS,所以我不知道它是否有问题
  • 另外,如果菜单 div 有绝对位置,那可能是其他原因...您可以编辑并给我们菜单 div 和样式吗? (只需将高度/宽度/边框放在一个空的 div 上,我认为我们不需要它的内容)
  • 这是导航栏的 CSS: .horizo​​ntal-navigation-bar { line-height: 1 !important;边距:自动;宽度:自动;最大宽度:@siteWidth;位置:相对;填充:@navSpacing 0; } 导航 { 宽度:自动;边距:自动;显示:内联块;垂直对齐:中间;位置:相对;}
【解决方案2】:

当您使用 html 图像而不是 background-image时,您根本不需要设置任何高度来使其响应。

我已经从你的 CSS 中删除了所有不必要的东西,并添加了一个带有固定 min-width:800px 的容器以更好地显示滑块。

CSS:

.container {
    width:100%;
    max-width:800px;
    margin:0 auto;
}
.fadein {
    padding:0px;
    margin:0px;
    position:relative;
    padding:0;
    width:100%;
}   
.fadein img { 
    position:absolute; 
    left:0; 
    top:0; 
    width:100%;   
}

和你修改后的FIDDLE

已编辑:非常棒,我完全按照操作员的要求做了(我让滑块响应)并被否决了。如果这个“答案没有用”就足够了,但是...... nvm。 Imo 他应该指定容器需要一个高度,因为下面有内容。

我已将这个 jquery 添加到小提琴中:

$( document ).ready(function() {
    $( ".fadein" ).each(function() {
        var newHeight = 0, $this = $( this );
        $.each( $this.children(), function() {
            newHeight += $( this ).height();
        });
        $this.height( newHeight/3 );
    });
});

因此它将计算fadein 的孩子的高度并将其设置为文档准备好的高度。请注意newHeight/3,因为 3 是父项中子项的数量。如果您添加更多图像,请同时更改此数字。

New fiddle

【讨论】:

  • 您的解决方案将容器高度设为 0(不适应内容),尝试在 div 之后添加文本,您将看不到它,因为它被绝对图像覆盖
  • 我编辑了我的解决方案,所以现在设置了高度。无论如何,请投反对票。
  • 现在您的解决方案看起来与我的相似,但我更喜欢检查最大的而不是总和和除法(添加元素时无需更改代码:)),但要注意高度不会改变当用户手动更改窗口大小时(这就是我添加调整大小监听器的原因)
  • 也为您的编辑信息,他已经询问了容器高度:I tried putting the container's height on 400px and image height on auto, which solves the problem partly as slideshow's height changes responsively but the container stays on 400px which makes a empty space between slider and menu bar.
  • 非常感谢您的帮助。我正在使用 CMS(方形空间)并在 CMS 中注入代码。我是个大三学生,所以如果我说错了,请原谅,但似乎没有像我在原始 CSS 上所做的那样将高度值设置为 400px,这会使菜单 div(它应该位于幻灯片下方)在图片上跳起来,并且一旦我添加了一个固定的高度,java代码就不再工作了,所以问题仍然没有解决!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-28
  • 2019-01-17
  • 2018-06-22
  • 1970-01-01
  • 1970-01-01
  • 2015-06-28
相关资源
最近更新 更多