我很难获得3个相同大小的图像来正确浮动。我已经将中间浮动图像的左右边距设置为自动,但它仍然不起作用。我布局中的所有面板都是向左浮动的,这是我从教程中修改的,当它们相互对接时效果良好,但当空间超过必要空间时,尝试浮动图像并不能按我的意愿显示:图像之间的间距相等;居中和居中&正确的我的内容面板宽534px,10px填充占554px,加上1px边框,再加上外部5px边距。这些图像都是160像素宽的,我给FloatLeft类一个10px的右边距,FloatRight类一个10 px的左边距,FloatCenter一个左右自动边距。FloatLeft和FloatRight都用于多个页面,并被文本包围,这很好。
好的,更新-我现在意识到浮动:中心是不可能的,DUH!,这就是问题所在——我才刚开始学习CSS等几个月。!
除了桌子,还有其他选择吗。我可以将它们全部向左对齐,并使margin:right属性为27px(160px x 3个图像+27+27=534px),但随后我需要为这些图像创建一个新的FloatLeft类。任何关于对准图像的最佳方法的建议都将不胜感激。
加里。
相关的HTML&CSS:
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Solar Power Today</title>
<link rel="stylesheet" type="text/css" href="solarpower.css">
</head>
<body>
<div id="wrapper">
...........
<!-- header panel, then horizontal navigation panel then left panel then ... -->
..........
<div id="content">
<!-- main content -->
<h1 id="contentheader">Introduction to Solar Power</h1>
<p>
<img class="FloatLeft" src="images/sunonsolarpanelroof160px.jpg" alt="Sun shining
on roof solar panels" width="160" height="160">
<img class="FloatCenter" src="images/smallwindturbine160px.jpg" alt="Small wind
turbine spinning" width="160" height="160">
<img class="FloatRight" src="images/waveturbine160px.jpg" alt="Wave turbines in
motion" width="160" height="160">
</p>
CSS:
* {padding:0; margin:0; border:0;}
.FloatLeft {
float: left;
margin: 0 10px 10px 0;
}
.FloatRight {
float: right;
margin: 0 0 10px 10px;
}
.FloatCenter {
float: center;
margin: 0 auto 10px auto;
}
#content {
width: 534px;
min-height: 400px;
margin: 0px 5px 5px 0px;
padding: 10px;
float: left;
border: 1px solid black;
display: inline;
}
我最近使用text-align: justify;
解决了在未知宽度上等距和任意数量元素的问题。完整的讨论可以在"文本对齐:对齐;"内联块元素是否正确?,就利弊和备选解决方案进行了良好的讨论。
这里有一个小提琴展示如何使用讨论的技术排列三个图像。它应该适用于所有主要的浏览器,尽管有问题可以随时联系我。
您在.FloatCenter
类中使用float:center;
,这是无效的,float
没有center
值,请放入float:none;
并更改您的边距长度;
.FloatCenter {
float: none;
margin: 0 auto 10px 15px;
}
我正在尽可能地保持简单。我更想知道我正在应用的代码是如何工作的,而不是在没有完全理解的情况下使用解决方案。我不知道文本对齐可以帮助对齐图像,所以我对此进行了尝试。在我完全理解上面的文本align:ajustify解决方案之前,我已经将这3个图像中的每一个放在一个新的div容器类中。ImageBox:
.ImageBox {
width: 178px;
margin-bottom: 10px;
float: left;
}
然后,我将每个图像放在
元素中,并在<p]元素上使用内联样式来对齐图像位置:>
<div class="ImageBox">
<p style="text-align: left"><img src="images/sunonsolarpanelroof160px.jpg" alt="Sun
shining on roof solar panels" width="160" height="160"></p>
</div>
<div class="ImageBox">
<p style="text-align: center"><img src="images/smallwindturbine160px.jpg" alt="Small
wind turbine spinning" width="160" height="160"></p>
</div>
<div class="ImageBox">
<p style="text-align: right"><img src="images/waveturbine160px.jpg" alt="Wave turbines
in motion" width="160" height="160"></p>
</div>
我知道内联样式不受欢迎,但它使用的代码比为每个图像创建一个单独的div容器并在样式表中将每个div容器中的text-align属性设置为左、中或右要少。我还刚刚意识到,简单地指定宽度和/或高度属性,甚至边界(用于测试目的)都不会在浏览器中显示div容器。div容器类似乎需要一个float或clear属性才能使长方体发挥作用。我需要学习更多css。
以下是实现您想要的目标的一种方法:
http://jsfiddle.net/CsjYN/1/
HTML:
<div id="content">
<h1 id="contentheader">Introduction to Solar Power</h1>
<div class="images">
<img class="img-left" src="images/sunonsolarpanelroof160px.jpg" alt="Sun shining on roof solar panels" />
<img class="img-center" src="images/smallwindturbine160px.jpg" alt="Small wind turbine spinning" />
<img class="img-right" src="images/waveturbine160px.jpg" alt="Wave turbines in motion" />
</div>
</div>
CSS:
#content {
width: 534px; /* full width 556px */
padding: 10px;
border: 1px solid #000;
}
#content h1 {
margin-bottom:20px;
}
#content .images {
overflow:auto;
}
#content .images img {
width:160px;
height:60px;
float:left;
}
#content .images img.img-left,
#content .images img.img-center {
margin-right:27px;
}