为什么百分比高度在我的 div 上不起作用? [复制]

2023-11-29

我有两个高度为90%的div,但是显示不一样。

我尝试在它们周围放置一个外部 div,但这没有帮助。此外,在 Firefox、Chrome、Opera 和 Safari 上也是如此。

有人可以解释为什么我遇到这个问题吗?

下面是我的代码:

<div style="height: 90%">
    <div ng-controller="TabsDataCtrl" style="width: 20%; float: left;">
        <tabset>
            <tab id="tab1" heading="{{tabs[0].title}}" ng-click="getContent(0)" active="tabs[0].active"
               disabled="tabs[0].disabled">
            </tab>


            <tab id="tab2" heading="{{tabs[2].title}}" ng-click="getContent(2)" active="tabs[2].active"
                 disabled="tabs[2].disabled">
            </tab>
        </tabset>
    </div>

    <div id="leaflet_map" ng-controller="iPortMapJobController">
        <leaflet center="center" markers="markers" layers="layers" width="78%"></leaflet>
    </div>
</div>

使用 CSSheight属性和百分比值

The CSS height属性与百分比值一起使用时,是相对于元素的包含块进行计算的。

比方说你的body元素有height: 1000px。然后一个孩子与height: 90%会得到 900px。

如果您没有为包含块设置明确的高度(并且子元素不是绝对定位的),那么具有百分比高度的子元素将没有任何意义,高度将由内容和其他属性决定。

从规格来看:

10.5 内容高度:height财产

百分比
指定百分比高度。百分比是根据生成的框的高度计算的 包含块。如果包含块的高度不是 明确指定并且该元素不是绝对定位的,该值计算为“auto”。

auto
高度取决于其他属性的值。

因此,如果您想在 div 中使用百分比高度,请指定所有父元素的高度,直到并包括根元素(例如,html, body {height:100%;})

注意min-height and max-height是不可接受的。一定是height财产。

这里有一个小总结:

John: 我想将 div 的高度设置为 100%.
简:100% 什么?
约翰:100% 的容器。所以,父级上升了一级。
简:好的。 div 的父级的高度是多少?
约翰:没有一个。我猜是汽车。内容驱动。
简:那么,您希望 div 具有 100% 未知变量的高度吗?
约翰:[安静]
简:嘿约翰,我可以拿 50% 吗?
约翰:50% 什么?
简:Exactly!
简:百分比是相对值。你总是要问“什么的百分比?”。通过声明每个父母的明确身高body and html您为每个孩子建立一个具有百分比身高的参考框架,使身高发挥作用。

Examples

假设您希望 div 的高度为其父级的 50%。

这是行不通的:

<article>
    <section>
        <div style="height:50%"></div>
    </section>
</article>

这也不会:

<article>
    <section style="height:100%">
        <div style="height:50%"></div>
    </section>
</article>

这也不会:

<article style="height:100%">
    <section style="height:100%">
        <div style="height:50%"></div>
    </section>
</article>

这也会失败:

<body style="height:100%">
    <article style="height:100%">
        <section style="height:100%">
            <div style="height:50%"></div>
        </section>
    </article>
</body>

现在,它终于可以工作了:

<html style="height:100%">
    <body style="height:100%">
        <article style="height:100%">
            <section style="height:100%">
                <div style="height:50%"></div>
            </section>
        </article>
    </body>
 </html>

这也行得通:

<article>
    <section style="height: 500px">
        <div style="height:50%"></div>
    </section>
</article>

但不是这个:

<article>
    <section style="min-height: 500px">
        <div style="height:50%"></div>
    </section>
</article>

示例代码


Use 100vh

正如您所看到的,百分比高度有点棘手。您可以通过简单地使用来避免复杂性(即,永远不必考虑父元素)视口百分比高度。每当您希望盒子的高度与视口相同时,请使用height: 100vh代替height: 100%。不需要其他任何东西。

绝对定位异常

如中所述the spec,绝对定位的元素是百分比高度规则的例外。更多详细信息请参见此处:将 100% 高度应用于嵌套的非 Flex 元素.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么百分比高度在我的 div 上不起作用? [复制] 的相关文章

  • 如何让 Twitter Bootstraps 移动导航栏覆盖页面上的内容而不是将其向下推?

    我正在使用 Twitter Bootstrap 并且想修改移动导航栏 以便在展开时下拉菜单覆盖页面上的内容 而不是将其向下推 我知道我可能需要制作包含 div 绝对定位 增加它的 z index 并定位外部 div 相对而言 但我似乎无法让
  • 关闭 Bootstrap 模式 onclick

    我使用 Bootstrap 模式让用户在将商品添加到购物车之前选择产品选项 我之前在这种情况下使用过它们 没有任何问题 但这个没有按预期关闭 当用户单击 添加到购物车 按钮时 会发生一些事情 我认为问题就在那里 首先 一些脚本检查某些字段是
  • 为什么这个div的计算高度比它的内容高?

    我是一名 CSS 新手 正在使用 WordPress 网站菜单栏插件 http wordpress org extend plugins menubar 用于导航 我已经能够对 CSS 的配色方案 居中和字体内容进行更改 但我无法弄清楚为什
  • 可编辑的 Div 插入位置

    我有一个可编辑的 div 我正在使用一个按钮将图像插入到该 div 中 现在 我只是在做 document getElementById elementid innerHTML 为了将图像添加到 div 的末尾 我想输入插入符号所在的图像
  • CSS:仅背景不透明度,而不是内部文本[重复]

    这个问题在这里已经有答案了 我有这个注册表框 我真的很喜欢背景如何变得不透明 透明为 25 85 但后来我注意到文本和表单元素也变暗了一点 所以我想知道如何做到这一点只有边框和背景而不是盒子里面的东西 regForm z index 11
  • Chrome 扩展程序未加载 EventListener

    我一直在创建一个 chrome 扩展 它将我的新标签页分成 2 个框架 这样我就可以尝试加载 2 个不同的 URL 现在我开始很简单 但我无法让它们按预期加载 这是代码 背景 html
  • 使用 jQuery 在元素末尾添加“更多”html?

    我一开始有一个空的 div div div 我知道如何使用 jQuery 第一次将 html 添加到我的空 div 中 mydiv html my html 但我的问题是我不知道如何在非空 div 末尾推送更多 html div my ht
  • 在占位符中添加 HTML

    我喜欢使用 HTML 占位符 因为它有助于向用户描述他们需要输入的内容类型 但是 有时您需要为用户提供更多信息 而不仅仅是简单的句子 基本上我希望能够在我的文本区域占位符中添加换行符 制表符等 我听说过使用特殊编码来做到这一点 并且已经使用
  • 复制 Chrome 默认输入的轮廓样式

    如何设置默认 Chrome 输入的轮廓样式 焦点上为橙色 使其在每个浏览器中看起来都相同 Chrome 风格似乎是textarea focus outline rgb 229 151 0 auto 5px outline offset 2p
  • 使用 jQuery 的 .trigger('dragstart') 实现 HTML5 的拖放功能时如何 .setData/.getData

    当使用 jQuery 的 trigger dragstart 在具有 ondragstart drag event 属性的元素上触发函数时 如何使用 setData getData 实现 HTML5 在触摸设备上的拖放 流程示例 用户通过
  • 如何解决flash的zindex问题

    在网页中我需要显示div覆盖未使用的 Flash 横幅wmode transparent环境 怎么解决呢 根据我的记忆 你可以将 div 推入 也许使用Javascript 这样你就不会弄乱你的HTML iframe 是像 flash 一样
  • 从提交的表单中转义字符串中的字符

    每次发布帖子时 我都会得到转义字符 gt gt gt 我有一个多步骤表单 它将数据从一种表单传输到另一种表单 我将这些值与准备好的语句一起保存在数据库中 数据库中的值当前看起来像Paul s House 用户应该可以在字符串中使用单引号和双
  • 在java中将DataURL图像转换为图像文件

    我在我的 java servlet 中接收图像 DataURL 它看起来像 data image jpeg base64 9j 4AAQSkZJRgABAQAAAQABAA 我需要将其另存为图像文件 我该怎么做 The simplest w
  • 自动溢出的容器中不会出现滚动条(IE10、Windows Phone 8)

    我有一个容器 比方说div with overflow auto 其中的元素完全按照预期滚动 但不会出现典型的触摸滚动条 我尝试设置 ms overflow style auto明确地 但没有任何改变 浏览器 IE10 设备 Windows
  • 如何使链接悬停时的背景图像模糊?

    当您用鼠标光标悬停链接时 我想让我的背景图像模糊 5 像素 有什么简单的方法可以实现这一点吗 我有点纠结于类和 id 在这里 pic background url http www metalinjection net wp content
  • Jquery 关注下一个带有类的元素

    我正在尝试创建一个函数 当按下 Enter 键时 会选择带有类的下一个输入 我已经设法 focus 同一行中的下一个元素 但是 如果我需要选择下一行的下一个输入 它将无法继续 下一行中的第一个 quantity 文本框需要获得焦点 控制台没
  • 使 div 的大小与其内部图像的大小相同

    我有一个带有以下代码的div HTML div img src img logo png div CSS div imgContainer width 250px height 250px padding 13px 问题是用户可以编辑图像大
  • Chrome 上的 contenteditable 中未显示编辑光标

    当您打开此页面时 请参阅现场演示 http jsfiddle net gs3p1a6r 3 show 与 Chrome span span CSS myspan border 0 outline 0 JS myspan focus the
  • CSS交付优化:如何推迟CSS加载?

    我在尝试着优化 CSS 交付遵循针对开发人员的谷歌文档https developers google com speed docs insights OptimizeCSSDelivery example https developers
  • CSS3 背景渐变未验证,有人可以告诉我为什么吗?里面的代码示例

    有人能告诉我为什么下面的 css 没有验证吗 我一直在尝试自己研究这个问题 但没有运气 我读过的所有文档都说这是在 css3 中进行渐变的正确原因 header color white font size 12px font family

随机推荐