我一直在查找,但我找不到适用于我的问题的解决方案。
我正在开发一个移动网站,并需要使输入框的宽度为屏幕的100%。但是我有padding-left: 16px
和margin: 5px
,这使得框超出屏幕,因此我必须向右滚动才能看到框的末尾。如何使框100%减去填充和边距?
我一直在查找,但我找不到适用于我的问题的解决方案。
我正在开发一个移动网站,并需要使输入框的宽度为屏幕的100%。但是我有padding-left: 16px
和margin: 5px
,这使得框超出屏幕,因此我必须向右滚动才能看到框的末尾。如何使框100%减去填充和边距?
块级元素自然填充其父级,但是如果您明确设置宽度,则可以覆盖此行为,从而允许添加到指定宽度的边距和边框。您在body上指定了100%的宽度,因此如果在其右侧内边缘呈现元素,则可以使其在水平方向上溢出文档。
示例:http://jsfiddle.net/trex005/6earf674/
这个简单的解决方法是停止声明body的宽度。如果由于某种原因需要这样做,可以将margin设置为0;输入框也适用同样的原理,但是会更加复杂。即使将输入框(文本/密码)和文本区域设置为块级显示,它们的宽度仍将从size和cols中派生。这可以通过在CSS中指定宽度来覆盖,但是它们还具有用户代理指定的边框和边距,因此您再次面临溢出问题。要解决此溢出问题,您需要将输入框的display设置为block,并将box-sizing设置为border-box。Border box将计算边框和填充作为宽度的一部分。
input[type="text"], input[type="password"] {
width: 100% !important;
margin: 5px !important;
box-sizing:border-box;
display:block;
}
<br>
标签是多余的。移除它们,你就可以继续进行了!calc
,因为我不想重复填充代码。请注意,display
也可以是 flex
。 - Wit我曾经遇到过100%高度的问题,后来我想到了一个解决方法,就是在100%高度/宽度(即父元素)上方的元素中使用padding。
<div style="padding: 1rem;">
<div style="height:100%; width:100%">
<p>The cat sat on the mat</p>
</div>
</div>
width:100%
然后添加您需要的任意数量的填充即可:#login_box {
padding:10px;
margin:50px;
}
隔离效果:
演示 http://jsbin.com/ozazat/1/edit
有大量的填充、边距,也没有问题。
#login_box {
width: 100%;
position:relative;
}
input[type="text"], input[type="password"] {
position:absolute;
left:5px;
right: 5px
}
您需要调整边距等,因为它们将超出相对布局流。您也可以轻松添加填充,因为您没有设置固定宽度。
这种技术在所有浏览器中都得到广泛支持。
您可以将文本框的宽度从100%调整为95%。现在看起来很好。
input[type="text"], input[type="password"] {
width: 95% !important;
margin: 5px !important;
}
box-sizing: border-box
可以解决 padding 的问题,但无法解决 margin 的问题。 - mashwidth: auto; left: 0px; right: 0px; max-width: 100%;
所有其他答案都存在缺点/问题。 - Emperor Eto