gpt4 book ai didi

html - 在某些情况下识别不需要的 div 垂直位移的来源

转载 作者:行者123 更新时间:2023-11-28 13:37:23 25 4
gpt4 key购买 nike

我正在为设备的网络用户界面构建“系统健康”屏幕。其中一部分是一组显示电源电压的仪表。这些仪表是由一堆“内联 block ”div 构成的。它们是基于 JSON 描述(阈值级别、阅读、标题等)在客户端构建的,但我认为这不会以任何方式导致我的问题,因为我可以使用静态 HTML 重现它。通过更改 .needle 元素的“top”属性,可以实时更新读数。该仪表分为 7 个部分:良好和高/低警告、严重、致命。只要它们是对称的,一切看起来都很好。如果我重新安排事情,使我的量表从零开始,低致命带正确地扩展到一直延伸到零。不利的副作用是整个仪表会向下偏移页面 lo-fatal 和 hi-fatal 之间的高度差。

下面的代码是问题的独立演示:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<!-- IMPORTANT - After any changes, check this against the w3c validator:
http://validator.w3.org/#validate_by_upload
Anything other than a clean pass is not acceptable!
//-->
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
<title>WTF?!?</title>
<style type="text/css">


.gaugeset {
background : #f8f8f8;
font-family : sans-serif;
font-size : 70%;

border : thin solid #ccc;
display : inline-block;
text-align : center;
}

.gauge {
background : #f0f0f0;
font-family : sans-serif;

border : thin solid #ccc;

margin : 7px;
display : inline-block;
border : thin solid black;
}

.gauge > h1 {
background : white;
font-size : 120%;
text-align : center;

-webkit-border-radius: 5px 5px 0px 0px;
-moz-border-radius : 5px 5px 0px 0px;
border-radius : 5px 5px 0px 0px;

margin : 0px;
padding-left : 7px;
padding-right : 7px;
}

.readout {
display : inline-block;
height : 180px;
width : 24px;
margin : 7px;
margin-left : 27px;
margin-right : 45px;
border : thin solid #ccc;
}

.fatal {
background : #ff7f7f;
height : 10%;
}

.critical {
height : 10%;
background : #ffbf7f;
}

.warn {
height : 10%;
background : #ffff7f;
}

.good {
height : 40%;
background : #c0ffc0;
}

#asymetric .fatal {
height : 18px;
}

#asymetric .critical {
height : 22px;
}

#asymetric .warn {
height : 6px;
}

#asymetric .good {
height : 19px;
}

#asymetric #special {
height : 87px;
}

.needle {
position : relative;
left : 27px;
top : 45px;
line-height : 0; /* So that the tip of the arrow is where we want it */
}

/* The text to the left that marks the transitions between zones */
.marker {
position : relative;
right : 29px;
text-align : right;
line-height : 0;
font-size : 70%;
}

</style>
</head>
<body>
<div class="gaugeset">
<div class="gauge">
<h1>1.0V</h1>
<div class="readout" id="asymetric">
<div class="needle">&#9664&nbsp;-.--V</div>
<div class="fatal"></div><div class="marker">1.4v</div>
<div class="critical"></div><div class="marker">1.3v</div>
<div class="warn"></div><div class="marker">1.2v</div>
<div class="good"></div><div class="marker">0.8v</div>
<div class="warn"></div><div class="marker">0.7v</div>
<div class="critical"></div><div class="marker">0.6v</div>
<div class="fatal" id="special"></div>
</div>
</div>
<div class="gauge">
<h1>1.0V</h1>
<div class="readout">
<div class="needle">&#9664&nbsp;-.--V</div>
<div class="fatal"></div><div class="marker">1.4v</div>
<div class="critical"></div><div class="marker">1.3v</div>
<div class="warn"></div><div class="marker">1.2v</div>
<div class="good"></div><div class="marker">0.8v</div>
<div class="warn"></div><div class="marker">0.7v</div>
<div class="critical"></div><div class="marker">0.6v</div>
<div class="fatal"></div>
</div>
</div>
</div>
</body>
</html>

我一直在用 Firebug 对元素进行可视化检查并检查计算出的高度、顶部等,但都没有成功。不对称仪表中的某些东西正在“阻碍”并破坏预期的文档流。这是什么?

最佳答案

您需要添加 vertical-align: top.gauge , 因为它有 display: inline-block .

阅读本文,特别是谈论“基线”的部分,了解为什么 vertical-align事项:http://blog.mozilla.com/webdev/2009/02/20/cross-browser-inline-block/

一般来说,无论何时使用 inline-block , 你应该考虑设置 vertical-align (除非您对默认的 baseline 感到满意)。

可以看到vertical-align的常用值对比结合 inline-block这里:http://www.brunildo.org/test/inline-block.html

关于html - 在某些情况下识别不需要的 div 垂直位移的来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9209379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com