必须将置于文字容器前,否则float无效;需处理父容器塌陷(如overflow:hidden);margin方向须匹配浮动方向;避免与flex/grid混用。

必须把 <img> 写在文字容器前面,否则 float 无效——这是最常被忽略的前提,也是多数“文字不环绕”问题的根源。
HTML 结构顺序决定浮动是否生效
浏览器只让后续的块级流内容环绕浮动元素;如果 <p></p> 在前、<img> 在后,文字早已渲染完毕,“绕回来”在技术上不可能。
- ✅ 正确写法:
<img src="..."><p>这里是环绕的文字</p> - ❌ 错误写法:
<p>这里是文字</p><div class="aritcle_card flexRow artxards"> <div class="artcardd flexRow"> <a class="aritcle_card_img" rel="nofollow" href="/xiazai/code/12093" title="CSS婚礼策划服务机构宣传网站模板"><img src="https://img.php.cn/upload/webcode/000/000/018/178607072210981.jpg" alt="CSS婚礼策划服务机构宣传网站模板" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a> <div class="aritcle_card_info flexColumn"> <a rel="nofollow" href="/xiazai/code/12093" title="CSS婚礼策划服务机构宣传网站模板" class="overflowclass">CSS婚礼策划服务机构宣传网站模板</a> <p class="overflowclass">CSS婚礼策划服务机构宣传网站模板是一款适合提供婚礼策划和婚庆服务机构宣传网站模板下载。提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢。</p> </div> <a rel="nofollow" href="/xiazai/code/12093" title="CSS婚礼策划服务机构宣传网站模板" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div> <img src="...">(哪怕加了float: left也白搭) - 若 CMS 或模板无法调整 HTML 顺序,别硬套
float,改用shape-outside或display: grid布局替代
父容器塌陷必须主动处理
float 会让图片脱离文档流,导致其父容器高度坍缩为 0,后续段落可能顶上来、错位甚至重叠。
- 推荐方案:给父容器加
overflow: hidden(轻量、兼容性好、无副作用) - 备选方案:用伪元素清除,如
.wrap::after { content: ""; display: table; clear: both; } - 避免方案:在下一个
<p></p>上加clear: both——它只清自己前面的浮动,不撑开父容器
margin 方向必须匹配浮动方向
浮动本身不提供图文间距,margin 必须显式设置在 <img> 上,且左右方向不能反。
-
float: left→ 必须设margin-right(文字从右侧绕),margin-left无效 -
float: right→ 必须设margin-left(文字从左侧绕),margin-right无效 - 上下
margin在环绕场景中常被忽略或失效,优先用左右值;建议起步值至少margin-right: 1rem(左浮动) - 若文字断行异常,检查
line-height是否过小,或vertical-align是否为默认baseline(可试top或middle)
别和 Flex/Grid 混用同一容器
现代布局系统(display: flex 或 display: grid)默认忽略浮动对子项的影响,混用会导致图片被拉平、失去环绕效果。
- 同一容器内,要么全用
float+ 清除,要么全用flex/grid - Flex/Grid 虽更可控,但若项目只需简单图文混排且需兼容旧环境,
float仍够用——前提是结构、清除、margin全到位 - 真正容易踩坑的是:以为加了
float就完事,却没检查 HTML 顺序、父容器是否塌陷、margin是否设对方向
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










