移动端横竖屏切换时布局元素重叠怎么办?
在开发移动端页面时,我用flex布局做了图文列表,竖屏显示正常,但切换横屏时图片和文字会重叠。尝试过设置meta viewport和CSS媒体查询,但效果不好:
<div class="item">
<img src="pic.jpg" class="thumbnail">
<div class="content">
<h3>标题文字</h3>
<p>描述信息描述信息</p>
</div>
</div>
用的是flex-direction: row,在媒体查询里设置@media only screen and (orientation: landscape)时,文字部分还是会挤到图片上,有没有更好的适配方案?
首先,确保你的容器设置了 min-width 或者 flex-shrink: 0。flex默认是允许子元素压缩的,特别是在横屏时宽度不够容易触发压缩,文字就会被挤到图片上。
其次,可以优化成固定结构,比如让图片固定宽度,文字区域自动伸缩,而不是大家一起乱套。比如这样:
不需要用媒体查询都能解决大部分问题。如果横屏特别小,你再考虑在 media query 里调整 .thumbnail 的宽高比例,或者改成 column 布局,但别直接用 row 就完事了。
还有一个常见的问题是图片本身没有设置 max-width: 100%,也会撑开布局。记得 img 标签加上:
试试看,这比单纯靠 media query 控制靠谱多了。