我在嵌套的div .box
中包含了一个图像。如果它没有浮动,则图像可以完全居中于.box
,但当我float
它left
或right
时,中心对齐就会消失!我有4张各种尺寸的图像需要在自己的.box
内居中。我该如何解决?
HTML
<div class="con">
<div class="box">
<img src="../_images/icon-test.png">
</div>
</div>
CSS
.con {
width:300px;
height:200px;
background: #996600;
}
.box {
position:relative;
width:150px;
height:150px;
background-color: #333333;
display:table-cell;
text-align:center;
vertical-align:middle;
float:right;
}
答案 0 :(得分:1)
您可以使用display: flex
。
将您的display: table-cell
更改为display: flex
。
然后将text-align:center;
和vertical-align:middle;
更改为align-items: center;
和justify-content: center;
,使其垂直和水平居中。
编辑:然后我还为图像添加了150px的最大宽度,以便在图像大于它时阻止它从容器中扩展出来。 @Hkidd的道具指出这种情况发生了。
.con {
width: 300px;
height: 200px;
background: #996600;
}
.box {
position: relative;
width: 150px;
height: 150px;
background-color: #333333;
display: flex;
align-items: center;
justify-content: center;
float: right;
}
img {
max-width: 150px;
}
&#13;
<div class="con">
<div class="box">
<img src="http://placehold.it/200x100">
</div>
</div>
&#13;
答案 1 :(得分:1)
<强>解释强>
我认为您必须定位img
absolute
,因此它将定位于其父.box
的绝对位置,因为.box
位于相对位置。此外,display: table-cell;
是不必要的,因为img
不在表格内。
这就是我提出的:
.con {
background: #996600;
height: 200px;
width: 300px;
}
.box {
background-color: #333333;
float: right;
height: 150px;
position: relative;
width: 150px;
}
.box img {
bottom: 0;
left: 0;
margin: auto;
position: absolute;
right: 0;
top: 0;
width: 90%;
}
<div class="con">
<div class="box center">
<img src="http://placehold.it/120x100">
</div>
</div>
答案 2 :(得分:1)
如果问题中包含单个图像,则可以使用[TestFixture]
public class TestClassTests
{
private TestClass _cut;
private Mock<ISystemEvents> _systemEventsMock;
private Mock<ITestService> _testServiceMock;
[SetUp]
public void SetUp()
{
_systemEventsMock = new Mock<ISystemEvents>();
_testServiceMock = new Mock<ITestService>();
_cut = new TestClass(
_systemEventsMock.Object,
_testServiceMock.Object
);
}
[TestFixture]
public class OnPowerModeChanged : TestClassTests
{
[Test]
public void When_PowerMode_Resume_Should_Call_TestService_DoStuff()
{
_systemEventsMock.Raise(m => m.PowerModeChanged += null, new PowerModeChangedEventArgs(PowerModes.Resume));
_testServiceMock.Verify(m => m.DoStuff(), Times.Once);
}
}
}
解决方案将图像精确放置在line-height
div&amp;的中心位置。在图片上使用.box
。适用于所有浏览器和简单易懂。
参考代码:
vertical-align: middle
.con {
width: 300px;
height: 200px;
background: #996600;
}
.box {
position: relative;
width: 150px;
height: 150px;
background-color: #333333;
text-align: center;
vertical-align: middle;
float: right;
line-height: 150px;
}
img {
height: 60px;
vertical-align: middle;
}