русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Работа со свойствами стилей


Дата добавления: 2015-07-09; просмотров: 971; Нарушение авторских прав


 

При работе со свойствами стилей объекта CSS2Properties помните, что все значе_ ния должны быть указаны в виде строк. В таблице стилей или атрибуте style можно написать:

position: absolute; font_family: sans_serif; background_color: #ffffff;

 

Чтобы сделать то же самое для элемента e в JavaScript, необходимо поместить все эти значения в кавычки:

 

e.style.position = "absolute"; e.style.fontFamily = "sans_serif"; e.style.backgroundColor = "#ffffff";

 

Обратите внимание, что точки с запятыми остаются вне строк. Это обычные точ_ ки с запятой, употребляемые в синтаксисе языка JavaScript. Точки с запятой, используемые в таблицах CSS_стилей, не нужны в строковых значениях, уста_ навливаемых с помощью JavaScript.

 

Кроме того, помните, что во всех свойствах позиционирования должны быть указаны единицы измерения. Следовательно, нельзя устанавливать свойство left подобным образом:

 

e.style.left = 300; // Неправильно: это число, а не строка e.style.left = "300"; // Неправильно: отсутствуют единицы измерения

 

Единицы измерения обязательны при установке свойств стиля в JavaScript – так же, как при установке атрибутов стиля в таблицах стилей. Далее приво_ дится правильный способ установки значения свойства left элемента e равным 300 пикселов:

e.style.left = "300px";

 

Чтобы установить свойство left равным вычисляемому значению, обязательно добавьте единицы измерения в конце вычислений:

 

e.style.left = (x0 + left_margin + left_border + left_padding) + "px";

 

Как побочный эффект добавления единиц измерения, добавление строки преоб_ разует вычисленное значение из числа в строку.

 

Объект CSS2Properties может также использоваться для получения значений CSS_атрибутов, явно установленных в атрибуте style элемента, или для чтения любых встроенных значений стилей, ранее установленных JavaScript_кодом. Однако и здесь необходимо помнить, что значения, полученные из этих свойств, представляют собой строки, а не числа, поэтому следующий код (предполагаю_ щий, что для элемента e с помощью встраиваемых стилей установлены поля) не делает того, что от него, возможно, ожидалось:



 

var totalMarginWidth = e.style.marginLeft + e.style.marginRight;

А вот такой код будет работать правильно:

 

var totalMarginWidth = parseInt(e.style.marginLeft) + parseInt(e.style.marginRight);


 

Это выражение просто отбрасывает спецификации единиц измерения, возвра_ щаемые в конце обеих строк. В нем предполагается, что свойства marginLeft и mar_


 

16.3. Использование стилей в сценариях
   

 

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

 

Вспомните, что некоторые CSS_атрибуты, например margin, представляют собой сокращения от других свойств, например margin_top, margin_right, margin_bottom и margin_left. Объект CSS2Properties имеет свойства, соответствующие этим сокра_ щенным атрибутам. Так, можно установить свойство margin следующим образом:

 

e.style.margin = topMargin + "px " + rightMargin + "px " +

 

bottomMargin + "px " + leftMargin + "px";

 

Хотя возможно, кому_то будет проще установить четыре свойства полей по от_ дельности:

 

e.style.marginTop = topMargin + "px"; e.style.marginRight = rightMargin + "px"; e.style.marginBottom = bottomMargin + "px"; e.style.marginLeft = leftMargin + "px";

 

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

 

И наконец, позвольте мне снова подчеркнуть, что когда вы получаете объект CSS2Properties через свойство style объекта HTMLElement, свойства этого объекта представляют значения встроенных атрибутов стилей элемента. Другими слова_ ми, установка одного из этих свойств эквивалентна установке CSS_атрибута в ат_ рибуте style элемента – она влияет только на данный элемент и имеет приоритет над конфликтующими установками стилей из других источников в CSS_каска_ де. Именно такое точное управление отдельными элементами и требуется при создании DHTML_эффектов с помощью JavaScript.

 

Однако когда мы читаем значения этих свойств в CSS2Properties, они возвращают осмысленные значения, только если были ранее установлены нашим JavaScript_ кодом или если HTML_элемент, с которым мы работаем, имеет встроенный атри_ бут style, установивший нужное свойство. Например, документ может включать таблицу стилей, устанавливающую левое поле для всех абзацев равным 30 пик_ селов, но если прочитать свойство leftMargin одного из абзацных элементов, бу_ дет получена пустая строка, если только этот абзац не имеет атрибута style, пе_ реопределяющего значение, установленное таблицей стилей.

 

Поэтому несмотря на то, что объект CSS2Properties может использоваться для ус_ тановки стилей, переопределяющих другие стили, он не позволяет запросить CSS_каскад и определить полный набор стилей, применяемых к данному элемен_ ту. В разделе 16.4 мы кратко рассмотрим метод getComputedStyle() и его альтерна_ тиву в IE – свойство currentStyle, предоставляющие именно такую возможность.

 

Пример: всплывающие подсказки в CSS


 

Пример 16.4 представляет собой JavaScript_модуль, предназначенный для ото_ бражения простых всплывающих DHTML_подсказок, как показано на рис. 16.5.


 

390 Глава 16. CSS и DHTML

 

Рис. 16.5. Всплывающая подсказка, полученная средствами CSS

 

Всплывающие подсказки выводятся в двух вложенных элементах <div>. Внеш_ ний элемент <div> позиционируется по абсолютным координатам и имеет фон, который позволяет ему выступать в роли тени. Внутренний элемент <div> пози_ ционируется относительно внешнего элемента <div> с учетом необходимости соз_ дания эффекта тени и отображает содержимое подсказки. Стили подсказки за_ даются в трех разных местах. Во_первых, в статических таблицах стилей, опре_ деляющих тень, цвет фона, рамку и шрифт текста подсказки. Во_вторых, во встроенных стилях (таких как position:absolute), определяемых при создании элементов <div> в конструкторе Tooltip(). В_третьих, в стилях top, left и visibi_ lity, которые устанавливаются при выводе подсказки методом Tooltip.show().

 

Обратите внимание: пример 16.4 – это простейшая реализация модуля, который просто отображает и скрывает подсказки. Позднее мы расширим данный при_ мер, добавив в него механизм вывода подсказок в ответ на события от мыши (см. пример 17.3).

 

Пример 16.4. Реализация всплывающих подсказок средствами CSS

/**

* Tooltip.js: простейшие всплывающие подсказки, отбрасывающие тень.

 

*

* Этот модуль определяет класс Tooltip. Объекты класса Tooltip создаются

* с помощью конструктора Tooltip(). После этого подсказку можно сделать

* видимой вызовом метода show(). Чтобы скрыть подсказку, следует

* вызвать метод hide().

*

* Обратите внимание: для корректного отображения подсказок с использованием

* этого модуля необходимо добавить соответствующие определения CSS_классов

* Например:

*

* .tooltipShadow {

* background: url(shadow.png); /* полупрозрачная тень * /

* }

*            
* .tooltipContent {        
* left: _4px; top: _4px; /* смещение относительно тени * /
* background_color: #ff0; /* желтый фон * /
* border: solid black 1px; /* тонкая рамка черного цвета * /

 

16.3. Использование стилей в сценариях
       
* padding: 5px; /* отступы между текстом и рамкой * /  

* font: bold 10pt sans_serif; /* небольшой жирный шрифт * /

* }

 

*

* В броузерах, поддерживающих возможность отображения полупрозрачных

 

* изображений формата PNG, можно организовать отображение полупрозрачной

 

* тени. В остальных броузерах придется использовать для тени сплошной цвет

* или эмулировать полупрозрачность с помощью изображения формата GIF.

*/

function Tooltip( ) { // Функция_конструктор класса Tooltip

this.tooltip = document.createElement("div"); // Создать div для тени
this.tooltip.style.position = "absolute";   // Абсолютное позиционирование
this.tooltip.style.visibility = "hidden";   // Изначально подсказка скрыта
this.tooltip.className = "tooltipShadow";   // Определить его стиль
this.content = document.createElement("div"); // Создать div с содержимым
this.content.style.position = "relative";   // Относительное позиционирование
this.content.className = "tooltipContent";   // Определить его стиль
this.tooltip.appendChild(this.content);   // Добавить содержимое к тени
}    
// Определить содержимое, установить позицию окна с подсказкой и отобразить ее
Tooltip.prototype.show = function(text, x, y) {    
this.content.innerHTML = text; // Записать текст подсказки.
this.tooltip.style.left = x + "px"; // Определить положение.
this.tooltip.style.top = y + "px";    
this.tooltip.style.visibility = "visible"; // Сделать видимой.

 

// Добавить подсказку в документ, если это еще не сделано if (this.tooltip.parentNode != document.body)

 

document.body.appendChild(this.tooltip);

};

 

// Скрыть подсказку Tooltip.prototype.hide = function() {

this.tooltip.style.visibility = "hidden"; // Сделать невидимой.

};

 



<== предыдущая лекция | следующая лекция ==>
Соглашения об именах: CSS_атрибуты в JavaScript | DHTML_анимация


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.205 сек.