如何在html中的<div>标签内填充内容?

Ras*_*sto 5 html css

我有一个具有精确宽度(280px)的div,其中有2个超链接和一个输入文本框.超链接只需要一点空间.我希望输入文本框填充中的剩余空间div.我怎样才能做到这一点 ?

HTML:

<div class="notificationArea">
    <a>A</a> <a>B</a>
    <input id="Text1" type="text" />
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

.notificationArea
{
width: 280px;
vertical-align: middle;
text-align:left;
}
Run Code Online (Sandbox Code Playgroud)

注意:我可以用div其他东西替换外层(例如span),但我试图避免使用表格.


编辑:所有元素(超链接和输入)应该在同一行.


编辑2:当我用图像替换两个超链接时,我希望同样的思考工作.那就是我想要一个div包含2个图像(固定大小)和inputtextboxt 的固定宽度,它将填充剩余空间.

HTTP:

<div class="notificationArea">
    <img src="someImage" />
    <img src="someImage2" />
    <input id="Text1" type="text" />
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

.notificationArea
{
    border-style: solid;
    width: 330px;
}
.notificationArea input
{
    width: 100%;
}
Run Code Online (Sandbox Code Playgroud)

我得到的是: 不想要的例子


但我想要的是: 想要的例子

所以我不希望输入框包装.图片上的解决方案使用了我希望尽可能避免使用的表格.

thi*_*dot 5

我知道你说过:

我正试着避开桌子.

但是,他们使这很容易,所以这是一个display: table基础答案:

现场演示

如果不诉诸JavaScript,我无法想到更有说服力的方法.

CSS:

.notificationArea
{
    width: 280px;
    vertical-align: middle;
    text-align:left;
    background: #ccc;
    display: table
}
.notificationArea a, .notificationArea input {
    display: table-cell
}
.notificationArea input {
    width: 100%
}
Run Code Online (Sandbox Code Playgroud)

HTML:

<div class="notificationArea">
    <a href="#">A</a> <a href="#">B</a>
    <input id="Text1" type="text" />
</div>
Run Code Online (Sandbox Code Playgroud)

  • 是的,我对这种"桌子"没有任何问题.它并没有改变任何与语义相关的东西或者用超过9000个嵌套标签弄乱你的HTML或"<table>":)的任何常见缺点 (2认同)
  • @battal:你是对的.它不适用于IE7(!),而且真正的旧WebKit浏览器需要一个带有`display:table-row`的包装元素. (2认同)