【问题标题】:Different element width and CSS width [closed]不同的元素宽度和 CSS 宽度
【发布时间】:2015-11-16 22:52:49
【问题描述】:

当我使用 FF 检查器查看元素时,它会显示 225px 宽度。
但 CSS width: 207px 应用于此元素。
线索是引导程序。我认为它通过不同的分辨率导致了这种差异。 还有一个工具可以揭示变化的来源吗?
我的意思是一种在特殊属性更改时通知的工具。
提前感谢您的任何帮助

这些来自 FF Inspector 的两种状态:
元素是 input[type=text]

<input aria-invalid="true" class="invalid" name="jform[university]" id="jform_university" value="" required="" aria-required="true" type="text">


状态 1:宽度 = 225px

*::-moz-selection {
    background: #F9924F none repeat scroll 0% 0%;
    color: #FFF;
}
element {
}
select, textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input {
    width: 207px;
    max-width: 207px !important;
}
.form-search input, .form-search textarea, .form-search select, .form-search .help-inline, .form-search .uneditable-input, .form-search .input-prepend, .form-search .input-append, .form-inline input, .form-inline textarea, .form-inline select, .form-inline .help-inline, .form-inline .uneditable-input, .form-inline .input-prepend, .form-inline .input-append, .form-horizontal input, .form-horizontal textarea, .form-horizontal select, .form-horizontal .help-inline, .form-horizontal .uneditable-input, .form-horizontal .input-prepend, .form-horizontal .input-append {
    display: inline-block;
    margin-bottom: 0px;
    vertical-align: middle;
}
textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input {
    background-color: #FFF;
    transition: border 0.2s linear 0s, box-shadow 0.2s linear 0s;
}
select, textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input {
    display: inline-block;
    border-radius: 5px;
    vertical-align: middle;
    line-height: 36px;
    height: 36px;
    font-size: 12px;
    padding: 0px 8px;
    border: 1px solid #CACACA;
    color: #424242;
    background: #FFF none repeat scroll 0% 0%;
    font-family: Tahoma;
}
.form-search input, .form-inline input, .form-horizontal input, .form-search textarea, .form-inline textarea, .form-horizontal textarea, .form-search select, .form-inline select, .form-horizontal select, .form-search .help-inline, .form-inline .help-inline, .form-horizontal .help-inline, .form-search .uneditable-input, .form-inline .uneditable-input, .form-horizontal .uneditable-input, .form-search .input-prepend, .form-inline .input-prepend, .form-horizontal .input-prepend, .form-search .input-append, .form-inline .input-append, .form-horizontal .input-append {
    display: inline-block;
    margin-bottom: 0px;
}
body, a, input, .jm-title, .jm-module, .btn {
    font-family: Yekan !important;
}
input, textarea, .uneditable-input {
    margin-left: 0px;
}
label, input, button, select, textarea {
    font-size: 13px;
    font-weight: normal;
    line-height: 20px;
}
input, textarea, select, .uneditable-input {
    display: inline-block;
    height: 18px;
    padding: 4px;
    font-size: 13px;
    line-height: 18px;
    color: #555;
    border: 1px solid #CCC;
}
label, input, button, select, textarea {
    font-size: 11px;
    font-weight: normal;
    line-height: 18px;
}
button, input {
    line-height: normal;
}
button, input, select, textarea {
    margin: 0px;
    font-size: 100%;
    vertical-align: middle;
}
body {
    color: #6A6A6A;
    font-family: Tahoma;
    font-size: 11px;
}
body {
    line-height: 1.5em;
}
body {
    font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
    font-size: 13px;
    line-height: 18px;
    color: #333;
}
html {
    font-size: 100%;
}

状态 2:宽度 = 207px

*::-moz-selection {
    background: #F9924F none repeat scroll 0% 0%;
    color: #FFF;
}
element {
}
select, textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input {
    width: 207px;
    max-width: 207px !important;
}
.form-search input, .form-search textarea, .form-search select, .form-search .help-inline, .form-search .uneditable-input, .form-search .input-prepend, .form-search .input-append, .form-inline input, .form-inline textarea, .form-inline select, .form-inline .help-inline, .form-inline .uneditable-input, .form-inline .input-prepend, .form-inline .input-append, .form-horizontal input, .form-horizontal textarea, .form-horizontal select, .form-horizontal .help-inline, .form-horizontal .uneditable-input, .form-horizontal .input-prepend, .form-horizontal .input-append {
    display: inline-block;
    margin-bottom: 0px;
    vertical-align: middle;
}
textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input {
    background-color: #FFF;
    transition: border 0.2s linear 0s, box-shadow 0.2s linear 0s;
}
select, textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input {
    display: inline-block;
    border-radius: 5px;
    vertical-align: middle;
    line-height: 36px;
    height: 36px;
    font-size: 12px;
    padding: 0px 8px;
    border: 1px solid #CACACA;
    color: #424242;
    background: #FFF none repeat scroll 0% 0%;
    font-family: Tahoma;
}
.form-search input, .form-inline input, .form-horizontal input, .form-search textarea, .form-inline textarea, .form-horizontal textarea, .form-search select, .form-inline select, .form-horizontal select, .form-search .help-inline, .form-inline .help-inline, .form-horizontal .help-inline, .form-search .uneditable-input, .form-inline .uneditable-input, .form-horizontal .uneditable-input, .form-search .input-prepend, .form-inline .input-prepend, .form-horizontal .input-prepend, .form-search .input-append, .form-inline .input-append, .form-horizontal .input-append {
    display: inline-block;
    margin-bottom: 0px;
}
body, a, input, .jm-title, .jm-module, .btn {
    font-family: Yekan !important;
}
input, textarea, .uneditable-input {
    margin-left: 0px;
}
label, input, button, select, textarea {
    font-size: 13px;
    font-weight: normal;
    line-height: 20px;
}
input, textarea, select, .uneditable-input {
    display: inline-block;
    height: 18px;
    padding: 4px;
    font-size: 13px;
    line-height: 18px;
    color: #555;
    border: 1px solid #CCC;
}
label, input, button, select, textarea {
    font-size: 11px;
    font-weight: normal;
    line-height: 18px;
}
button, input {
    line-height: normal;
}
button, input, select, textarea {
    margin: 0px;
    font-size: 100%;
    vertical-align: middle;
}
body {
    color: #6A6A6A;
    font-family: Tahoma;
    font-size: 11px;
}
body {
    line-height: 1.5em;
}
body {
    font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
    font-size: 13px;
    line-height: 18px;
    color: #333;
}
html {
    font-size: 100%;

【问题讨论】:

  • 元素加上边框(如果有)内必须有一些padding,除非您指定box-sizing: border-box,否则填充会增加元素的width
  • 有很多原因可以解释这种行为,所以如果没有额外的信息,我们无法判断任何事情(因此,不建议任何解决方案)。您能否提供有关计算样式、实际应用的 css 选择器、元素内容的信息?
  • @RohitKumar,两种宽度的填充相同。这种差异肯定不是由填充产生的。
  • @DominikSchreiber,我同意你的看法。可以有这么多原因。但是,如果有一个工具可以触发均匀的宽度变化可能会有所帮助。顺便说一句,我编辑了问题并添加了更多细节

标签: css twitter-bootstrap width


【解决方案1】:

据我了解,您在输入中设置了width:207px,并问自己(和我们)为什么它在页面上显示为225px 宽度。

您似乎遇到了 css box model 计算。


默认情况下(这是您所处的模式,因为您没有指定其他任何内容)框处于box-sizing:content-box 模式。你想要的是box-sizing:border-box,因为它几乎总是表现得更自然。要将其应用于元素,您必须在其上设置 box-sizing 属性。


(来源:binvisions.com

内容框

仅根据元素的内容计算元素的width/height。这意味着paddingborder-widthmargin 都在元素的尺寸“外部”。

当您在此模型中指定 width:207px 时,这意味着“此元素的内容应为 207 像素宽”。填充和边框宽度被添加到其中。

边框

paddingborder-width 添加到此计算中。 width 现在是 content + padding + border-width 的总和。

padding:8pxborder-width:1px 指定width:207px 表示有207px - 2*8px - 2*1px = 189px 内容空间。


针对问题的解决方案

你申请

select, textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input {
    width: 207px;
}

select, textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input {
    padding: 0 8px;
    border: 1px solid #CACACA;
}

当您处于content-box 模式时,计算出的宽度为207px + 2*8px + 2*1px,这正是您观察到的225px

box-sizing:border-box 应用于该元素,它就可以工作了。但要注意,这可能会破坏该样式的所有其他内容。也许你最好对它应用width:189px

【讨论】:

  • 感谢您的出色回答。我不清楚的模型与 Box-Model 有关。即使使用 width: 207px !important,在不同的分辨率下,它也会显示不同的宽度。请看下面问题的图片
  • 抱歉,stackoverflow 不允许我添加图片。但他是我的全部。使用 css (width: 207px !important, 相同的 padding, margin, border-width),在屏幕分辨率 > 980px 时,宽度变为 width(207)+padding(8+8)+broder(1+1)=225px,但在分辨率
  • 我在你提到的 box-sizing 中找到了宽度变化的原因。分辨率
  • 我通常使用 Chrome,因为我非常喜欢那里的 DevTools。但即使是 FF DevTools 也会有类似“Computed Styles”的东西,它们会向您展示实际应用于元素的内容。在那里您可能会发现差异。
  • 我可以在 FF 和 chrome 的计算样式中看到这个问题。但是,我非常小心地使用了 ISSUE 这个词。顺便说一句,感谢您的帮助
猜你喜欢
  • 2016-02-15
  • 1970-01-01
  • 2015-03-07
  • 1970-01-01
  • 2021-10-15
  • 2013-03-05
  • 1970-01-01
  • 1970-01-01
  • 2012-05-08
相关资源
最近更新 更多