Как изменить padding jquery

Использование метода jQuery css для установления, изменения, удаления и получения стилей (style) элемента.

Статья, в которой разберем, как в jQuery осуществляется работа со стилями (style) элемента.

jQuery - Работа со стилями элемента

В jQuery работа со стилями HTML элементов осуществляется через метод css. Данный метод используется как получения значения стилей, так и для их добавления, изменения и удаления.

Первый вариант метода css — это получение окончательного значения CSS-свойства непосредственно применяемого к элементу.

Синтаксис метода css:

// Вариант 1 (получение окончательного одного CSS свойства)
.css( propertyName )
// propertyName (тип: Строка) – имя CSS-свойства, значение которого нужно получить
.css( propertyNames )
// propertyName (тип: Массив) – массив, состоящий из одного или нескольких CSS-свойств, значения которых нужно получить

Данный метод, если его применить к набору элементов, возвращает значение CSS свойства только для первого его элемента.

Пример, в котором получим цвет фона непосредственно применённого к элементу #header:

var bgHeader = $('#header').css('background-color');

В jQuery названия CSS-свойств можно указывать как в CSS, так и как это принято в JavaScript. Т.е. убирать дефисы и заменять буквы, следующие за каждым дефисом на прописные.

// можно и так
var bgHeader = $('#header').css('backgroundColor');

Если необходимо получить значения указанного CSS свойства или набора этих свойств у всех элементов текущего набора, то в этом случае необходимо использовать, например, метод each.

Например, определим значение свойства display у всех выбранных элементов и выведем их в консоль:

// переберём все элементы .container
$('.container').each(function(index){
  // значение css-свойства display текущего элемента набора
  var display = $(this).css('display');
  // выведем результат в консоль (индекс элемента в наборе и его значение css-свойства display)
  console.log(index + '. display = '+ display);
});

Кроме этого, метод css позволяет также получить сразу несколько CSS свойств у элемента.

Например, при нажатии на HTML элемент div выведим его ширину и высоту:

<div style="width: 100px; height: 100px; background-color: bisque;"></div>
<div style="width: 200px; height: 200px; background-color: lightseagreen;"></div>
...
<script>
  // при нажатии на элемент div
  $('div').click(function () {
    // создадим переменную, которая будет содержать результат
    var output = [];
    // получим значения сразу нескольких CSS свойств
    var cssProperties = $(this).css(['width', 'height']);
    // переберём полученные свойства
    $.each(cssProperties, function (prop, value) {
      // добавим в массив элемент, содержащий имя свойства и значения
      output.push(prop + ": " + value);
    });
    //выведем массив в качестве содержимого элемента
    $(this).html(output.join('<br>'));
  });
</script>

Как изменить или добавить стиль к элементу в jQuery

Установить стиль элементу осуществляется тоже с помощью метода css, но в этом случае используется следующий синтаксис:

// 1 вариант (для установки одного стиля элементу)
.css( propertyName, value )
// 2 вариант (установка значения стиля с помощью функции)
css( propertyName, function )
// 3 вариант (для установки несколько стилей элементу)
css( properties )
// Описание параметров:
// propertyName (тип: String) – имя CSS-свойства
// value (тип: String или Number) – значение, которое нужно установить CSS-свойству
// function – функция, результат выполнения которой будет установлен в качестве значения CSS-свойству
//   Синтаксис функции:
//     Function( Integer index, String value ) => String или Number
//     В качестве аргументов функция получает индекс элемента (index) и текущее окончательное значение CSS-свойства (value)
// properties (тип: объект JavaScript, содержащий ноль или более пар ключ-значение) – объект, состоящий из пар DOM-свойство-значение, которые нужно установить элементу.

При установлении стилей с помощью метода css, они задаются ко всем элементам текущего набора.

Например, добавим ко всем элементам .info серый цвет фона (background):

<div class="info">...</div>
<div class="info">...</div>

<script>
$('.info').css('background', 'grey');
</script>

Если необходимо применить к каждому элементу текущего набора сразу несколько CSS свойств, то в качестве параметра этого метода необходимо использовать объект JavaScript, содержащий пары ‘имяСвойства’ : значение.

.css({'имяСвойства1':значение, 'имяСвойства2':значение,...})

Пример, в котором показано как можно задать несколько CSS-свойств к элементам .success:

$('.success').css({
  'color':'green',
  'font-size':'16px'
});

В качестве значения строки также можно использовать относительные значения, которые начинаются с += или -=. Первое выражение используется для увеличения текущего значения CSS свойства, а второе — для уменьшения.

Например, увеличим отступ слева и справа у элементов .container на 10px:

$('.container').css({
  "padding-left": "+=10",
  "padding-right":"+=10"
});

Ещё один способ использования метода css — это применение в качестве 2 параметра функции.

.css('имяСвойства',функция)
// функция: Function( Integer index, String value ) => String или Number

Вариант использования метода css, у которого в качестве второго параметра используется функция обычно находить применение, когда значение необходимо как-то вычислить или определить по какому-то алгоритму.

Например, установим всем элементам .text, у которых цвет шрифта не равен чёрному, CSS свойство color, равное red.

$('.text').css('color',function(index,value){
  if (value!=='rgb(0, 0, 0)') {
    return 'red';
  }
});

Например, поменяем значение CSS свойства width у всех элементов img на странице, находящихся #content:

$('#content img').css('width','300px');

Как удалить определённый стиль у элемента

Для того чтобы в jQuery убрать определённый стиль у элемента, ему необходимо присвоить просто пустую строку.

Например, уберём у всех изображений на странице CSS свойство height:

$('img').css('height','');

Change CSS styles on the fly using jQuery’s css() method.

The jQuery css() method enables you to get the value of a computed style property for the first element in the set of matched elements or set one or more CSS properties for every matched element.

In other words, you can do the following:

  • Get styles from the web page.
  • Set styles on the web page.

Here’s an example of setting the padding on a div element:

And here it is in action:

In this example, we use jQuery to increase the padding on the div element.

The example also uses this to select the current element. We could have used "div" instead, however, this would’ve applied the change to all div elements. Using this only changes the current one.

Incrementing and Decrementing a Value

jQuery allows you to use relative values to increment or decrement a value by a given amount. You can use += to increment a value or -= to decrement a value.

Like this:

Here’s a working example:

If you click the box again and again, you’ll notice that its width increases each time you click it.

This is because we’re incrementing the value by a relative amount. Each time you click it, the width increases by 100 pixels.

If we’d specified an absolute amount (such as 200px) it would only change size on the first click. Subsequent clicks wouldn’t change anything because the box is already 200 pixels wide.

Applying Multiple Declarations

You can set multiple declarations on an element by separating each property and its value with a colon, and separating each declaration with a comma.

Like this:

Here’s an example of that:

The addClass() and toggleClass() Methods

In many case you might find the addClass() method or the toggleClass() method a more suitable way to apply multiple style declarations.

These methods allow you to uses classes from your style sheet. No need to include style declarations within your jQuery code.

See how to add a class dynamically.

Getting Styles from an Element

Another thing you can do with the css() method, is retrieve computed styles from an element. More specifically, it gets the computed style property from the first matched element.

Here’s an example of getting the background color of an element:

Here’s a working example of that:

Computed Value vs Style Sheet

When a browser displays a web page, it computes a value for each property. This computed value takes into account the initial values for each property, any inherited values, as well as the computation required to satisfy the «Computed value» part of the CSS specification.

jQuery’s css() method retrieves the computed value. This is not necessarily the value that’s in your style sheet.

For example, the color limegreen can be represented as rgb(50, 205, 50), #32cd32, hsl(120, 61%, 50%), etc, and so browsers could return any of these values. Check out this CSS color converter to see how colors can be represented in different ways.

Another example is when returning dimensions. You can specify dimensions using a whole range of units (such as em, %, px, vh, etc) but most browsers return the pixel value (px).

Today I was looking at how to get and set padding/margin values for DOM elements. I’m looking more into the specific location of the outer margins and paddings. As you may know, it’s possible to set an elements padding and margin using CSS, but getting the correct values can be problematic.

//sets
$("div.header").css("margin","10px");
$("div.header").css("padding","10px");

Common sense, you would think this would work, but doesn’t seem to.

//gets
$("div.header").css("margin");
$("div.header").css("padding");

Try it yourself (paste code below into Firebug). You’ll see empty values returned for margin and padding. Maybe I’m missing something here?

(function($){

function logMarginPadding(elem)
{
//gets
var margin = elem.css("margin"),
padding = elem.css("padding");
console.log("margin="+margin+" padding="+padding);
}

var elem = $("div.header"); //set the element to inspect

logMarginPadding(elem);
//sets
elem.css("margin","10px");
elem.css("padding","10px");
logMarginPadding(elem);

})(jQuery);

This seems to work.

//get top margin of element
alert($("div.header").css("margin-top"));

//get top margin of element as integer value
alert($("a").css("margin-top").replace("px", ""));

//if using it with a calculation you must convert it to an integer
parseInt($("a").css('padding-left').replace("px", ""));

Anyways, this is how I got the padding for the element. Not ideal and only works if the padding is uniform (same on each side) Simply get the width and outer width divided by 2.

var item = $('div.header');
width = item.width(),
padding = (item.outerWidth()-width)/2;

There is pretty popular plugin called jsizes which may a good solution to getting/setting margin/padding values on elements.

JSizes is a small plugin for the jQuery JavaScript library which adds support for querying and setting the CSS min-width, min-height, max-width, max-height, border-*-width, margin, and padding properties.

Further readings
jQuery has the funtions outerWidth and outerHeight which include the border and padding by default, and also the margin if the first argument of the function is true
http://api.jquery.com/outerHeight/
http://api.jquery.com/outerWidth/

7 ответов

$('#Range2').change(function() {
    $('.lil').css({ padding: this.value + 'px 0px 0px 0px' });
});

DEMO

или чистый javascript

DEMO

function changePadding() {
    lil.style["padding-top"] = this.value + 'px';
}


var lil = document.querySelector('.lil'),
    Range2 = document.querySelector('#Range2');

Range2.addEventListener("change",changePadding,false);

Gildas.Tambo
07 окт. 2014, в 16:57

Поделиться

$('.lil').css({ "padding": this.value + 'px 0px 0px 0px' });

Это не работает?

ntgCleaner
07 окт. 2014, в 17:24

Поделиться

Просто добавьте пробелы

$('.lil').css({ padding: this.value + 'px ' + '0px ' + '0px ' + '0px' });

hakazvaka
07 окт. 2014, в 17:05

Поделиться

Попробуй это:

$('#Range2').change(function() {    
  $('.lil').css("padding", this.value + 'px 0px 0px 0px' );
}

aks.
07 окт. 2014, в 16:21

Поделиться

вы можете использовать это

добавив ' ' он также примет другие переменные

Js Fiddle

    function padding() {
        a = $('#Range').val() + 'px'
        b = $('#Range1').val() + 'px'
        c = $('#Range2').val() + 'px'
        d = $('#Range3').val() + 'px'

        $('.test').css({
            'padding': a + ' ' + b + ' ' + c + ' ' + d
        })        
    }

Vitorino fernandes
07 окт. 2014, в 17:33

Поделиться

Самый простой и может применяться там, где вы хотите

Создать CSS

 .lil{
 padding-top: 25px;
    padding-right: 50px;
    padding-bottom: 25px;
    padding-left: 50px;
}

Применить это с помощью JQuery

$('#Range2').change(function() {
$(this).addClass( "lil" );
});

Ganesh_Devlekar
07 окт. 2014, в 17:30

Поделиться

Попробуйте это вместо этого:

$('#Range2').change(function () {
    $('.lil').css('padding', this.value + 'px' + '0px' + '0px' + '0px');
});

SnareChops
07 окт. 2014, в 16:49

Поделиться

Ещё вопросы

  • 1Передайте тип переменной ViewModel как общий для метода
  • 1Python, Pandas, чтобы соответствовать фрейму данных и указать результаты из списка
  • 0Как я могу сделать раскрывающееся меню при нажатии
  • 0AngularJS / Rails $ http.post имя поля данных как переменная
  • 0JQuery изменить содержание Div
  • 1ASP.NET || VsualStudio || Не удалось загрузить файл или сборку? Что я могу сделать?
  • 0PHP curl — Использование переменной для CURLOPT_USERPWD
  • 0Экспорт файла CSV имеет много пустых строк
  • 1Извлечь тип объекта из строки формата
  • 0нужно применить без переноса и отключить правый контроль карусели в Angularjs ui carousel
  • 0Как определить внутреннюю ширину браузера для мобильных устройств
  • 1Как использовать семафоры для сигнализации?
  • 1нельзя использовать Tablelayout в виджете?
  • 0Массив фильтров во втором контроллере
  • 0Symfony2 дублирует идентификатор в 2 полях (id и idbis) со стратегией = «AUTO»
  • 1Java 7u55 влияет на существующие апплеты
  • 1Где хранятся потоковые данные BLOB до фиксации?
  • 1Нахождение непоследовательной пары чисел в массиве
  • 0Отладка приложения Adobe AIR JavaScript с не работающим fdb
  • 1Есть ли максимум для чтения в строке File.ReadLine ()?
  • 1Ошибка TypeE на pickle.load с классом, производным от SimpleNamespace
  • 0как закрыть всплывающее окно при нажатии кнопки на экране
  • 0Нужна помощь, чтобы установить cookie, чтобы запомнить нажатие кнопки и отключить его на X минут
  • 0Копирование статического массива в динамический массив в C ++
  • 1Добавление пользовательского элемента управления mvvm caliburn
  • 0Перемещение объекта с использованием SFML
  • 1Получить экземпляр действия, который запускает другой из намерения
  • 0MySQL Как динамически выбирать, из какой таблицы получать данные при создании представления
  • 0почему mozilla не поддерживает $ в jquery?
  • 1RSA Chat Messenger (Исключение формата чисел в Java)
  • 1Как получить доступ к PrintSettings из C # с помощью GeckoFX
  • 0Невозможно отправить запрос через $ http (AJAX) в сервисе angularjs
  • 1Как применить декораторы к функциям Python, написанным на C?
  • 0Как получить данные на основе этого критерия?
  • 0Как создать массив всех идентификаторов, имеющих <input type = «checkbox»> в jQuery?
  • 1Android — может ли сервис сообщать о вызове активности со статусом
  • 0Попытка сделать ресурсы темы Tumblr прозрачными
  • 1Как получить параметры командной строки и поместить их в переменные? [Дубликат]
  • 0xsl css jquery — скрытый div все еще показывает пространство
  • 1Angular 4: список не обновляется при замене элемента в резервном массиве
  • 1конфликт между dat.gui.js и trackballControl.js в three.js
  • 0Преобразовать в текст, но сохранить макет DOM
  • 1C #, не могу найти дочерний узел TreeView по тексту
  • 1Как не выбирать узел дерева после свертывания
  • 1Regex Espression для проверки имен
  • 0В поисках лучшего способа инициализации матрицы Eigen3
  • 0JavaScript и Laravel PHP
  • 0Я хочу интегрировать php и js, чтобы увидеть видео плеер
  • 0Класс ui-state-focus не удаляется с вкладки пользовательского интерфейса JQuery при программном изменении активной вкладки
  • 1Java — найти поле объекта, используя отражение

jquery-and-cssДавно в моем блоге не было статей про JQuery. Нет, статьи с его применением были, конечно, но он там выступал в роле вспомогательного инструмента, а рубрика «Изучаем JQuery» тем временем покрывалась пылью. А между тем, пришло время, перейти к самой интересной части обучения – добавлению различных эффектов, именно то, из-за чего его берутся изучать многие люди. И в сегодняшней статье вы узнаете, как изменять CSS-свойства «на лету».

Прежде чем мы перейдем непосредственно к эффектам, давайте вернемся немного назад и взглянем на CSS. В предыдущих статьях, мы изменяли внешний вид страницы, путем добавления или удаления различных CSS-классов, которые перед этим, конечно же, должны быть созданы в CSS-файле. Как правило это правильный способ, потому что он считается с ролью CSS при формировании страницы.

Однако бывают случаи, когда вам нужно изменить стиль CSS, которого нет в файле стилей, или который описать нельзя. Для таких случаев в JQuery существует метод .css().

Для того чтобы получить значение CSS-свойства, мы должны просто передать имя свойства в качестве строки, примерно так .css(‘backgroundColor’).

Свойства, состоящие из нескольких слов, можно записывать через дефис, как в CSS-файле (background-color), или разным регистром, как они записываются в DOM (backgroundColor). Для установки свойств CSS, метод .css() использует два способа. Первый способ – два параметра, название CSS-свойства и его значение, через запятую. Второй – карта, состоящая из пар свойство-значение.

Пример:

.css('property','value')

.css({property1: 'value1', 'property-2': 'value2'})

Мы будем использовать метод .css(), точно так же как использовали .addClass() – объединим их селектором и привяжем событие. Давайте разберем метод .css() на конкретном примере. Нам понадобится следующая HTML-разметка:

<div id="textbox">
   Коллекции на вкладке "Вставка" содержат элементы, 
   которые определяют общий вид документа. Эти коллекции 
   служат для вставки в документ таблиц, колонтитулов, списков, 
   титульных страниц и других стандартных блоков. При создании рисунков, 
   диаграмм или схем они согласовываются с видом текущего документа.
</div>
		
<input id="increase" type="submit" value="увеличить" />
<input id="decrease" type="submit" value="уменьшить">	

И немного CSS:

#textbox{
       border: 1px solid #000;
       background: #DFECFF;
       margin: 20px auto;
       text-align: left;
       padding: 10px;
       width: 400px;
       color: #0000a0;
       font-style: italic;
       clear: both;
}

В результате у нас появится вот такая страничка:

пример с текстом

На странице присутствуют две кнопки – для увеличения и уменьшения шрифта. В принципе здесь можно использовать метод .addClass(), описанный в предыдущей статье, но давайте немного усложним задачу, и представим, что нам нужно уменьшать или увеличивать текст, при каждом нажатии соответствующей кнопки. Это конечно можно реализовать, через описание отдельного класса для каждого клика, но гораздо проще будет получать текущий размер текста, и увеличивать (уменьшать) его по заданному значению.

Наш код традиционно начинается с $(document).ready() и обработчика событий кнопки $("#increase").click():

$(document).ready(function(){
	    $("#increase").click(function(){				
	});			
})

Далее, размер шрифта можно легко получить через с помощью $(“#textbox”).css('fontSize'). Однако, возвращаемое значение будет содержать как число так и единицы измерения, поэтому нам нужно сохранить каждую часть в собственную переменную, после чего мы сможем увеличить число, и заново присоединить к нему единицы измерения. Также, мы планируем использовать объект JQuery более одного раза, следовательно, было бы неплохо и его сохранить в переменную.

$(document).ready(function() {
  $("#increase").click(function() {
         var $speech = $('div.speech');
         var currentSize = $speech.css('fontSize');
         var num = parseFloat(currentSize, 10);
         var unit = currentSize.slice(-2);
         num *= 1.4;
         $speech.css('fontSize', num + unit);
      });
});

Первая строка внутри функции .click() сохраняет переменную c блоком #textblock.

Обратите внимание, что мы используем символ $, в имени переменной $speech. Поскольку $ — это допустимый символ для переменных JavaScript, мы можем использовать его в качестве напоминания, что это переменная хранит объект JQuery. Следующая строка – сохраняет в переменную размер шрифта блока #textblock – например, 12px.

После этого мы используем parseFloat() и slice(). Функция parseFloat() используется для конвертирования строковых значений в числовые (десятичные). Например, строку 12, будет конвертирована в число 12. Если строка начинается с нечислового символа, parseFloat() вернет NaN, что означает:  «Не числовое значение» (Not a Number).Второй аргумент функции parseFloat(), гарантирует, что число будет конвертировано именно в десятеричное значение.

Метод .sice() возвращает подстроку, начинающуюся с определенного символа строки. Поскольку название единиц измерения, которые мы используем  длиной в два символа (px), мы указываем, что подстрока должна начинаться с двух последних символов основной строки.

Все что нам осталось это умножить полученное значение переменной num на 1.4, а затем установить размер шрифта, путем склеивания двух переменных num и unit:

$(document).ready(function(){
	$("#increase").click(function(){
		var $speech = $("#textbox");
		var currentSize = $speech.css('fontSize');
		var num = parseFloat(currentSize, 10);
		var unit = currentSize.slice(-2);
		num*=1.4;
		$speech.css('fontSize', num + unit);
	});
})

Теперь после клика по кнопке «Увеличить», текст в блоке увеличивается, как на представленном скриншоте:

пример работы скрипта

Следующий клик по этой же кнопке, продолжает увеличивать текст в блоке.

Для того чтобы сделать работающей кнопку «Уменьшить», мы будем делить значение переменной – num/=1.4. И чтобы не увеличивать размер кода, мы можем объединить два обработчика событий .click() в один, через класс button. Затем, после установки переменных, мы легко можем умножать или делить, основываясь на ID кнопки, которая была нажата. Вот как должен выглядеть код:

$(document).ready(function(){
	$("input").click(function(){
		var $speech = $("#textbox");
		var currentSize = $speech.css('fontSize');
		var num = parseFloat(currentSize, 10);
		var unit = currentSize.slice(-2);				
		if (this.id=="increase"){
			num*=1.4;
		} else if(this.id=="decrease"){
			num/=1.4;
		}
		$speech.css('fontSize', num + unit);
	});				
})

Выше был приведен простейший пример использования метода .css() на практике. Можно привести еще один пример использования этого метода.

Разделение пунктов меню

Довольно часто в дизайне встречается такой прием, как разделение пунктов меню вертикальной линией, причем первый и последний пункт меню не должны иметь боковой линии.

Для такого меню потребуется следующая HTML-разметка:

<div id="menu">
   <ul>
	<li><a href="#">первый пункт</a></li>
	<li><a href="#">второй пункт</a></li>
	<li><a href="#">третий пункт</a></li>
	<li><a href="#">четвертый пункт</a></li>
   </ul>
</div>

CSS-стили:

ul{
     list-style: none;
}
		
ul li{
     list-style: none;
     float: left;
     background: #DFECFF;
     display: block;
     padding: 10px;
     border-right: 1px gray solid;
}
		
ul li a{
     text-decoration: none;
     color: #000;
}

Вот так будет выглядеть наше меню:

меню

А для того чтобы убрать правый разделитель у последнего пункта меню (четвертый пункт), можно использовать вот такой код:

$(document).ready(function(){
         $("#menu ul li:last").css('border-right', 'none');
});

И в результате у нас получается вот такое меню:

меню после применения javascript

Как видите пользоваться этим методом довольно просто и удобно, но все-таки старайтесь не злоупотреблять им, а использовать только в тех случаях, когда нет возможности добавить нужный стиль в CSS-файл.

Архив с приведенными примерами.

Понравилась статья? Поделить с друзьями:
  • Как изменить opengl на vulkan
  • Как изменить null на not null ms sql
  • Как изменить mph на км ч beamng drive
  • Как изменить mac адрес виртуальной сетевой карты
  • Как изменить jpg на pat