当 css 中提供 height 属性时,scrollHeight 给出错误的值

2023-12-15

我尝试获取 div 的滚动高度,并且得到了正确的结果,但是当我在 css 中为该特定 div 添加 height 属性时,我得到了不同的值。

只需运行fiddle您将在控制台中看到scrollheight属性的值等于268(等于所有子项的高度之和)

但是当我在 css 中添加高度值(例如 height:50px;)时,输出结果为 252(我认为差异是最后一个子元素的边距)。

有人可以回答为什么会有差异吗?

Edit由于问题不清楚,我重新表述了 id。当我指定父 div 的高度时,我得到的滚动高度为 252 像素,而如果我不指定高度或将其设置为“自动”,我得到的滚动高度为 268 像素。我只是想知道为什么在后一种情况下边距也不会崩溃?我并不担心折叠的边距,只是想知道为什么这两种情况下滚动高度不同?

下面给出的答案完全没问题。不过,我还使用 javascript 获得了正确的滚动高度(包括最后一个子元素的下边距)

var h = $(div).height();
$(div).height("auto");
var ch = $(div)[0].scrollHeight;
$(div).height(h);

重新阅读您的问题后,我发现您在问其他问题。但这仍然是我之前发布的相同答案。

总高度计算正确254px。当您显式设置小于该值的高度时,浏览器仅计算238px。这 - 就像你的猜测 - 没有16px底部的边距,发生的原因是“边距塌陷"。由于这条规则,最后一个边距被丢弃:

父母和第一个/最后一个孩子

折叠的边距最终位于父级之外。

因此,要修复它,您可以使用:

overflow: hidden;

或者您可以使用填充(此填充会“重建”您的边距行为,请参阅下面的说明):

p {
    padding: 8px;
}
p:first-child, p:last-child {
    padding-top: 16px;
}

欲了解更多信息,请访问 MDN:利润崩溃.


Edit:这是我在重新阅读您的问题之前的第一个答案。我将把它留在这里,以防有人有类似的问题,也因为它会导致相同的解决方案。

这解决了:为什么兄弟姐妹的高度/边距不符合预期?

您的身高计算正确。你所面临的称为:边距塌陷.

这意味着您所有的顶部和底部边距<p>-标签被“合并”。在您的情况下,有 7 行,这意味着:

  • 18px是一行的高度
  • 顶部和底部边距均为 16 像素
  • 第一个元素的顶部和最后一个元素的底部按预期显示
  • 所有其他边距都折叠起来

结果是:

  7 * 18px (height)
+ 6 * 16px (margins in-between)
+ 2 * 16px (margin top and bottom)
= 254px (exact the value calculated by the browser)

您可以通过使用轻松避免这种情况padding反而。

欲了解更多信息,请访问 MDN:利润崩溃.

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

当 css 中提供 height 属性时,scrollHeight 给出错误的值 的相关文章

  • 光滑的旋转木马不工作

    我一直在尝试简单地实现 Slick Carousel 的工作 我已按照 Git 页面上的说明进行操作 https github com kenwheeler slick https github com kenwheeler slick 这
  • 更改时触发跨度文本/html

    jQuery 或 JavaScript 中是否有任何事件在以下情况下触发span标签 text html 已更改 Code span class user location span user location change functio
  • 通过 jQuery 从输入类型=“文件”多个中删除文件

    我在使用 PHP 和 jQuery 上传文件时遇到问题 表单可以一次上传多个图像 这些图像可以在滑块中预览 表单还包含两个字段标题和描述 滑块通过 jQuery 工作 当用户通过单击选择文件来选择多个图像时
  • 跨浏览器:禁用输入字段的不同行为(文本可以/不能复制)

    我有一个被禁用的输入 html 字段 在某些浏览器 Chrome Edge Internet Explorer 和 Opera 中可以选择并复制文本 但至少在 Firefox 中这是不可能的 您可以通过在不同浏览器中执行以下代码来测试
  • 使用 JavaScript onclick 添加表格行

    我正在尝试使用 javascript 添加下面找到的完全相同的元素 我已经尝试了这里找到的所有解决方案 我什至尝试用php echo但没有运气 无需更改任何输入名称或类似内容 只需单击该按钮即可向表中添加另一行 仅此而已 这是该元素 tr
  • CSS:缩放字体大小以适应父块元素的高度

    我发现的几乎每个问题和答案都谈到了视口大小 这确实不是我的问题 拿着这支笔 https codepen io njt1982 pen pZjZNM https codepen io njt1982 pen pZjZNM 我有一个非常基本的
  • 使用滤镜将css3灰色图像转为蓝色?

    我正在尝试将灰色图像变为更蓝色的色调 真的不知道如何为此设置滤镜或是否可能 该图像只有一种颜色 cacaca 其余部分透明 我正在尝试使用相同的图像进行一些叠加 以便它仅突出显示那些彩色部分而不是透明区域 一直在尝试其中的一些 但没有取得多
  • 占位符 HTML 元素?

    是否有任何 HTML 元素可以用来包装其他元素以用作占位符 例如 ul ul
  • 为什么在 HTML 中使用 onClick() 是一种不好的做法?

    我多次听说使用 JavaScript 事件 例如onClick 在 HTML 中是一种不好的做法 因为它不利于语义 我想知道以下代码有什么缺点以及如何修复 a href link a 你可能正在谈论不引人注目的 JavaScript htt
  • PHP MySQL 使用选项/选择 HTML 表单标签进行多重搜索查询

    我正在尝试使用两个搜索字段设置基本的 MySQL LIKE 搜索 我不想拥有它 所以它有多个可选搜索字段 例如if isset POST city isset POST name 我不知道如何用 HTML 来做到这一点
  • 当 URL 包含片段时,iframe 会导致父元素在 Google Chrome 上向上滚动

    在 Google Chrome 37 0 2062 122 OSX Windows 上 具有包含片段的 URL 的 iframe 会导致父元素向上滚动 它只发生在 Chrome 中 在 Safari 和 Firefox 中测试 这是显示问题
  • Flexbox 不适用于 iPad 和 Safari [重复]

    这个问题在这里已经有答案了 我在网站上使用 Flexbox 但它在 iPad Air iPad 3 和 Safari PC 上崩溃 设计和代码与此 codepen 类似 http codepen io anon pen xwJzEg htt
  • 如何检测浏览器是否支持自定义元素

    我正在查看 Modernizr 它应该有助于功能检测 这应该可以帮助确定您的网站是否与给定的 Web 浏览器兼容 但我没有看到任何表明我可以使用它来检测自定义 HTML 的内容我们在内容中创建和定义的元素 如果不是 Modernizr 我如
  • 如何动态打破 FlexBox 列以开始新列

    I have a dynamic list of items containing text placed column wise which I need to break after every 5th item 我只有两个限制 每个
  • 标签获取 href 值

    我有以下 html div class threeimages a img alt Australia src Images Services 20button tcm7 9688 gif a div class text h2 a hre
  • jquery从变量中删除html元素

    我将 html 保存在变量中 var itinerary events today html 我有很多 html 和一个按钮我想删除 它的 ID 为 myButton 如何从变量中保存的 html 中删除它 我建议这种方法 var itin
  • 如何阻止破折号自行包裹?

    我有一个标题 标题最后一个单词的末尾是一个破折号 单词和破折号之间没有空格 当浏览器窗口变小时 破折号会中断并换成新行 在自己的行上有一个破折号是不好的排版 如何停止破折号之前的换行 以便最后一个单词运行到新行 这是代码 h1 XYZ co
  • 我可以使用 jQuery 打开下拉列表吗

    对于 HTML 中的下拉列表
  • CSS 是否有不等于选择器?

    CSS中有类似 不等于 的东西吗 例如 我有以下代码 input 但对于某些输入 我需要将其作废 我想通过将类 reset 添加到输入标签来做到这一点 例如
  • FireFox 中的“contenteditable = true”高度问题

    当有空的时候div with contenteditable true CSS contenteditable true border 1px dashed dedede padding 3px HTML div div 在 IE 和 Ch

随机推荐

  • 计算pandas数据框中每列值的变化

    有没有什么巧妙的方法来计算 pandas 数据框中每列值的变化次数 我不想在每一列上循环 例如 import pandas as pd frame pd DataFrame time 1234567000 1234567005 123456
  • AngularJs指令添加属性,事件不被触发

    大家早上好 我对这个指令有点困惑 我想要的是从 getProperties 函数接收一个 JSON 字符串 例如 class someclass ng change someChange ng click someCLick 该指令将创建
  • Android 寻呼机暂停问题

    我正在使用 Pager 和兼容性库构建一个应用程序 每当我尝试暂停应用程序时 例如 当我回到桌面时 我的应用程序都会强制关闭 我从未遇到过此类错误 因此我不知道如何解决它 我将向您展示我的代码 而我确信您不必查看它 public class
  • 使用Functional Swift 求斐波那契项的总和

    我正在尝试学习函数式 Swift 并开始从 Project Euler 做一些练习 甚至斐波那契数列 问题2 斐波那契数列中的每一项新项都是通过添加前两项而生成的 从 1 和 2 开始 前 10 项将是 1 2 3 5 8 13 21 34
  • 删除R中的多个值

    我有一个大约有 14 000 行和 40 列的数据集 我试图删除数据集第一列中具有以下值的所有行 但是当我执行类似操作时 filter data set data set DMS rem rem lt c 02M177 02M267 02M
  • EJB 3.1 依赖注入失败

    我创建了一个无状态会话 bean 如下所示 WebServlet name ProductController urlPatterns ProductController public class ProductController ext
  • MS Teams 活动源通知不会发送到移动设备

    我已经成功实施了活动提要通知在我的 MS Teams 应用程序 选项卡 中 问题是 我在移动设备上没有收到它们 既没有推送通知 也没有活动源中的项目 Web 和桌面上的活动源填充了相同的项目 但移动设备上没有任何内容 Web 和桌面版本工作
  • 混乱的 CSV 会导致异常

    我想我发现了一个错误 或者也许不是 但 Super CSV 无法很好地处理 我正在使用 MapReader 解析包含 41 列的 CSV 文件 但是 我收到了 CSV 并且为我提供 CSV 的 Web 服务弄乱了一行 标题 行是一个制表符分
  • C# system.speech.recognition 替代词

    我目前正在使用 Microsoft Speech API 将语音听写为文本 但我真正需要的是程序可以使用的替代听写 我将其用于我的荣誉论文 为此我希望知道任何话语的前 10 种解释 2011 年 有人提出了一个非常相似 即使不完全一样 的问
  • 使用大型 txt 文件训练 Gensim word2vec

    我有一个像这样的大txt文件 150MG intrepid bumbling duo deliver good one better offering considerable cv freshly qualified private 我想
  • 为什么我的 SqlPackage DeployReport 返回空报告?

    我正在尝试使用 SqlPackage exe 运行 DeployReport 操作 但它返回一个空报告 这是我没有预料到的 因为我已经删除了多个视图和 SProc 它通过在 Visual Studio 中运行 Compare 操作来显示 根
  • 滚动视图内可扩展高度的 GridView

    我在滚动视图中使用 Expandableheightgrideview 我的问题是 当我尝试在 gridview 中添加内容时 内容未正确展开 当其高度存在时 它会显示 2 个滚动条 它应该是整个页面的一个通用滚动条 内容的底部是隐藏的要在
  • 连接关闭后继续 php 脚本

    我试图在页面 连接关闭后继续执行 PHP 脚本 用户将每隔 1 小时轮询一次脚本 我想返回一些 json 输出并希望在后台继续执行脚本 我使用的是共享主机 无法使用 cron 作业 这是我尝试过的 ob start ignore user
  • 得到两个日期之间的年份?

    我有 2 个日期 例如 2009 11 11 2002 11 11 我想得到他们之间的年份 7 我该怎么做 月份和日期始终相同 我不想使用 有没有合适的方法呢 我强烈建议使用 Sarfraz Ahmed 建议的功能 如果您想手动完成 并且没
  • 如何在 WildFly 20 上设置 Samesite cookie?

    我需要在 WildFly20 服务器响应上将相同的站点 cookie 属性设置为 严格 我需要通过服务器配置来完成此操作 有什么帮助吗 JMart 的答案是正确的 但需要将文件添加到您的网络应用程序 undertow handlers co
  • 使用 SwiftUI 使自定义 UIView 方面比例适合/填充时出现问题

    SwiftUI 中没有公共 API 来响应 View 协议的可调整大小修饰符 只有 SwiftUI 中的 Image 可以与 ressized 一起使用 自定义 UIView 如 GIF 的 UIView 现在无法调整大小 我使用 SDWe
  • 用于哈希更改的 Chrome 扩展程序 WebNavigation 侦听器

    我一直在使用chrome webNavigation onCommitted and onCompleted侦听器成功地检测到页面更改 但现在有一些网站完全加载新页面 仅更改了 URL 哈希部分 这些改变并不会激发这两位听众的兴趣 有什么方
  • 如何比较datetimepicker中的两个日期

    我正在做 Windows 项目 其中有两个 DateTimePicker 控件 一个用于 StartDate 另一个用于 EndDate 在运行时 当用户从该控件中选择 StartDate 和 EndDate 时 它 应该读取文本文件 即
  • 复制/重现 Django 开发环境

    我正在和我的朋友一起开发 Django 项目 该项目依赖于一些 python 模块 我在 virtualenv 中安装了 django 和其他依赖项 django 项目的代码位于一个存储库中 所有朋友都可以访问该存储库 他们可以签出 克隆
  • 当 css 中提供 height 属性时,scrollHeight 给出错误的值

    我尝试获取 div 的滚动高度 并且得到了正确的结果 但是当我在 css 中为该特定 div 添加 height 属性时 我得到了不同的值 只需运行fiddle您将在控制台中看到scrollheight属性的值等于268 等于所有子项的高度