Professional Documents
Culture Documents
Объект CSSStyleDeclaration
Объект CSSStyleDeclaration
1. Властивість cssText
Зазначимо, що властивість cssText за своєю дією повністю еквівалентна подібній
властивості об’єкту Style. Для отримання у скриптах інформації, стосовно правил CSS,
що були використані для форматування веб-сторінки в цілому можна використати
оператор, що має синтаксис:
var ім’я_змінної = document.body.style.cssText;.
Звернення до HTML документу в цілому відбувається через ім’я body. У цьому випадку
змінна, ім’я якої оголошене за допомогою оператора var, отримає значення у вигляді
рядка, що буде складатися із списку властивостей CSS і їх значень, що були
задекларовані за допомогою атрибуту style у тегу <body> HTML коду веб-сторінки.
Наприклад, тег <body> має вигляд
<body style=”background-color:#ddeeff”>,
тоді при виконанні у скрипті оператора
var rule=document.body.style.cssText;
змінна rule отримає значення у вигляді рядкового літералу “background-color: rgb(221,
238, 255);”. Зазначимо, що при завданні кольору для CSS правил у вигляді RGB коду, як
#rrggbb, він виводиться при використанні властивості cssText об’єкту
CSSStyleDeclaration у формі rgb(r,g,b) (тут r,g,b десяткові числа, що вказують, відповідно,
вклад червоного зеленого і синього кольорів у кольоровий відтінок, що задає RGB код).
Коли колір задається назвою на англійській мові, він виводиться, при використанні
властивості cssText у вигляді цієї назви.
Для отримання у скрипті інформації про правила CSS, що були використані для
форматування конкретного елементу веб-сторінки, оператор може мати один з наступних
синтаксисів:
var ім’я_змінної = складове_ім’я.style.cssText;
var ім’я_змінної = document.getElementById(“id-ім’я”).style.cssText;
var ім’я_змінної = document.getElementsByTagName(“ім’я тегу”)[i].style.cssText;
var ім’я_змінної = ім’я_посилальної змінної.style.cssText;.
Ім’я посилальної змінної може бути створено за допомогою методів
getElementById() і getElementsByTagName(), як це було розглянуто раніше для об’єктів
клієнта і об’єкту Style.
Наприклад, на веб-сторінці створено зображення за допомогою тегу
<img src=”EADLE.jpg” id=”r1” style=”width:300px;position:absolute;top:50mm;
left:100mm;border:groove 2mm yellow” onClick=”inf()”>,
а у скрипті, який викликається подією click на зображенні, виконується оператор
var infocss = document.getElementById(“r1”).style.cssText;.
У цьому випадку змінна infocss після виконання оператора присвоювання прийме
значення рядкового літералу =” width:300px;position:absolute;top:50mm;left:100mm;
border:groove 2mm yellow”.
Властивість cssText об’єкту CSSStyleDeclaration надає можливість програмним
шляхом змінювати дизайн елементів веб-сторінки, якщо цій властивості, прив’язаної до
конкретного елементу сторінки, присвоїти стрічку з правилами CSS, тобто виконати
оператор присвоювання з синтаксисом:
document.getElementById(“id-ім’я”).style.cssText = “правила CSS”;.
Тут для прив’язки до конкретного елементу веб-сторінки використано метод
getElementById().
Наприклад, на сторінці створено блок з написом «Объект CSSStyleDeclaration» за
допомогою тегу
<div id="d1" style="width:300px;hight:100px;border:solid 1mm" onClick="inf()"/>
Объект CSSStyleDeclaration
</div>
Як можна бачити, після завантаження сторінки до вікна браузера, блок буде
позиціонованим за замовченням у лівому верхньому куті вікна браузера. Він буде мати
розміри 300100 пікселів, рамку товщиною 1 мм, за замовченням чорного кольору.
Правила CSS, що до форматування напису в середині блоку у тегу style відсутні, тому
напис буде форматуватися за замовченням. Якщо при клацанні на блоці функція скрипта
inf(), що викликається цією подією, містить оператор присвоювання
document.getElementById("d1").style.cssText="width:800px;height:200px;
position:absolute;top:10px;right:10px;background:#ffeedd;font:italic 50px Arial;
text-align:center;color:red;border:groove 3mm blue";,
то зміст атрибуту style в тегу <div> зміниться на той, що представлено як значення
властивості cssText, яке присвоюється їй при виконанні цього оператора. Згідно
правилам CSS, що будуть передані властивості cssText дизайн блоку зміниться
наступним чином. Розміри блоку збільшаться до 800200 пікселів, кольоровий фон
блоку буде відповідати RGB коду :#ffeedd, навколо блоку з’явиться синя рамка
товщиною 3 мм стилю groove. Зміниться позиція блоку. Він буде позиціонований у
верхньому правому куті вікна браузера з відступами 10 пікселів відносно верхньої і
правої сторони вікна браузера. Текст у середині блоку буде вирівняний за його центром,
виведений шрифтом Arial курсивом з висотою букв 50 пікселів. Колір шрифту буде
червоним.
Таким чином, властивість cssText надає можливість не тільки отримувати у
скриптах інформацію про правила CSS, що були використані для форматування тих чи
інших елементів веб-сторінки, але дозволяє цілеспрямовано програмним шляхом
змінювати дизайн елементів веб-сторінки.
2. Властивість length
Повертає кількість властивостей правил CSS, що були використані для
форматування або усього документу(атрибут style в тегу <body>), або окремого елементу
веб-сторінки. Синтаксис використання такий самий, як для властивості cssText.
Наприклад, тег <body> документу має вигляд
<body style=”background-image:url(CAR.jpg); background-size:1000px”>,
тоді при виконанні у скрипті оператора
var x = document.body.style.length;,
змінна x отримає значення 2.
Якщо на веб-сторінці створено блок, що описується за допомогою тегу
<div id="d" style="width:300px;height:150px;background-color:yellow;
position:absolute;top:50mm;right:60mm" onClick="info1()"></div>,
то при виконанні оператору
var x = document.getElementById(“d”).style.length;,
змінна x отримає значення 6.
Більш докладніше розглянемо властивості об’єкту CSSStyleDeclaration на
наступному прикладі.
Приклад_1. Створити веб-сторінку, що має графічний фон, заданий за
допомогою файлу з URL адресою CAT.jpg. Зображення, що створює графічний фон
повинне покривати усе вікно браузера на моніторі з будь якою роздільною здатністю.
На сторінці у правому верхньому куті розташувати рисунок з URL адресою CAR.jpg, у
нижньому правому куті розташувати блок розмірами 500400 пікселів, обведений
подвійною рамкою товщиною 2 мм синього кольору. Блок повинен мати фон, заданий
кольором з RGB кодом #ffeedd. У нижньому лівому куті вікна браузера розташувати
багаторядкове текстове поле форми для виводу інформації. Поле повинне мати 10
рядків з 60 символами в рядку. При завантаженні сторінки у полі форми повинні
з’явитися правіла CSS, що були використані для форматування сторінки в цілому. При
наведенні курсору миші на блок і рисунок в полі форми повинні з’являтися правила CSS,
що були використані для форматування цих елементів. Для рисунку слід вивести також
інформацію про кількість властивостей, що були використані для його форматування.
При видаленні курсору миші з рисунку і блоку, багаторядкове поле форми повинно
очищуватися. При клацанні мишею на рисунку його форматування повинно змінитися.
Рисунок повинен переміститися у правий верхній кут вікна браузера, зменшити ширину
до 300 пікселів, повинна з’явитися рамка навколо рисунка стилю groove жовтого
кольору товщиною 2 мм.
Для створення сторінки згідно умові прикладу потрібні будуть властивості об’єкту
CSSStyleDeclaration cssText і length. Для управління функціями скрипта потрібні будуть
обробники подій onLoad, onMouseover, onMouseout і onClick. Оскільки правила CSS є
доступними для властивостей cssText і length, коли вони вбудовані у тег за допомогою
атрибуту style, окремий файл CSS можна не створювати. Тому робота веб-сторінки буде
забезпечуватися двома файлами з розширеннями .html і .js. Коди цих файлів наведені
нижче.
Файл «Prim1.html»
<html>
<head>
<script src="Prim1_JS.js"></script>
<title>Свойства объекта CssStyleDeclaration</title>
</head>
<body style="background-image:url(CAT.jpg);background-size:cover"
onLoad="bodprop()">
<div id="bl" style="width:500px;height:400px;background:#ffeedd;
border:double 2mm blue;position:absolute;bottom:10px;right:10px"
onMouseover="inf2()" onMouseout="document.getElementById('inform').value=''">
</div>
<img src="CAR.jpg" name="izo" style="position:absolute;top:20px;right:20px"
onMouseover="inf1()" onMouseout="document.getElementById('inform').value=''"
onClick="chn()">
<form>
<textarea rows="10" cols="60" id="inform" style="background:#ddeeff;font:7mm
Arial;color:#000060;position:absolute;bottom:10px;left:10px;border:solid 3px red"
onMouseover="inf3()" onMouseout="document.getElementById('inform').value=''">
</textarea>
</form>
</body>
</html>
Файл «Prim1_JS.js»
/*При завантаженні сторінки виводить у текстове поле форми інформацію
про CSS правила для форматування фону сторінки */
function bodprop(){
var bod=document.body.style.cssText;
bod="Правила CSS для веб-страницы: "+bod+".";
document.getElementById("inform").value=bod};
Рис. 1
При завантаженні сторінки обробник подій onLoad у тегу <body> запускає функцію
скрипта bodprop(), яка за допомогою властивості cssText вилучає правила CSS з атрибуту
style і присвоює їх змінній bod. Після доповнення стрічки правил літералом "Правила
CSS для веб-страницы: ", значення змінної bod, останнім оператором функції bodprop(),
присвоюється властивості value об’єкту textarea, тобто виводиться у багаторядкове поле
форми. Вигляд веб-сторінки додатку після завантаження до вікна браузера має вигляд,
показаний на рис. 2
рис. 2
При наведенні курсору миші на зображення обробник подій onMouseover запускає
функцію скрипта inf1(), яка за допомогою властивостей cssText і length вилучає правила
CSS, що були застосовані для форматування зображення і їх кількість. Ці значення
присвоюються змінним in1 і l1. Із значень цих змінних формується стрічка, яка
виводиться, як і у попередній функції, до багаторядкового текстового поля форма за
допомогою властивості value об’єкту textarea. Зазначимо, що для звернення у функції
inf1() до зображення використовується складове ім’я document.izo. Сторінка має вигляд,
показаний на рис. 3. Після видалення курсору миші з зображення обробник подій
onMouseout, за допомогою оператора document.getElementById('inform').value=''";,
очищує багаторядкове поля форми за рахунок присвоювання властивості value пустого
рядка. Сторінка приймає вигляд, показаний на рис. 1.
Подібним чином організовані функції скрипта inf2() і inf3(), які запускаються
обробником подій onMouseover при наведенні курсору миші, відповідно, на блок і
багаторядкове текстове поле форми. Ці функції використовують тільки властивість
cssText для вилучення правил каскадних листів стилів. Скриншоти веб-сторінки додатку,
що забезпечуються функціями inf2() і inf3() можна бачити на рис. 4 і рис. 5. Звернення до
блоку і поля форми у функціях inf2() і inf3() здійснюється з використанням id- імені за
допомогою метода getElementById().
При клацанні на зображенні обробник подій onClick у тегу <img> запускає
функцію скрипта chn(). Ця функція містить тільки один оператор присвоювання, який
присвоює, у вигляді строкового літералу, властивості cssText зображення правила CSS
“width:400px; position:absolute; top:10px; left:10px; border-style:groove; border-width:2mm;
border-color:yellow”. Звернення до зображення відбувається через складове ім’я
document.izo. Як наслідок значення атрибуту style у тегу <img> замінюється на наведене
вище і дизайн зображення змінюється так, як показано нарис. 6.
Рис. 3
Рис. 4
Рис. 5
рис. 6
а б
в г
д е
Рис. 7. Вигляд веб-сторінки додатку зразу після завантаження до вікна браузера (а) і
через інтервали часу після завантаження, с: 2-(б); 4-(в); 6-(г); 8-(д); 10-(е); 12-(а)
Метод getComputedStyle()
а б
в г
д е
ж з
Рис. 8. Вигляд веб-сторінки додатку зразу після завантаження до вікна браузера (а) і
після послідовного натискання кнопки у циклі читання значень властивостей CSS,
використаних для форматування блоку (б) – (з)