我试图在div元素中对齐div和图像,使它们水平居中。这似乎正常工作,直到我指定img元素的src属性 - 为其分配一个图像;在这一点上看起来像是这样:
源代码如下(HTML):
<div id="sContainer">
<input id="sBox" type="text" />
<img id="sButton" alt="Search" src="images/searchglass.jpg" />
</div>
和(CSS):
#sContainer
{
background-color:yellow;
float:left;
text-align:center;
width:560px;
}
对于那些对图像在src属性中没有值的情况感兴趣的人,因此显示替代文本,这就是它的样子:
任何人都知道如何解决这个恼人的问题?
修改
更多HTML代码:
<div class="center" id="header">
<div id="leftContainer"></div>
<div id="sContainer">
<input id="sBox" type="text" />
<img id="sButton" alt="Search" src="images/searchglass.jpg" />
</div>
<div id="rightContainer"></div>
</div>
和CSS:
.center
{
clear:both;
margin-left:auto;
margin-right:auto;
width:960px;
}
#header
{
background-color:gray;
height:50px;
}
#rightContainer
{
background-color:red;
float:left;
width:200px;
}
#leftContainer
{
background-color:green;
float:left;
width:200px;
}
#sBox
{
border-bottom-color:black;
border-bottom-style:solid;
border-bottom-width:1px;
border-left-color:black;
border-left-style:solid;
border-left-width:1px;
border-top-color:black;
border-top-style:solid;
border-top-width:1px;
height:18px;
padding:5px;
width:348px;
}
#sContainer
{
background-color:yellow;
float:left;
text-align:center;
width:560px;
}
#searchContainer > *
{
vertical-align:middle;
}
答案 0 :(得分:1)
当图片具有有效的src
属性时,它会获得尺寸,因此会强制其父元素的高度。如果要将文本框和图像保持为内联元素,可以将父级的行高调整为图像高度:
#sContainer
{
background-color:yellow;
float:left; // btw, does this need to be floated?
text-align:center;
width:560px;
line-height: 30px;
}
但是,这不会在所有浏览器中一致地呈现,因为默认情况下这些元素与基线垂直对齐。您希望将#sContainer
的所有子元素垂直对齐到顶部或中间。
#sContainer > *
{
vertical-align: middle;
}
答案 1 :(得分:0)
尝试为img
提供vertical-align
css样式,例如:
#sContainer img
{
vertical-align: -4px;
}
答案 2 :(得分:0)
我的建议:
div
中,在此示例中名为inside-container
#sContainer
一个高度,因为你已经在里面放了元素显然,对我的jsFiddle进行更改,以更好地适应您的高度/宽度和命名结构。