我有2个div浮在容器div的左边。第二个div有width: 20px
。我需要第一个div来填充所有可用空间并保持内联。将第一个div宽度设置为100%不起作用,因为固定宽度的第二个div会下降。我能怎么做?2浮动的div与第一个div宽度100%
的代码说明如下:http://jsfiddle.net/7EW5h/4/
感谢
我有2个div浮在容器div的左边。第二个div有width: 20px
。我需要第一个div来填充所有可用空间并保持内联。将第一个div宽度设置为100%不起作用,因为固定宽度的第二个div会下降。我能怎么做?2浮动的div与第一个div宽度100%
的代码说明如下:http://jsfiddle.net/7EW5h/4/
感谢
您是否尝试过使用position:absolute;
,因为你需要的元素的位置?
见小提琴 - JSFiddle Example
可以使用calc
CSS3功能和动态宽度设置为#inner1
股利如下:
width: calc(100% - 20px);
这将是与Firefox 16(或更高版本)兼容和Internet Explorer 9(或更高版本)。
可以添加供应商前缀,如下所示:
width: -moz-calc(100% - 20px);
width: -webkit-calc(100% - 20px);
width: calc(100% - 20px);
,使其与铬19(或更高版本),火狐4(或更高版本),互联网浏览器9(或更高版本)和Safari 6兼容的(或后来)。
你可以在这里查看兼容表:http://caniuse.com/#search=calc
关于你的例子,我不得不设置border: 0
到#inner1
和#inner2
的div。
我已经测试,并制定了在Chrome,IE9,Firefox和Opera的解决方案:
display
设置为block
(这是div
元素的默认值)。margin-right
设置为右元素的总宽度。在这里,我们还需要考虑两个元素的边界,边距和填充等内容。HTML:
<div id="container">
<div id="inner2">
<input />
</div>
<div id="inner1">
<input />
</div>
</div>
CSS:
#inner2 {
float: right;
}
#inner2 input {
height: 20px;
width: 20px;
border: 1px solid #000;
}
#inner1 {
margin-right: 24px;
}
#inner1 input {
width: 100%;
height: 20px;
border: 1px solid #000;
}
活生生的例子:http://jsfiddle.net/7EW5h/22/。 另请注意,我已明确设置了两个input
元素的边框。
我不能在不改变HTML或两个元素的顺序而不使用绝对定位的情况下工作。
我认为,没有复杂的事情,你可以做到以下几点。
为第一个输入添加填充以避免内容重叠。 还,即使它不是在我下面的代码所示,别忘了默认的边框,margin和padding的存在。
#container {
overflow: hidden;
background-color: red;
}
#inner1 {
width: 100%;
background-color: blue;
padding-right:45px;
}
#inner2 {
height: 20px;
width: 20px;
background-color: green;
position:absolute;
right:0;
top:0;
}
你知道的大小容器? –
我不明白你的问题,你想要第一个div占据整个空间,或者完全占用20px的空间吗? – poepje