[英]Why is the outline larger than its div?
更新
为了使输入恢复到我想要的大小,我必须摆脱填充和边框。 以下完成此操作:
*{padding:0; margin:0; border:0;}
多亏了CBroe,我发现这是FF特有的,它为input
添加了.75px的默认边框和1.5px的填充。 总计约4.5像素。 Chrome没有。
更新2
上面的修复仅使子元素恢复到我认为应该的大小。 下面接受的答案表明FF有一个错误,该错误解释了轮廓为什么不按预期方式运行,即仅轮廓父级,而不为绝对位置的后代扩展。
我有两个垂直放置的div
元素,它们的outline
属性设置为1px。 div
元素的height
为117px。
我希望两个div
元素在哪里相交,其轮廓是连续的。 它没有任何内容。
当我将top = 97px和height = 20px的absolute
定位输入放到top div
,该div
的轮廓被下推。
这是一个小提琴 ,显示了这一点。 如果删除input
,您将看到顶部div
轮廓位于底部div
旁边。
我至少不了解两件事:
1)在使用浏览器的开发工具(Firefox)检查该框时,我发现顶部div
实际上仍然高117px。 轮廓线应在div周围绘制,但似乎不是。 为什么?
2)输入的顶部为97px,高度为20px。 为什么这会影响轮廓的位置? 看起来轮廓已下推4像素。
我为您提供2个答案:
1)在使用浏览器的开发工具(Firefox)检查该框时,我发现顶部div实际上仍然高117px。 轮廓线应在div周围绘制,但似乎不是。 为什么?
轮廓似乎围绕内部的所有内容绘制。 因此,如果元素在底部突出100px。 轮廓也将移动100px。 在这种情况下,输入元素突出显示为8px。 因此,轮廓线比您预期的要长8px。
输入的顶部为97px,高度为20px。 为什么这会影响轮廓的位置? 看起来轮廓已下推4像素。
您几乎就在那儿,97px + 20px的确是117px的高度。 但是您忘了从输入元素算起8px。 这来自3像素粗边框+ 1像素粗填充。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.