2017-04-13 79 views
0

为什么输入元素不是在将其显示更改为block后会自动占用其容器宽度的100%?还有其他一些因素对此有影响吗?谢谢。演示见下文:input element,display bock


一些解释: 1.我注释掉宽度:100%有意因为块级元素应该占用它的容器宽度的100%。


#container { 
 
    width: 300px; 
 
    margin: auto; 
 
    background-color: red; 
 
} 
 

 
input[type="text"] { 
 
    display: block; 
 
    opacity:0.5; 
 
    /*width:100%;*/ 
 
}
<body> 
 
    <section> 
 
    <div id="container"> 
 
     <input type="text"> 
 
    </div> 
 
    </section> 
 
</body>

+0

注释掉风格的宽度。 – Nitheesh

+0

给出宽度:输入元素的100%并检查。 –

+0

使用100%,这将取得父元素的全宽,所以你的输入将是300px。提示:为你的输入字段添加一个类,不要使用“input [type =”text“]”来设置它们的样式。 – divisionkiller

回答

0

我不是专家,但我敢肯定那是因为你已经注释掉宽度:100%。尝试decommenting是那么它应该工作

#container { 
 
    width: 300px; 
 
    margin: auto; 
 
    background-color: red; 
 
} 
 

 
input[type="text"] { 
 
    display: block; 
 
    opacity:0.5; 
 
    width:100%; 
 
}

0

改变了代码检查现在

#container { 
 
    width: 300px;margin: auto; 
 
    background-color: red; 
 
} 
 

 
input[type="text"] { 
 
    opacity:0.5; 
 
    width:100%; 
 
border-width:0; 
 
padding:0; 
 
}
<body> 
 
    <section> 
 
    <div id="container"> 
 
     <input type="text"> 
 
    </div> 
 
    </section> 
 
</body>

0

默认输入元件具有border: 2pxpadding: 1px 0在谷歌浏览器

Box model of input element

当你在实际应用中的100%的宽度,输入竟然出现了宽度比实际div的外面覆盖输入的它

宽度(集到div的宽度)+ border + padding> div的宽度

右边有一个小小的白色区域,以防您在代码中取消注释width:100%。那个白色区域实际上是输入。如果您设置边界为零,这真的够解决的事情

#container { 
 
    width: 300px; 
 
    margin: auto; 
 
    background-color: red; 
 
} 
 

 
input[type="text"] { 
 
    display: block; 
 
    opacity: 0.5; 
 
    width: 100%; 
 
    border: 0 
 
}
<body> 
 
    <section> 
 
    <div id="container"> 
 
     <input type="text"> 
 
    </div> 
 
    </section> 
 
</body>
输入

0

默认大小是20,因此,如果您的输入自动它的大小是没有定义的大小或CSS规则20. 最好的解决方案是增加宽度。如果你想成为响应

#container 
{ 
    width: 300px; 
    margin: auto; 
    background-color: red; 
} 
input[type="text"] 
{ 
    display: block; 
    opacity:0.5; 
    width:100%; 
    -webkit-box-sizing: border-box; 
    -moz-box-sizing: border-box; 
    box-sizing: border-box; 
} 

最好是添加盒大小,以这样的所有元素: 试试这个代码

* 
{ 
    -webkit-box-sizing: border-box; 
    -moz-box-sizing: border-box; 
    box-sizing: border-box; 
} 
+0

20 _what_?我试图与上面的例子:'em','ex','pc','ch','%','vw','rem','pt'。没有什么符合相同的尺寸。 PS:我没有尝试'px','vh'和打印单位,比如'cm','in',... – Werner

+0

您是否尝试过** box-sizing **?此CSS指定元素应该在元素的总宽度和高度中包含填充和边框。 –

+0

好的,我想出你所说的单位实际上是html-width('')。 – Werner