CSS 模拟float实现center文字左右环绕图片的效果

2020-04-27 07:15:20易采站长站整理

什么是文字左右环绕图片?就是下图的效果:

效果的CSS代码可以点击这里 查看

在CSS中,并没有float: center这种设置,但是我们可以通过一些小技巧来模拟出类似的效果。

经常会有小伙伴问:有float: left和right,为什么没有float: center?我的答案是:

1.text-align: center已经可以实现内联元素的居中效果

2.在一行中使文字环绕显示在图片的两侧,这种效果浏览器处理起来是非常困难的。除非将文字显示为两列,但这是另一个问题

3.当涉及到文本时,float实际上应该被称为环绕,float:left的意思是“将这个元素放置在容器的左侧,并将其右侧的所有内容都环绕其显示”,在这种情况下,我们讨论的float:center实际上是两侧环绕,这会带来一系列的问题,比如如何确定元素在容器中的“深度”?

为了模拟实现float: center的效果,我们通过创建两个div将文字划分为两列,其中居中的图片写在第一个div中:


<div id="container">
<div id="leftcol">
<p><img src=".../01.jpg">京都位于本州岛的中心附近,在王位移到江户...
</div>
<div id="rightcol">
<p>因此,京都许多保存下来的地方都是联合国教科文组织世界遗产,包括...
</div>
</div>

首先,我们设置两个div即.leftcol和.rightcol元素为display: table-cell,同时将容器.container元素设置为display: table:


div#container {
display: table;
width: 80%;
max-width: 900px; /* 容器最大宽度900px */
margin: 0 auto;
line-height: 1.5;
}
div#leftcol, div#rightcol {
display: table-cell;
padding: 1em;
}
div#container img {
width: 55%; /* 图片的宽度是第一列div宽度的55% */
height: auto;
}

这样,文字就显示成为表格的两列了:

图片会按照其该有的样式显示在第一列的顶部左侧,并且底部与文字的第一行的基线对齐。

接下来,如果给图片设置一个float:right,它就会在第一个div中右侧浮动,并且文字会环绕在图片的左侧显示:

到这里,我们实现了一个最传统的布局:两列文字,其中一列包含一张浮动的图片。

下面,就要使用一些技巧来实现左右环绕的文字效果了。