【发布时间】:2015-05-28 16:15:51
【问题描述】:
下面的脚本会检查浏览器的宽度,并在检测到 dom 元素上的 css 元素 text-align:center 时移动一些 div。这个 css 元素依赖于 980px 的媒体查询。代码可以顺利运行,但我觉得也许有一种更简单的方法可以做到这一点。我知道这可能可以通过浮动在 CSS 中完成,但感觉这将是一种更清洁的方式。任何有关如何使此代码更高效的建议将不胜感激。
$(document).ready(function(){
function moveDiv(){
var $window = $(window);
var windowsize = $window.width();
if (windowsize < 980) {
if ($(".interiortitle h1").css("text-align") == "center"){
$( ".interiorpage .et_pb_column_1_4").insertAfter(".interiorpage .et_pb_column_3_4");
}
}
else if (windowsize > 980) {
$( ".interiorpage .et_pb_column_1_4").insertBefore(".interiorpage .et_pb_column_3_4");
}
}
moveDiv();
$(window).resize(moveDiv);
});
【问题讨论】:
-
CSS 浮动或媒体查询将比您编写的任何 Javascript 更高效。
-
@RGraham:但是 css 无法重新组织 dom。看两个条件。一个是
insertAfter,另一个是insertBefore。 css 不能像那样调整树。 -
@MarcB 当然。但是只要有一点创意,CSS 肯定可以让它看起来 就像 DOM 已经被重新组织过一样。而且它的性能会更高。此外,OP 声明
this probably could have been accomplished in CSS through floats... -
CSS flexbox 可以比浮动更好地重组块。可能是你需要的。
标签: javascript jquery html performance insertafter