CSS 模擬float實(shí)現(xiàn)center文字左右環(huán)繞圖片的效果

什么是文字左右環(huán)繞圖片?就是下圖的效果:
效果的CSS代碼可以點(diǎn)擊這里 查看
在CSS中,并沒有float: center這種設(shè)置,但是我們可以通過一些小技巧來模擬出類似的效果。
經(jīng)常會有小伙伴問:有float: left和right,為什么沒有float: center?我的答案是:
1.text-align: center已經(jīng)可以實(shí)現(xiàn)內(nèi)聯(lián)元素的居中效果
2.在一行中使文字環(huán)繞顯示在圖片的兩側(cè),這種效果瀏覽器處理起來是非常困難的。除非將文字顯示為兩列,但這是另一個(gè)問題
3.當(dāng)涉及到文本時(shí),float實(shí)際上應(yīng)該被稱為環(huán)繞,float:left的意思是“將這個(gè)元素放置在容器的左側(cè),并將其右側(cè)的所有內(nèi)容都環(huán)繞其顯示”,在這種情況下,我們討論的float:center實(shí)際上是兩側(cè)環(huán)繞,這會帶來一系列的問題,比如如何確定元素在容器中的“深度”?
為了模擬實(shí)現(xiàn)float: center的效果,我們通過創(chuàng)建兩個(gè)div將文字劃分為兩列,其中居中的圖片寫在第一個(gè)div中:
<div id="container"> <div id="leftcol"> <p><img src=".../01.jpg">京都位于本州島的中心附近,在王位移到江戶... </div> <div id="rightcol"> <p>因此,京都許多保存下來的地方都是聯(lián)合國教科文組織世界遺產(chǎn),包括... </div> </div>
首先,我們設(shè)置兩個(gè)div即.leftcol和.rightcol元素為display: table-cell,同時(shí)將容器.container元素設(shè)置為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; }
這樣,文字就顯示成為表格的兩列了:
圖片會按照其該有的樣式顯示在第一列的頂部左側(cè),并且底部與文字的第一行的基線對齊。
接下來,如果給圖片設(shè)置一個(gè)float:right,它就會在第一個(gè)div中右側(cè)浮動,并且文字會環(huán)繞在圖片的左側(cè)顯示:
到這里,我們實(shí)現(xiàn)了一個(gè)最傳統(tǒng)的布局:兩列文字,其中一列包含一張浮動的圖片。
下面,就要使用一些技巧來實(shí)現(xiàn)左右環(huán)繞的文字效果了。
第一步,通過設(shè)置margin-right屬性負(fù)值,將圖片右移一定的距離:
div#container img { float: right; width: 55%; height: auto; margin-right: -20%; /* 圖片向右移動第一個(gè)div寬度20%的距離 */ margin-left: 20px; margin-bottom: 20px; }
margin-left和margin-bottom屬性設(shè)置圖片與左側(cè)和下方的文字都間距20px。
這個(gè)時(shí)候圖片會和第二列的文字顯示重合了:
第二步,通過:before偽元素在第二個(gè)div中生成一個(gè)元素,它不包含任何內(nèi)容,僅僅是為了浮動后讓文字環(huán)繞它。
div#rightcol:before { content: " "; float: left; width: 25%; padding-top: 102%; }
這個(gè)偽元素被設(shè)置為左浮動,并且它的寬度與圖片右移的距離加起來剛好是圖片的寬度。
padding-top屬性設(shè)置的稍微大一點(diǎn),這樣文字與圖片能夠空出一些距離。
如果給這個(gè)沒有任何內(nèi)容的偽元素添加一個(gè)紅色的邊框,我們就可以看到它的位置:
這個(gè)空偽元素的實(shí)際作用就是將與圖片重合的文字隔開,并使它們環(huán)繞,這樣就模擬出了右側(cè)文字環(huán)繞圖片的效果,而實(shí)際上文字環(huán)繞的是偽元素。
這種環(huán)繞方式有一個(gè)限制,就是圖片必須位于div的頂部,我們不能在垂直方向上任意放置圖片。
最后,再設(shè)置一些美化的樣式和自適應(yīng)的代碼,最終的效果就實(shí)現(xiàn)了:
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
css實(shí)現(xiàn)文字居中兩邊橫線效果的示例代碼
這篇文章主要介紹了css實(shí)現(xiàn)文字居中兩邊橫線效果的示例代碼的相關(guān)資料,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-12-19- 這篇文章給大家演示了在不知道高度的情況下圖片如何垂直居中對齊,文中給出了實(shí)例代碼,有需要的朋友們可以參考借鑒。下面來一起看看吧。2016-09-12
深入理解CSS行高line-height與文本垂直居中的原理
本文詳細(xì)介紹了CSS行高屬性line-height與文本垂直居中的原理,通過本文的介紹相信對大家以后使用line-height和設(shè)置文本垂直居中會更加熟練,有需要的可以參考借鑒。下面一2016-08-12- 這篇文章主要為大家詳細(xì)介紹了css實(shí)現(xiàn)移動端圖片文字水平居中的方法,如何實(shí)現(xiàn)圖片以及文字的整體水平居中,本文為大家提供兩種解決辦法,感興趣的小伙伴們可以參考一下2016-03-11
CSS實(shí)現(xiàn)同一行的圖片和文字垂直居中對齊的方法
這篇文章主要為大家介紹了CSS實(shí)現(xiàn)同一行的圖片和文字垂直居中對齊的方法,涉及css中vertical-align:middle屬性的使用技巧,需要的朋友可以參考下2015-05-12DIV+CSS中讓布局、背景圖片、文字內(nèi)容居中的方法
這篇文章主要為大家介紹了在DIV+CSS布局的頁面里,讓布局、背景圖片、文字內(nèi)容居中的方法,從布局內(nèi)容到頁面里文章文字居中都是非常重要的,而css來設(shè)置居中也是非常簡單的2014-10-09- 這篇文章以示例的方式介紹了css如何實(shí)現(xiàn)文字圖片垂直居中效果,需要的朋友可以參考下2014-06-09
- 在文字旁邊加上一個(gè)圖標(biāo),通過css如何解決文字與圖片不能水平居中對齊的問題,下面有個(gè)示例,大家可以參考下2014-05-31
純css多種方法實(shí)現(xiàn)div中單行文字、多行文字及嵌套div垂直水平居中
經(jīng)常遇到要居中的問題,水平居中問題比較好解決,而垂直居中問題因?yàn)関ertical-align經(jīng)常失效,下面與大家分享下幾個(gè)不錯(cuò)的解決方法2014-04-24- 如題,用html,css如何實(shí)現(xiàn)垂直居中。水平居中我們知道最簡便的方法就是margin:auto,但是margin只是相對寬度有效。2010-03-18