【问题标题】:HTML/CSS Heigth 100% and pxHTML/CSS 高度 100% 和 px
【发布时间】:2013-07-06 01:37:45
【问题描述】:

正在构建一个站点,我有一个顶部栏,它贴在屏幕顶部,然后在下面我有一个 iframe,仅此而已。问题如下,我的顶栏是 50px 高度,我希望 iFrame 是 100%-50px。有没有办法在 CSS 中做到这一点?如果没有,您将如何使用 javascript 来实现? (我不知道获取窗口大小的函数)。

|-------------顶栏--------------| 50像素
|______________________| 100%-50像素
\iframe
\iframe
\
\
\
\

【问题讨论】:

  • 应用 'margin-top' 或 'position:relative;top:some_value_' 到框架
  • 那么,您对收到的 4 个答案有任何疑问吗?
  • 检查我的编辑,我完全忘记了box-sizing

标签: javascript html css web height


【解决方案1】:

不需要javascript。 使 iframe 高度为 100%;并在顶部添加填充以偏移顶部栏。

 iframe{  padding-top:50px; height:100%; 
          box-sizing:border-box; moz-box-sizing:border-box }

关键属性是box-sizing。使元素高度100% 将按照它的假设进行,但是任何其他填充只会增加高度或宽度的大小,具体取决于您如何填充它。但是如果你设置box-sizingborder-box,这将迫使浏览器不增加高度或宽度,而是从高度或减去(即'100%-50px')或宽度。

长话短说,box-sizing 是您的 CSS 中缺少的功能。 不需要 JAVASCRIPT,那就太矫枉过正了。

注意:这适用于所有浏览器

【讨论】:

  • 然后恼人的滚动条弹出到我们漂亮的网站。 -_-
  • 不管他想要的效果,由于iframe上有padding,里面的内容不会被顶栏覆盖
  • 谢谢!它奏效了,我只需要放置 padding-bottom 而不是 top!
  • 各有千秋。你应该接受答案,这样问题才能被视为已回答
【解决方案2】:

使用这个:-

#iframeid{
height: -moz-calc(100% -  50px);
height: -webkit-calc(100% - 50px);
height: calc(100% - 50px);
}

【讨论】:

  • 是的,但它支持 IE9 和今天主要使用的更高版本。
  • 您不应该根据您的意见构建应用程序。看看gs.statcounter.com/…
  • @jay 好吧,你说得对。但是我很惊讶地知道 IE 9 已经超过了 chrome :O ???
  • @Vivek microsoft 是一家垄断企业,每台装有 Windows 的新电脑都预装了 IE 8、9 或 10。通常,当我们查看从开发者网站制作的浏览器统计信息时,我们作为开发者几乎只使用 chrome,这会产生偏见
【解决方案3】:

在 css 中给你的 iframe 一个 padding-top: 50px

喜欢这个

iframe {
    padding-top:50px;
 }

或者你可以给你的 iframe 一个类并定义 padding-top: 50px;在里面

【讨论】:

    【解决方案4】:

    有办法!

    在 CSS 中使用这个函数:min-height: calc(100% - 50px);

    这里的min-height 可以解决问题。如果没有min,它将把它当作max-height,并且不会扩展它的高度,直到它的内容达到100% - 50px

    Fiddle.

    【讨论】:

    【解决方案5】:

    您可以使用 box-sizingpadding 来做到这一点

    这是我想出来的

    <div id="top-bar"></div>
    <iframe src="http://www.jsfiddle.net" frameborder="0"></iframe>
    
    *{
        box-sizing:border-box; // box sizing allows us to add 50px padding to the iframe
        -webkit-box-sizing: border-box; // Without effecting the size
        -moz-box-sizing: border-box;
        margin:0;
    }
    
    #top-bar{
        height:50px; // Height of top bar
        position:fixed; // Fixed
        background:skyblue;
        top:0;
        left:0;
        right:0;
    }
    
    iframe{
        padding-top:50px; // Height of top bar
        height:100%;
        width:100%;
        margin:0;
    }
    
    body, html{
        height:100%;
        width:100%;
        overflow:hidden; // There was like 10px of empty overflow at the bottom 
        // i will find out why
    }
    

    Demo

    给我几分钟,我把一切都解释清楚。

    这是我能想到的唯一一种适用于 IE8+ 的方法 否则就是javascript

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-03
      • 1970-01-01
      • 2013-03-10
      • 1970-01-01
      • 2013-02-16
      • 2013-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多