当前位置: 首页 > 面试题库 >

CSS / DOM中的什么是阻止带有display:块的输入框扩展到其容器的大小

凌嘉志
2023-03-14
问题内容

HTML / CSS示例:

<div class="container">
    <input type="text" />
    <div class="filler"></div>
</div>

div.container {
    padding: 5px;
    border: 1px solid black;
    background-color: gray;
}

div.filler {
    background-color: red;
    height: 5px;
}

input {
    display: block;
}

为什么输入框不扩展为具有与外部相同的宽度,例如div.filler?也就是说,为什么输入框不能像其他块元素那样扩展以适合其容器width: auto;

我尝试检查Firebug中的“用户代理CSS”以查看是否可以在此处提出一些建议。没运气。我找不到CSS中的任何特定差异,可以将它们具体链接到输入框,而与常规框不同div.filler

除了好奇之外,我还想知道为什么要深入了解它,以找出一次设置宽度而忘记它的方法。我目前的做法是显式设置两者input及其包含的块元素的宽度,这似乎是多余的,而且不如模块化。虽然我熟悉将输入元素包装在div中然后为输入元素分配负边距的技术,但这似乎是非常不可取的。

规范导致输入框的格式与divs之类的普通块元素不同吗?边框框解决方案很棒,但是它并不能满足人们找出为什么输入框首先是这种方式的原因,以及为什么不能使它们表现得完全像普通div的不使用边框的s
那样的愿望。箱模型这些天。


问题答案:

有些元素(<input>, <select>, <button>, <img>, <object>, and <textarea>)被视为
替换元素, 其外观和尺寸由外部资源定义。(例如,操作系统,插件等)

替换的元素可以具有固有的尺寸-
宽度和高度值,该值由元素本身而不是由文档中的周围环境定义。例如,如果图像元素的宽度设置为auto,则将使用链接图像文件的宽度。内部尺寸还定义了一个内部比例,用于确定元素的计算尺寸(如果仅指定一个尺寸)。例如,如果仅为图像元素指定宽度(例如100px),而实际图像的宽度为200像素,高度为100像素,则元素的高度将按相同的比例缩放到50px。

在CSS的控制范围之外,替换的元素还可能具有由元素施加的视觉格式要求;例如,为表单元素呈现的用户界面控件。

W3C的CSS 2.1“ Visual Formatting ModelDetails”部分[讨论]了替换元素和未替换元素的宽度计算。

总体而言,某些表单元素(<textarea>,<button>,and<input>)非常令人讨厌。可以/会改变吗?可能不会很快到来…直到它的核心发生变化,我们必须坚持这些技巧



 类似资料:
  • 问题内容: 我无法理解为什么我们在PHP中需要2个XML解析器。 有人可以解释两者之间的区别吗? 问题答案: 简而言之: SimpleXml 用于简单的XML和/或简单的UseCases 与节点一起使用的有限API(例如,不能对接口进行太多编程) 所有节点属于同一种类(元素节点与属性节点相同) 节点可以魔术访问,例如 DOM 适用于您可能拥有的任何XML UseCase 是W3C DOM API的

  • 扩展是可定制化浏览体验的小程序,它们使用户可以根据个人需要或者偏好定制 Chrome 的功能和行为。它们基于 Web 技术(例如 HTML,JavaScript 和 CSS)构建。 扩展必须满足狭义定义且易于理解的单一目的(译者注:功能简单易懂化)。一个扩展可以包括多个组件和一系列功能,只要所有的内容都有助于实现共同的目标。 用户交互界面应尽量小且有意图。他们的范围从简单的图标,如右侧显示的 Go

  • 问题内容: 我现在正在阅读J2EE 1.4规范,有很多我不明白的术语会做什么。这是从容器规范中得出的: 容器为J2EE应用程序组件提供运行时支持。容器为应用程序组件提供了底层J2EE API的联合视图。J2EE应用程序组件从不与其他J2EE应用程序组件直接交互。他们使用容器的协议和方法相互之间以及与平台服务进行交互。在应用程序组件和J2EE服务之间插入一个容器可以使该容器透明地注入由组件的部署描述

  • 问题内容: 我想用PHP包装CSS文件…因此,我为CSS文件编写了标头,并给了它一个.php文件扩展名,因此… css.php。 如果该页面已被用作包含内容,是否可以使用?还是这个新标题与页面所包含的框架冲突? 问题答案: 加纳夫钉牢了它。 我做: 然后在您的.css.php文件顶部:

  • 设置: 我安装了Postresql(11.10版)和TimescaleDB(1.7.1版)扩展。我有2个表,我想用安装在Kafka Connect上的Debezium(ver1.3.1)连接器监视它们,目的是CDC(捕获数据更改)。 表是table1和table2hyper,但table2hyper是hypertable。 在Kafka Connect中创建Debezium连接器后,我可以看到创建