CSS实现模拟浮动的效果:centertextwrappingaroundthepicture
时间:2023-03-31 01:28:37
CSS
什么是textwrappingaroundthepicture?就是下图的效果:效果的CSS代码可以点这里查看。在CSS中,并没有float:center这样的设置,但是我们可以使用一些技巧来模拟类似的效果。经常有朋友问:有float:left和right,为什么没有float:center?我的回答是:1.text-align:center已经可以实现内联元素的居中效果2.将图片两边的文字包裹在一行中,浏览器很难处理这种效果。除非文本显示为两列,但那是另一个问题3.说到文本,float其实应该叫wrapping,float:left的意思是“把这个元素放在容器的左边,把Everything放在右边sideofitisdisplayedaroundit”,在这种情况下,我们说的float:center实际上是在两边环绕,这会带来一系列的问题,比如如何确定元素在其中的“深度”container”?为了模拟float:center的效果,我们通过创建两个div将文本分成两列,居中的图片写在第一个div中:京都位于本州岛中心附近,在王位迁往江户之后...
因此,京都很多保存完好的地方都是联合国教科文组织世界遗产,包括...
首先我们设置两个div,.leftcol和.rightcol,作为显示:table-cell,a然后将container.container元素设置为显示:table:div#container{display:table;宽度:80%;最大宽度:900px;/*容器的最大宽度为900px*/margin:0auto;line-height:1.5;}div#leftcol,div#rightcol{显示:表格单元格;填充:1em;}div#containerimg{宽度:55%;/*图片的宽度是第一列div的宽度的55%*/height:auto;}这样,文本显示为表格的两列:图片会按原样显示第一列的左上角和底部将与第一行文本的基线对齐。接下来,如果给图片设置一个float:right,它会浮动在第一个div的右侧,文字会环绕在图片的左侧:这里,我们实现了最传统的布局:两列文本,其中一列包含浮动图像。接下来,我们将使用一些技巧来实现左右环绕的文字效果。第一步是通过将margin-right属性设置为负值将图像向右移动一定距离:div#containerimg{float:right;宽度:55%;高度:自动;右边距:-20%;/*图像向右移动第一个div宽度的20%的距离*/margin-left:20px;margin-bottom:20px;}margin-left和margin-bottom属性将图像与左侧和下方文本之间的距离设置为20px。这时候图片会和第二列的文字重叠显示:第二步通过:before伪元素在第二个div中生成一个元素,不包含任何内容,只是让文字换行漂浮后围绕它。div#rightcol:before{内容:"";向左飘浮;宽度:25%;padding-top:102%;}这个伪元素设置为向左浮动,它的宽度恰好等于图片向右移动的距离就是图片的宽度。padding-top属性设置的稍微大一点,这样文字和图片之间可以有一定的距离。如果我们给这个没有任何内容的伪元素加上一个红色的边框,就可以看到它的位置:这个空伪元素的实际作用是把和图片重合的文字分开,让它们环绕起来,从而模拟出文字右侧环绕图片,但文字实际上被伪元素包围。这种环绕方式有一个局限性,就是图片必须在div的最上面,我们不能在垂直方向任意放置图片。最后设置一些美化的样式和自适应代码,最终的效果就实现了: