求助:id为eight的div响应式显示隐藏不符合预期
解决id为"eight"的div响应式显示隐藏问题
问题根因
你在第96行给#eight加了全局的display: none;,这会让这个div在所有屏幕尺寸下都被隐藏。就算你写了针对大屏幕的显示规则,如果媒体查询的样式写在全局样式前面,或者优先级不够,就会被全局的隐藏规则覆盖,导致大屏幕下也看不到。
两种修复方案
方案1:默认显示,小屏幕隐藏(推荐)
删掉全局的display: none;,把默认状态设为显示,再用媒体查询在小屏幕下隐藏:
/* 大屏幕(>900px)默认显示 */ #eight { display: block; /* 换成你实际需要的display值,比如flex、inline-block都行 */ } /* 屏幕宽度小于900px时隐藏 */ @media (max-width: 899px) { #eight { display: none; } }
这种写法逻辑更直观:默认情况下元素是显示的,只有当屏幕缩小到900px以下时才隐藏,完全符合你的需求。
方案2:保留全局隐藏,调整样式顺序/优先级
如果一定要保留第96行的display: none;,必须把针对大屏幕的媒体查询样式放在全局样式之后:
/* 全局先设为隐藏 */ #eight { display: none; } /* 大屏幕(≥900px)显示,这段必须写在上面的全局样式之后 */ @media (min-width: 900px) { #eight { display: block; /* 对应你需要的显示类型 */ } }
CSS的层叠规则是“同一优先级下,后面的样式覆盖前面的”,所以把媒体查询的显示规则放在全局隐藏规则后面,才能让大屏幕时的显示生效。
额外检查点
- 确认媒体查询的断点是否准确:比如是不是应该用
min-width:900px还是min-width:901px,根据你的需求调整 - 如果这个div的父元素有其他样式影响,可以给选择器加个父级前缀(比如
.container #eight)来提高优先级,确保样式生效
内容的提问来源于stack exchange,提问作者ben
相关产品推荐
相关产品推荐

