带有display:block的输入html元素的奇怪行为
我正试图在bootstrap的帮助下制作一些html表单。我的一些输入必须与左侧或右侧没有间隙。但是自举。col-XX-Y块从左到右都有通过填充物的排水沟。所以我的想法是为我的输入元素使用负边距,并显示:block。我被困在这里了。 请参考这个。我面临着几件奇怪的事情:带有display:block的输入html元素的奇怪行为,html,css,twitter-bootstrap,Html,Css,Twitter Bootstrap,我正试图在bootstrap的帮助下制作一些html表单。我的一些输入必须与左侧或右侧没有间隙。但是自举。col-XX-Y块从左到右都有通过填充物的排水沟。所以我的想法是为我的输入元素使用负边距,并显示:block。我被困在这里了。 请参考这个。我面临着几件奇怪的事情: 为什么使用display:block输入不能填充其父项的所有内容 容器,比如divdoes?它只填充容器:宽度:100%(代码笔示例中红色边框输入的注释width) 为什么我要应用负的左边距来补偿父容器的 左填充,我的输入向左移
display:block
输入不能填充其父项的所有内容
容器,比如div
does?它只填充容器:宽度:100%代码>(代码笔示例中红色边框输入的注释width
)
左边距来补偿父容器的
左填充,我的输入向左移动,但保持其原始宽度(如使用了left
css属性)。难道它不需要表现吗
与块元素类似(例如div
):向左移动并保持不变
填充其父对象的所有宽度,不包括右填充
输入应用负右边距来补偿父母的右边距时,什么也没发生(看我的例子,比较orange div
带有红色输入)。为什么?那么像块元素这样的行为呢
如果这是正常的行为,你能给我一些html标准文档的链接并解释一下吗。如果你不想网格父元素上的填充影响它的子元素,请在块元素中用一个行类包围它的所有子元素 引导输入元素要跨越父元素的整个宽度,即使没有显示块样式属性
<div class="col-md-12">
<div class="row"> <!--this is what you need -->
</div>
</div>
完整示例代码
<div class="col-md-12">
<div class="row">
<input type="text" placeholder='I\'m some damned input' />
</div>
<div class="row">
<div>I am some div</div>
</div>
</div>
表单元素的行为方式与常规块级元素不同。当您将
字段显示为块时,它不会填充整个宽度
因此,您需要使元素的宽度为100%
。这就是引导样式形成元素的方式
与任何其他块元素一样,将其宽度设置为100%将允许它填充其容器的宽度。当您应用负数左边距时,宽度仍然相同(100%=容器宽度),这将导致出现间隙
我建议将
字段包装在
中,并对其应用负边距:
.wrap {
margin: 0 -20px;
}
.wrap input {
width: 100%;
display: block;
}
为什么不去掉填充物呢?是的,这很简单,但我想了解这里发生了什么。仔细看看应用于元素的样式。.container
和.col-md-12
都在应用左填充:15px;右侧填充:15px代码>。您可能应该尝试删除这些属性,而不是尝试在子对象中处理这些属性。好的,您是对的,但这在我的情况下并不重要,我已经编辑了代码笔。主要问题是为什么带有display:block的输入行为与reqular块级别元素不同。是的,因为.row类从左到右设置负边距,所以它补偿.col-XX-Y类的填充。但是为什么我必须创建一堆嵌套的div,而不是一个div,或者最好只使用正确的css输入元素呢?所以我的问题的主要目的是理解带有display:blocks的输入html元素的行为,我认为你们混合了本机css和bootstrap,你们说你们在使用bootstrap,对吗?但是为什么我要做一堆嵌套的div而不是一个div呢“因为这就是引导的工作原理。bootstrap是css和其他ui技术,它们已经由其他一些人编写,用于帮助您引导ui开发。这意味着有一些已经编写好的css,如果页面上的html元素按照这些指导原则进行布局,它将生成它们所记录的内容。我的问题是理解带有显示的输入html元素的行为:block是的,您是对的。但输入元素的这种行为对我来说是相当新的,所以我要求解释一下,以了解其技术方面。当然,我将使用额外的div作为输入的包装,并在需要时手动将其填充设置为零。你能给我一些技术文档的链接吗,我可以在那里阅读相关内容?