1

我正在使用浮动元素和负边距设置响应式布局。

调整我的浏览器大小一切正常:桌面的内容 + 左右边栏,平板电脑的内容和右侧边栏,左侧边栏 offcanvas,手机的左侧和右侧边栏 offcanvas。

我使用 JavaScript 更改负边距,例如,在单击按钮时将左侧边栏显示在画布上,并在再次单击时将其移回画布外,回到其原始位置(在调试中确认)。

但是,既然我已经用 JavaScript 操作了边距,现在调整浏览器的大小会破坏布局,因为当我通过媒体查询阈值时,我用 JavaScript 更新的属性不再更新。

媒体查询仍在“工作”——例如,菜单按钮的显示会按照媒体查询中建立的方式打开和关闭。

我需要做什么来“刷新”我的媒体查询,以便它们使用 JavaScript 更新可能已经更改然后又改回的属性?

4

1 回答 1

2

当您直接在 DOM 元素上更新属性时,这些样式的优先级高于 CSS 样式表中的样式。没有办法“刷新”事物;这不是浏览器的工作方式。

为避免此类问题,请通过在元素中添加/删除类来间接更新 DOM。然后,您可以控制这些类如何以受媒体查询影响的方式影响样式表中的表示。

于 2013-05-23T13:37:37.927 回答