具有可变宽度输入的固定宽度元素
Fixed width element with variable width input
您可能会说之前有人问过这个问题,但这是一个带有错误的变体。所以我们都知道用来回答这个问题的技术:
Fixed width div on left, fill remaining width div on right
但是,如果可变宽度元素是输入标签,这将不起作用。
http://jsfiddle.net/8pk4K/2050/
即使覆盖默认输入 css 也无法解决此问题:
display: block;
overflow:hidden;
background-color:green;
height: 100px;
width: auto;
我已经玩这个很久了,它只发生在输入标签上,如果你用一个跨度替换它(默认显示内联但将它设置为显示块)它仍然有效。
知道为什么这只不适用于输入标签而没有别的吗?
编辑:
为了澄清起见,我知道解决这个问题的方法是将输入放入 div 并将宽度 100% 应用于输入。我的问题是为什么这是必要的,而不是如何解决它。
尝试为 .header 和 .header-right 添加宽度(以 % 为单位)。
喜欢
.header{
width:20%;
}
.header-right{
width:80%;
}
您可以使用 calc 来生成您想要的宽度,因为输入是替换元素,具有与图像一样的固有尺寸
CSS
.header-right{
display: block;
overflow:hidden;
background-color:green;
height: 100px;
border: none;
width: calc(100% - 240px); //Add this
}
注意:您必须给 select 一个尺寸(宽度),否则给您默认的浏览器宽度
我知道这个问题,表单元素的样式总是很麻烦。
我想出了这个解决方法,将输入包装在右边 div。
<div class="header"></div>
<div class="header-right">
<input type="text" />
</div>
.header{
float:left;
background: #efefef;
background-repeat: no-repeat;
width: 240px;
height: 100px;
}
.header-right{
overflow:hidden;
background-color:#000;
height: 100px;
position: relative;
}
.header-right input {
background: green;
position: absolute;
width: 100%;
height: 100%;
}
您可能会说之前有人问过这个问题,但这是一个带有错误的变体。所以我们都知道用来回答这个问题的技术: Fixed width div on left, fill remaining width div on right
但是,如果可变宽度元素是输入标签,这将不起作用。
http://jsfiddle.net/8pk4K/2050/
即使覆盖默认输入 css 也无法解决此问题:
display: block;
overflow:hidden;
background-color:green;
height: 100px;
width: auto;
我已经玩这个很久了,它只发生在输入标签上,如果你用一个跨度替换它(默认显示内联但将它设置为显示块)它仍然有效。
知道为什么这只不适用于输入标签而没有别的吗?
编辑: 为了澄清起见,我知道解决这个问题的方法是将输入放入 div 并将宽度 100% 应用于输入。我的问题是为什么这是必要的,而不是如何解决它。
尝试为 .header 和 .header-right 添加宽度(以 % 为单位)。 喜欢
.header{
width:20%;
}
.header-right{
width:80%;
}
您可以使用 calc 来生成您想要的宽度,因为输入是替换元素,具有与图像一样的固有尺寸
CSS
.header-right{
display: block;
overflow:hidden;
background-color:green;
height: 100px;
border: none;
width: calc(100% - 240px); //Add this
}
注意:您必须给 select 一个尺寸(宽度),否则给您默认的浏览器宽度
我知道这个问题,表单元素的样式总是很麻烦。
我想出了这个解决方法,将输入包装在右边 div。
<div class="header"></div>
<div class="header-right">
<input type="text" />
</div>
.header{
float:left;
background: #efefef;
background-repeat: no-repeat;
width: 240px;
height: 100px;
}
.header-right{
overflow:hidden;
background-color:#000;
height: 100px;
position: relative;
}
.header-right input {
background: green;
position: absolute;
width: 100%;
height: 100%;
}