css, html, php, javascript, jQuery, ajax … – решения, примеры, рецепты
2 Июн
В сегодняшней статье по документации jQuery будет разобрана работа библиотеки с CSS свойствами. Мы будем учиться получать и устанавливать значения CSS-свойств для элементов, в том числе работать с шириной и высотой, а также определять позицию элемента.
возвращает: String
Возвращает значения для css-свойства, указанного в name, для первого элемента в наборе.
В этом примере, чтобы получить доступ к css-свойству background-color нужно всего лишь кликнуть по элементу div.
$("div").click(function () {
var color = $(this).css("background-color");
$("#result").html("Цвет этого div'а <span>"
+ color + "</span>.");
});
Откройте пример в отдельном окне и посмотрите исходный код.
возвращает: jQuery
Устанавливает значения для css-свойств всех элементов набора, используя объект, состоящий из пар ключ/значение. Это наилучший способ установить значения для сразу нескольких css-свойств всех элементов набора.
Посмотрите этот пример. Если указатель мыши проходит над параграфом, то для этого параграфа будет установлен желтый фон и жирное начертание текста. Когда же указатель мыши выходит за пределы параграфа – фон изменяется на серый, начертание текста становится нормальным, а сам текст становится синего цвета.
$("p").hover(function () {
$(this).css({
backgroundColor:"yellow",
fontWeight:"bolder"
});
}, function () {
var cssObj = {
backgroundColor: "#ddd",
fontWeight: "",
color: "rgb(0,40,244)"
}
$(this).css(cssObj);
});
Откройте пример в отдельном окне и посмотрите исходный код.
возвращает: jQuery
Устанавливает значение одного css-свойства для всех элементов набора. Если в качестве значения какого-либо из css-свойств используется число, оно автоматически конвертируется в значение в пикселах.
В этом примере, для того чтобы изменить цвет текста любого параграфа, используется событие mouseover.
$("p").mouseover(function () {
$(this).css("color","red");
});
Откройте пример в отдельном окне и посмотрите исходный код.
возвращает: Object{top,left}
Для первого элемента в наборе получает текущие отступы относительно точки просмотра. Возвращается объект, содержащий значения (целые числа) отступов сверху и слева. Этот метод работает только с видимыми элементами.
В этом примере мы получаем значения отступов для второго параграфа, куда собственно эти значения и подставляем.
var p = $("p:last");
var offset = p.offset();
p.html( "left: " + offset.left + ", top: " + offset.top );
Откройте пример в отдельном окне и посмотрите исходный код.
возвращает: Integer
Получает текущее значение высоты в пикселах для первого элемента в наборе. Начиная с версии jQuery 1.2, этот метод позволяет найти высоту для window и document.
В этом примере мы получаем несколько значений высоты. Функция showHeight вспомогательная, просто для вывода значений в элемент div.
function showHeight(ele, h) {
$("div").text("Высота элемента "
+ ele + " равна " + h + "px.");
}
$("#getp").click(function () {
showHeight("paragraph", $("p").height());
});
$("#getd").click(function () {
showHeight("document", $(document).height());
});
$("#getw").click(function () {
showHeight("window", $(window).height());
});
Обратите внимание, что пример демонстрируется во фрейме, поэтому некоторые значения, которые Вы видите, меньше ожидаемых Вами.
Откройте пример в отдельном окне и посмотрите исходный код.
возвращает: jQuery
Устанавливает высоту в CSS-свойстве для каждого элемента в наборе. Если единицы измерения не определены однозначно (например ‘em’ или ‘%’), тогда значение устанавливается в px.
В этом примере по клику на элементе div, для него устанавливается высота в 30px и заодно изменяется цвет.
$("div").one('click', function () {
$(this).height(30).css({cursor:"auto", backgroundColor:"green"});
});
Откройте пример в отдельном окне и посмотрите исходный код.
возвращает: Integer
Получает текущее значение ширины в пикселах для первого элемента в наборе. Начиная с версии jQuery 1.2, этот метод позволяет найти ширину для window и document.
В этом примере мы получаем несколько значений высоты. Функция showWidth вспомогательная, просто для вывода значений в элемент div.
function showWidth(ele, w) {
$("div").text("Ширина элемента " + ele + " равна " + w + "px.");
}
$("#getp").click(function () {
showWidth("paragraph", $("p").width());
});
$("#getd").click(function () {
showWidth("document", $(document).width());
});
$("#getw").click(function () {
showWidth("window", $(window).width());
});
Обратите внимание, что пример демонстрируется во фрейме, поэтому некоторые значения, которые Вы видите, меньше ожидаемых Вами.
Откройте пример в отдельном окне и посмотрите исходный код.
возвращает: jQuery
Устанавливает ширину в CSS-свойстве для каждого элемента в наборе. Если единицы измерения не определены однозначно (например ‘em’ или ‘%’), тогда значение устанавливается в px.
В этом примере по клику на элементе div, для него устанавливается ширина в 30px и заодно изменяется цвет.
$("div").one('click', function () {
$(this).width(30).css({cursor:"auto", "background-color":"blue"});
});
Откройте пример в отдельном окне и посмотрите исходный код.
Вот и все на сегодня. Статья получилась не очень большая, но, надеюсь эта информация пригодится многим.
Отзывов (32) на «jQuery API: работа библиотеки с CSS свойствами.»
Статья хорошая. А еще ты бы мог сделать русскоязычный вариант http://visualjquery.com/
было бы великолепно.
На самом деле там тоже самое, просто в несколько другом виде. Немного более интерактивно представлено. И все.
А можно ли отслеживать высоту элемента?
Например, есть элемент p, мы сняли показания высоты этого элемента и присвоили их другому, а если высота р меняется, то высота другого тоже. Такое возможно?
Можно конечно. Метод height() получает высоту нужного элемента. Метод height(val) устанавливает высоту элемента.
Можно привести небольшой пример:
// получили значение высоты в переменнуюvar heightEl = $("#srcSelector").height();
// установили высоту целевого элемента
$("#targetSelector").height(heightEl);
Конечно очень неплохо обернуть это в
$(document).ready(function(){...});– тогда эти действия будут происходить при перезагрузке страницы, в момент готовности DOM. Или привязать эти действия к какому-либо событию, например клику по определенному элементу.Но ведь при последующем изменении первого элемента его высота\ширина не присвоиться второму..
Ну вобщем можно обойтись и без этого.
Тогда еще один вопрос, если позволите.
А почему при использовании load(url), из url не хотят загружаться элементы .
Например:
$(«#myWindow»).load(‘http://ubisoft.com.ua/’);
Но все скрипты не передаются.
Это вопрос выбора того события, к которому Вы все это привяжете. А выбор событий очень богат. Посмотрите соответствующую статью из документации к jQuery…
Что касается вопроса про load(url):
load( url, [data], [callback] ) – загружает HTML из файла и вставляет его в объекную модель документа (DOM). Ключевое слово здесь – HTML.
Если хотите загружать и выполнять javascript, Вам надо использовать jQuery.getScript( url, [callback] )
Аа..понятно. Спасибо большое
Подскажите, как узнать ширину картинки в Safari. На $(«img»).width() выдаёт 0, на document.images["id"].width тоже самое ((
Дело наверняка не в Safari, библиотека адекватно работает с ним. Вам лучше для начала на 100% удостовериться, что Вы действительно имеете объект jQuery, например так – alert($(”img”).length()); – скорее всего в алерте будет 0, поэтому и ширина нулевая.
А вообще попробуйте такую конструкцию
$(«#selector»).find(«img»).width();
у меня она работает без проблем…
Для определения абсолютного позиционирования элемента (для плавающего div) вычисление проводится посредством сложения позиций всех предков элемента, к которому привязывают плпвающий див – стандарная функция. Есть ли возможность в jQuery одной функцией определить абсолютную позицию элемента?
Метод offset() – в том числе и для «плавающего» div. Вот простенький пример.
Видимо, я не так задал вопрос …
Понятно, что для «плавающего» дива получить координаты просто, так как они абсолютны и его предок – только document.
Я имею в виду – как получить абсолютные координаты, к примеру, дива, находящемуся еще в трех дивах (по иерархии)? Или, к примеру, как получить абсолютные координаты вот этого самого окошка textArea, в котором я в данный момент пишу сообщение? – Оно находится в –> –> –> –> –> (возможно, промахнулся на один-два объекта).
Спасибо.
Приношу извинения. Надо было просто попробовать …
Все отлично работает – можно выкидывать из своего кода еще одну функцию. Объем кода после использования jQuery уменьшается просто невероятно – с сотен строк до десятков.
а можно ли сделать выборку элементов offset.left которых например равен или больше или например меньше 150 px, если можно то как это правильно прописать. Заранее благодарен.
Вот ссылка на пример. По нажатию на кнопку, все, что имеет отступ слева больше 150px станет черного цвета. Исходник там же и посмотрите…
Здравствуйте. А можно задавть координаты для плавающего div’а с помощью jquery? Ника не могу найти примера.
Вообще можно воздействовать на css-свойства элемента например так:
$(‘#example’).css({‘top’:50,’left’:75});
если просто с помощью стилей Вы это можете сделать с div’ом – то сможете и через jQuery.
Спасибо за ответ
Очень понравилась идеология jquery!
Спасибо большое, очень наглядно и понятно.
Привет! А как получить текущие координаты X и Y объекта? Не из CSS, а относительные, скажем, внутри родительского блока.
var pos = $(‘#selector’).position();
и тогда pos.left – слева и pos.top – сверху, относительно родительского элемента.
var marginTop = $(‘#someBlock’).css(‘margin-top’);
получаю значение вида ###px. а как получить чистое число?
Это вполне естественно, что Вы получаете значение в виде строки, ведь Вы обращаетесь к css-свойству, в котором значение содержится именно в таком виде.
Ну, просто уберите два последних знака….
В ie6 object.offset().left показывает расстояние от родительского документа, а в mozilla, например, расстояние от левого края документа, получается в разных браузерах разные значения, а есть что-то кроссбраузерное?
* родительского элемента
В jQuery 1.3 добавлен метод jQuery.support, который предоставляет набор свойств, позволяющий учитывать различие между браузерами
http://docs.jquery.com/Utilities/jQuery.support
Может быть Вам поможет.
Спасибо, посмотрю.
Добрый день, Геннадий!
Подскажите пожалуйста как можно получить высоту div, у которого стоит overflow:hidden. Метод height() возвращает значение только видимой части.
Чтобы узнать полное значение высоты дива, я оборачиваю все содержимое нужного дива с помощью метода .wrapInner в другой див, и узнаю у него высоту.
Можно ли как-то узнать полную высоту не прибегая к изменению DOM?
Вы действуете логично, по другому такую задачу вряд ли можно решить. Я другого пути (простого и надежного по крайней мере) не вижу.
Обсуждение статьи можно продолжить на форуме jQuery.