我有一个html输入。
输入有padding: 5px 10px;
我希望它是父div宽度的100%(这是流畅的)。
然而,使用width: 100%;
会导致输入为100% + 20px
,我该如何解决此问题?
答案 0 :(得分:426)
box-sizing: border-box
是一种快速,简便的解决方法:
这will work in all modern browsers和IE8 +。
以下是演示:http://jsfiddle.net/thirtydot/QkmSk/301/
.content {
width: 100%;
box-sizing: border-box;
}
现代浏览器不需要浏览器前缀版本(-webkit-box-sizing
等)。
答案 1 :(得分:273)
这就是我们在CSS中使用box-sizing
的原因。
我编辑了您的示例,现在可以在Safari,Chrome,Firefox和Opera中使用。看看:http://jsfiddle.net/mathias/Bupr3/ 我添加的只是:
input {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
不幸的是,IE7等旧版浏览器不支持此功能。如果您正在寻找适用于旧IE的解决方案,请查看其他答案。
答案 2 :(得分:39)
也使用百分比填充并从宽度中删除:
padding: 5%; width: 90%;
答案 3 :(得分:27)
您可以不使用box-sizing
和不清晰的解决方案(例如width~=99%
)来执行此操作。
padding
和border
margin
= border-width
+ horizontal padding
padding
包装等于margin
HTML标记:
<div class="input_wrap">
<input type="text" />
</div>
<强> CSS:强>
div {
padding: 6px 10px; /* equal to negative input's margin for mimic normal `div` box-sizing */
}
input {
width: 100%; /* force to expand to container's width */
padding: 5px 10px;
border: none;
margin: 0 -10px; /* negative margin = border-width + horizontal padding */
}
答案 4 :(得分:18)
使用css calc()
超级简单而且棒极了。
input {
width: -moz-calc(100% - 15px);
width: -webkit-calc(100% - 15px);
width: calc(100% - 15px);
}
如下所示:Div width 100% minus fixed amount of pixels
通过webvitaly(https://stackoverflow.com/users/713523/webvitaly)
原始来源:http://web-profile.com.ua/css/dev/css-width-100prc-minus-100px/
刚刚在这里复制了这个,因为我差点错过了另一个帖子。
答案 5 :(得分:8)
假设我在一个15px填充的容器中,这就是我一直用于内部的部分:
width:auto;
right:15px;
left:15px;
这会将内部部分拉伸到任何宽度,应该小于15px两侧。
干杯
安迪
答案 6 :(得分:5)
你可以尝试一些定位技巧。您可以将输入放在具有position: relative
和固定高度的div中,然后在输入上放置position: absolute; left: 0; right: 0;
,以及您喜欢的任何填充。
答案 7 :(得分:4)
将输入框'padding移动到包装元素。
<style>
div.outer{ background: red; padding: 10px; }
div.inner { border: 1px solid #888; padding: 5px 10px; background: white; }
input { width: 100%; border: none }
</style>
<div class="outer">
<div class="inner">
<input/>
</div>
</div>
请参阅此处的示例:http://jsfiddle.net/L7wYD/1/
答案 8 :(得分:4)
以下是来自codeontrack.com的建议,该建议有很好的解决方案示例:
不是将div的宽度设置为100%,而是将其设置为auto,并确保将
<div>
设置为display:block(<div>
的默认值)。
答案 9 :(得分:2)
只需了解width:auto;宽度:100%; 宽度:自动;将(自动)MATICALLY计算宽度,以适应包含div的精确给定,包括填充。 宽度100%扩展宽度并添加填充。
答案 10 :(得分:0)
将它包装在容器中怎么样?容器应该具有如下风格:
{
width:100%;
border: 10px solid transparent;
}
答案 11 :(得分:0)
我有同样的问题。像这样修复它:
width: 100%;
padding: 5px;
/*--------------Now remove from padding what you've added---------------*/
margin:-5px;
干杯
答案 12 :(得分:0)
试试这个:
public ModelAndView exportToExcel(String fileName1, String filename2,String sheetname1,String sheetName2,
String[] headerLabels1, String[] headerLabels2,int[] datatypeArray1,int[] datatypeArray2, String procString1,String procString2,
Object[] objarray, HttpServletRequest arg0,
HttpServletResponse arg1, String[] dbColumnNameArray1,String[] dbColumnNameArray2)
throws Exception {
Log.info(DownloadExcelController.class,
"Execution Starts..exportExcel()");
Map<String, DownloadExcelBean> downloadExcelBean = new HashMap<String, DownloadExcelBean>();
//System.out.println(" in export excel part....."+procString+":::"+datatypeArray);
List<List> workLists1 = downloadExcelService.storedProcedureToExcel(
datatypeArray1, procString1, objarray, dbColumnNameArray1);
List<List> workLists2 = downloadExcelService.storedProcedureToExcel(
datatypeArray2, procString2, objarray, dbColumnNameArray2);
DownloadExcelBean bean = new DownloadExcelBean();
bean.setFilename(fileName1);
bean.setSheetname(sheetname1);
bean.setHeaderArray(headerLabels1);
bean.setDatatypeArray(datatypeArray1);
// bean.setVisibleArray(visibleArray);
bean.setData(workLists1);
DownloadExcelBean bean2 = new DownloadExcelBean();
bean2.setFilename(filename2);
bean2.setSheetname(sheetName2);
bean2.setHeaderArray(headerLabels2);
bean2.setDatatypeArray(datatypeArray2);
bean2.setData(workLists2);
downloadExcelBean.put("downloadExcelBean", bean);
downloadExcelBean.put("downloadExcelBean2", bean2);
return new ModelAndView("DownloadExcelView", "model",
downloadExcelBean);
}
答案 13 :(得分:0)
自上次回答这个问题以来,浏览器可能已经发生了变化,但这是我唯一能够可靠地完成此任务的方法:
width: auto;
left: 0;
right: 0;
然后您可以根据需要设置边距/填充,并且元素不会超出其可用宽度。
这与过去@andology 的回答类似,但如果您将左/右都设为 0,那么您可以根据需要制作 margin
和/或 padding
。所以这始终是我的默认 div
。
答案 14 :(得分:-1)
对我来说,使用margin:15px;padding:10px 0 15px 23px;width:100%
的结果是:
对我来说,解决方案是使用width:auto
而不是width:100%
。我的新代码是:
margin:15px;padding:10px 0 15px 23px;width:auto
。然后元素正确对齐:
答案 15 :(得分:-8)
你可以这样做:
width: auto;
padding: 20px;