box-sizing: border-box - 如果之后更改边框,则不会保持大小
box-sizing: border-box - Size not maintained if border is changed afterwards
我在使用 box-sizing: border-box
时遇到了一个问题:我有 3 个 div
尺寸为 min-height: 24px
我想在添加水平边框时保持高度不变.
问题是如果在内容高度计算一次后添加水平边框,那么内容高度不会改变,div
增长按边框的值。
在我的例子中,当元素悬停时,边框由 CSS 本身添加。
悬停时第一个div
的高度增加,增加整个页面的高度↑
如果这是相关的:
该页面实际用作 Firefox webextension 中的弹出窗口。
我正在使用两个样式表,一个我无法修改 (extension.css
),另一个我用来扩展和覆盖第一个 (page-small.css
)。
对每个 div
应用一种样式,以通过 min-height: 24px;
覆盖受保护的 CSS 中的 height: 24px
以允许元素与内容一起成长。
当元素悬停时,如何在不改变外部尺寸的情况下管理这种增长?
.no-wrap {
white-space: nowrap;
}
.addl-text {
padding-left: 1em;
}
.start {
display: flex;
flex-direction: row;
align-items: flex-start;
}
#col-1 {
max-width: 300px;
}
#pli-1,
#pli-2,
#pli-3 {
height: unset; /* Want to cancel effect of... */
min-height: 24px; /* ...'height: 24px' in extension.css */
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="https://hg.mozilla.org/mozilla-central/raw-file/4f41a072c0ca/browser/components/extensions/extension.css">
<link rel="stylesheet" href="page-small.css">
</head>
<body>
<div id="col-1" class="panel-section">
<fieldset class="panel-section-list">
<legend>Checkboxes</legend>
<div id="pli-1" class="panel-list-item">
<div class="start">
<input id="c11" type="checkbox">
<label class="no-wrap" for="c11">Test</label>
<label class="addl-text" for="c11">Voluptate nisi expe tendis eiusmod firmissimum de cillum nam eiusmod firmis simum expetendis, ipsum offendit.</label>
</div>
</div>
<div class="panel-section-separator"></div>
<div id="pli-3" class="panel-list-item">
<input id="c12" type="checkbox">
<label class="no-wrap" for="c12">Test</label>
</div>
<div id="pli-2" class="panel-list-item">
<input id="c13" type="checkbox">
<label class="no-wrap" for="c13">Test</label>
</div>
</fieldset>
</div>
</body>
</html>
您的问题不在于框大小 属性,边框不包括在边框框或内容框的计算中;您的元素的大小将始终随着您应用的边框的大小而增加。
如果您不想让元素变大,请不要添加边框。
如果你想要边框效果,而不需要边框的物理属性,那么我建议改用 box-shadow。用box-shadow创建边框效果很简单,而且不会增加应用它的元素的大小。
例如:
box-shadow: inset 0 0 1px #333;
而不是:
border: 1px solid #333;
您只需添加隐藏边框即可实现您想要的效果。
为项目添加隐藏边框(白色),这样高度就不会增加。就像在片段中一样。
.panel-list-item:not(.disabled) {
border: 1px solid #fff;
}
您可能想调整其他样式来解决问题。
.panel-list-item:not(.disabled) {
border: 1px solid #fff;
}
.no-wrap {
white-space: nowrap;
}
.addl-text {
padding-left: 1em;
}
.start {
display: flex;
flex-direction: row;
align-items: flex-start;
}
#col-1 {
max-width: 300px;
}
#pli-1,
#pli-2,
#pli-3 {
height: unset; /* Want to cancel effect of... */
min-height: 24px; /* ...'height: 24px' in extension.css */
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="https://hg.mozilla.org/mozilla-central/raw-file/4f41a072c0ca/browser/components/extensions/extension.css">
<link rel="stylesheet" href="page-small.css">
</head>
<body>
<div id="col-1" class="panel-section">
<fieldset class="panel-section-list">
<legend>Checkboxes</legend>
<div id="pli-1" class="panel-list-item">
<div class="start">
<input id="c11" type="checkbox">
<label class="no-wrap" for="c11">Test</label>
<label class="addl-text" for="c11">Voluptate nisi expe tendis eiusmod firmissimum de cillum nam eiusmod firmis simum expetendis, ipsum offendit.</label>
</div>
</div>
<div class="panel-section-separator"></div>
<div id="pli-3" class="panel-list-item">
<input id="c12" type="checkbox">
<label class="no-wrap" for="c12">Test</label>
</div>
<div id="pli-2" class="panel-list-item">
<input id="c13" type="checkbox">
<label class="no-wrap" for="c13">Test</label>
</div>
</fieldset>
</div>
</body>
</html>
我在使用 box-sizing: border-box
时遇到了一个问题:我有 3 个 div
尺寸为 min-height: 24px
我想在添加水平边框时保持高度不变.
问题是如果在内容高度计算一次后添加水平边框,那么内容高度不会改变,div
增长按边框的值。
在我的例子中,当元素悬停时,边框由 CSS 本身添加。
悬停时第一个div
的高度增加,增加整个页面的高度↑
如果这是相关的:
该页面实际用作 Firefox webextension 中的弹出窗口。
我正在使用两个样式表,一个我无法修改 (
extension.css
),另一个我用来扩展和覆盖第一个 (page-small.css
)。对每个
div
应用一种样式,以通过min-height: 24px;
覆盖受保护的 CSS 中的height: 24px
以允许元素与内容一起成长。
当元素悬停时,如何在不改变外部尺寸的情况下管理这种增长?
.no-wrap {
white-space: nowrap;
}
.addl-text {
padding-left: 1em;
}
.start {
display: flex;
flex-direction: row;
align-items: flex-start;
}
#col-1 {
max-width: 300px;
}
#pli-1,
#pli-2,
#pli-3 {
height: unset; /* Want to cancel effect of... */
min-height: 24px; /* ...'height: 24px' in extension.css */
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="https://hg.mozilla.org/mozilla-central/raw-file/4f41a072c0ca/browser/components/extensions/extension.css">
<link rel="stylesheet" href="page-small.css">
</head>
<body>
<div id="col-1" class="panel-section">
<fieldset class="panel-section-list">
<legend>Checkboxes</legend>
<div id="pli-1" class="panel-list-item">
<div class="start">
<input id="c11" type="checkbox">
<label class="no-wrap" for="c11">Test</label>
<label class="addl-text" for="c11">Voluptate nisi expe tendis eiusmod firmissimum de cillum nam eiusmod firmis simum expetendis, ipsum offendit.</label>
</div>
</div>
<div class="panel-section-separator"></div>
<div id="pli-3" class="panel-list-item">
<input id="c12" type="checkbox">
<label class="no-wrap" for="c12">Test</label>
</div>
<div id="pli-2" class="panel-list-item">
<input id="c13" type="checkbox">
<label class="no-wrap" for="c13">Test</label>
</div>
</fieldset>
</div>
</body>
</html>
您的问题不在于框大小 属性,边框不包括在边框框或内容框的计算中;您的元素的大小将始终随着您应用的边框的大小而增加。
如果您不想让元素变大,请不要添加边框。
如果你想要边框效果,而不需要边框的物理属性,那么我建议改用 box-shadow。用box-shadow创建边框效果很简单,而且不会增加应用它的元素的大小。
例如:
box-shadow: inset 0 0 1px #333;
而不是:
border: 1px solid #333;
您只需添加隐藏边框即可实现您想要的效果。
为项目添加隐藏边框(白色),这样高度就不会增加。就像在片段中一样。
.panel-list-item:not(.disabled) {
border: 1px solid #fff;
}
您可能想调整其他样式来解决问题。
.panel-list-item:not(.disabled) {
border: 1px solid #fff;
}
.no-wrap {
white-space: nowrap;
}
.addl-text {
padding-left: 1em;
}
.start {
display: flex;
flex-direction: row;
align-items: flex-start;
}
#col-1 {
max-width: 300px;
}
#pli-1,
#pli-2,
#pli-3 {
height: unset; /* Want to cancel effect of... */
min-height: 24px; /* ...'height: 24px' in extension.css */
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="https://hg.mozilla.org/mozilla-central/raw-file/4f41a072c0ca/browser/components/extensions/extension.css">
<link rel="stylesheet" href="page-small.css">
</head>
<body>
<div id="col-1" class="panel-section">
<fieldset class="panel-section-list">
<legend>Checkboxes</legend>
<div id="pli-1" class="panel-list-item">
<div class="start">
<input id="c11" type="checkbox">
<label class="no-wrap" for="c11">Test</label>
<label class="addl-text" for="c11">Voluptate nisi expe tendis eiusmod firmissimum de cillum nam eiusmod firmis simum expetendis, ipsum offendit.</label>
</div>
</div>
<div class="panel-section-separator"></div>
<div id="pli-3" class="panel-list-item">
<input id="c12" type="checkbox">
<label class="no-wrap" for="c12">Test</label>
</div>
<div id="pli-2" class="panel-list-item">
<input id="c13" type="checkbox">
<label class="no-wrap" for="c13">Test</label>
</div>
</fieldset>
</div>
</body>
</html>