Недавно я разработал некоторый скрипт для настройки параметров некоторых элементов сайта на размер окна. Он не показывает ошибок, но ничего не меняет. Странно, что во всех местах в скриптах массивы читаются так, как я хотел, поэтому я думаю, что это не так. С другой стороны, когда я использовал аналогичный код, но без массивов, он работал отлично, бот выглядел уродливо.Сценарий настройки элементов JQuery
jQuery.fn.extend({
MscreenAdjust: function (x,a,b,c,d) {
var windowWidth = $(window).width();
if (windowWidth > 1500) {
$(this).css(x, a);
}
else if (windowWidth > 1050) {
$(this).css(x, b)
}
else if (windowWidth > 800) {
$(this).css(x, c)
}
else {
$(this).css(x, d)
}
}
});
$(document).ready(function() {
$(".center").MscreenAdjust("width", 1390, 980, 780, 300);
$("#content").MscreenAdjust("margin-right", "10%", 0, 0, 0);
$("#menu_bar li").MscreenAdjust("width", "auto", "auto", "auto", "100%");
});
$(window).resize(function() {
$(".center").MscreenAdjust("width", 1390, 980, 780, 300);
$("#content").MscreenAdjust("margin-right", "10%", 0, 0, 0);
$("#menu_bar li").MscreenAdjust("width", "auto", "auto", "auto", "100%");
});
Итак, вот текущий код:
jQuery.fn.extend({
MscreenAdjust: function (toAdjust) {
toAdjust.forEach(function (elem) {
var windowWidth = $(window).width();
var ItemtoAdjust = elem;
if (windowWidth > 1500) {
$(ItemtoAdjust[0]).css(ItemtoAdjust[1], ItemtoAdjust[2]);
}
else if (windowWidth > 1050) {
$(ItemtoAdjust[0]).css(ItemtoAdjust[1], ItemtoAdjust[3]);
}
else if (windowWidth > 800) {
$(ItemtoAdjust[0]).css(ItemtoAdjust[1], ItemtoAdjust[4]);
}
else {
$(ItemtoAdjust[0]).css(ItemtoAdjust[1], ItemtoAdjust[5]);
}
});
}
});
var myArray = [
[".center","width", 1390, 980, 780, 300],
["#content","margin-right", "10%", 0, 0, 0],
["#menu_bar li","width", "auto", "auto", "auto", "100%"]
];
$(document).ready().MscreenAdjust(myArray);
$(window).resize().MscreenAdjust(myArray);
EDIT:
Я изменил функцию от JQuery, характерные для нормального, и все проблемы исчезли. Вот код:
function MscreenAdjust(toAdjust) {
toAdjust.forEach(function (elem) {
var windowWidth = $(window).width();
var ItemtoAdjust = elem;
if (windowWidth > 1500) {
$(ItemtoAdjust[0]).css(ItemtoAdjust[1], ItemtoAdjust[2]);
}
else if (windowWidth > 1050) {
$(ItemtoAdjust[0]).css(ItemtoAdjust[1], ItemtoAdjust[3]);
}
else if (windowWidth > 800) {
$(ItemtoAdjust[0]).css(ItemtoAdjust[1], ItemtoAdjust[4]);
}
else {
$(ItemtoAdjust[0]).css(ItemtoAdjust[1], ItemtoAdjust[5]);
}
});
}
var myArray = [
/* TARGET PROPERTY >1500 >1050 >800 =< 800 */
[".center", "width", "1390px", "980px", "780px", "300px"],
["#content", "margin-right", "10%", 0, 0, 0],
["#menu_bar li","width", "auto", "auto", "auto", "100%"]
];
$(document).ready(function() {
MscreenAdjust(myArray);
});
$(window).resize(function() {
MscreenAdjust(myArray);
});
ваш код работает, как ожидалось, но вы должны использовать функцию обратного вызова для готовых и изменять размеры событий –
в приведенном выше примере, являются; отсутствует, и вы должны определить, какие единицы. например, css ('width', '1390') не будет работать, я думаю, попробуйте '1390px'. – Alex