Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Разработка мобильных приложений для бизнеса. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
тора самого по себе (в таком случае селектор начинается с «#»), так и свой­ство какого-нибудь элемента этого класса или с этим идентификатором.
Псевдоклассы
Псевдоклассы определяют динамическое состояние элементов, кото­рое изменяется со временем или с помощью действий пользователя. При­мером такого состояния служит текстовая ссылка, которая меняет свой цвет
при наведении на нее курсора мыши. При использовании псевдоклас­сов браузер не перегружает текущий документ, поэтому с их помощью можно получить разные динамические эффекты на странице.
Синтаксис применения псевдоклассов следующий: Элемент:Псевдокласс { Описание правил стиля }
Вначале следует элемент, к которому добавляется псевдокласс, затем указывается двоеточие, после которого идет имя псевдокласса. Допускает­ся применять псевдоклассы к именам идентификаторов или классов и кон­текстным селекторам:
a.menu:hover {color: green};
.menu a:hover {background: #fc0};
active
Происходит при активации пользователем элемента. Например, при наведении курсора на ссылку и нажатии левой кнопки мыши.
link
Применяется к непосещённым ссылкам, т.е. ссылкам, на которые пользователь еще не нажимал. Браузер сохраняет историю посещений не­которое время, поэтому ссылка может быть помечена как посещённая хотя бы потому, что
Замечание
Запись a {...} и a:link {...} по своему результату равноценна, поскольку в браузе­ре дает один и тот же эффект, поэтому псевдокласс link можно не указывать.
по ней был зафиксирован переход раньше.
focus
Применяется к элементу при получении им фокуса. Например, для текстового поля формы получение фокуса означает, что курсор установлен в поле, и с помощью клавиатуры можно вводить в него текст.
Замечание 1
Результат будет виден только для тех элементов, которые могут получить фокус. В частности, это теги <a>, <input>, <select> и <textarea>.
Замечание 2
Псевдокласс focus не поддерживается браузером Internet Explorer.
hover
Псевдокласс hover активизируется, когда курсор мыши находится в пределах элемента, но щелчка по нему не происходит.
visited
11
Данный псевдокласс применяется к посещённым ссылкам. Обычно такая ссылка меняет свой цвет по умолчанию на фиолетовый, но с помо­щью стилей цвет и другие параметры можно задать самостоятельно.
Псевдоклассы link и visited могут применяться только к ссылкам, а псевдоклассы active и hover также и к другим элементам документа. Это расширяет набор приёмов и позволяет создавать
эффект перекатывания,
когда стиль элемента меняется при наведении на него курсора мыши.
Замечание
Браузер Internet Explorer 6 и младше позволяет использовать псевдоклассы active и hover только для ссылок. Начиная с версии 7.0 псевдоклассы в этом браузере можно добавлять и к другим элементам.
Псевдоэлементы
Служат для определения положения элемента в дереве документа. Синтаксис описания псевдоэлементов идентичен синтаксису псевдоклассов:
Элемент:Псевдоэлемент { Описание правил стиля }
first-child
Применяется к первому дочернему элементу селектора, который расположен в дереве элементов документа.
Замечание
Браузер Internet Explorer поддерживает псевдокласс first-child начиная с версии 7.0.
Псевдокласс first-child удобнее всего использовать в тех случаях, ко­гда требуется задать разный стиль для первого и остальных однотипных элементов. Например, по правилам типографики красную строку для пер­вого абзаца текста не устанавливают, а для остальных абзацев добавляют отступ первой строки. С этой целью применяют параметр text-indent с нужным значением отступа. Но чтобы
изменить стиль первого абзаца и
убрать для него отступ, потребуется воспользоваться псевдоклассом first-
child:
p {text-indent: 15px;}
p:first-child {text-indent: 0px;}
Наследование. Каскадирование. Приоритеты стилей CSS
Применение CSS к документам HTML основано на принципах на­следования и каскадирования. Принцип наследования заключается в том, что свойства CSS, объявленные для элементов-предков, наследуются эле­ментами потомками. Однако далеко не все свойства CSS наследуются. Например, если для элемента параграфа p средствами CSS задана рамка, то она не будет наследоваться ни одним
тегом, содержащимся в данном теге
p. В то же время, если для параграфа p средствами CSS задан цвет шрифта,
то это свойство будет унаследовано каждым элементом, находящимся в параграфе.
12
Принцип каскадирования применяется в случае, когда какому-то элементу HTML одновременно поставлено в соответствие более одного правила CSS, т.е. когда происходит конфликт значений этих правил. Чтобы разрешить такие конфликты, вводятся правила приоритета (от низкого к высокому):
1. Встроенный стиль браузера.
2. Стиль, заданный пользователем браузера в его настройках.
3. Стиль, заданный непосредственно
автором страницы. И далее, уже
в этом авторском стиле приоритеты расставляются следующим образом:
4. Стили, наследуемые в документе элементом от своих предков.
5. Стили, заданные во внешних таблицах стилей, подключённых к
документу.
6. Стили, заданные непосредственно селекторами, содержащимися в
контейнерах style данного документа.
Нередки случаи, когда к какому-нибудь элементу имеют
отношение, задают его вид несколько таких селекторов. Такие конфликты между ними разрешаются с помощью расчёта специфичности каждого такого селектора и применения этих селекторов к данному элементу в порядке убывания их специфичностей. При расчёте специфичности селектора принимается во внимание:
количество идентификаторов (#id) в селекторе – ((1,0,0) за каждый
объявленный идентификатор в селекторе правила CSS);
количество классов (.class) и псевдоклассов (:pseudoclass) в селек-
торе – ((0,1,0) за каждый объявленный класс и псевдокласс в селекторе правила CSS );
количество тегов в селекторе – ((0,0,1) за каждый объявленный тег
в селекторе правила CSS). (Принцип расчёта таков, что, например, (1,0,0) будет иметь большую специфичность, соответственно – больший приори­тет, чем даже (0,10,0), а (0,1,0) будет иметь большую специфичность, больший
приоритет, чем (0,0,10). Если же рассчитанные таким образом спе­цифичности окажутся одинаковыми, то к элементу будет применено прави­ло, описанное селектором, расположенным в документе ниже других.)
7. Стили, объявленные непосредственно в теге данного элемента по-
средством атрибута style этого тега.
8. И, наконец, самым высоким приоритетом обладают стили, объяв-
ленные автором страницы или
пользователем с помощью сопроводитель­ного слова !important. Если таких свойств несколько, то предпочтение от­даётся в первую очередь стилям, заданным пользователем, а для остальных свойств (которые будут являться задаваемыми автором страницы) потре­буется определить их специфичности по принципам, описанным выше, и применять эти свойства в порядке убывания этих их специфичностей.
13
Пример таблицы стилей
Пример таблицы стилей (в таком виде она может быть либо разме­щена в отдельном файле .css, либо же обрамлена тегами <style> и разме­щена в «шапке» той самой веб-страницы, на которую она действует):
p {
font-family: Garamond, serif;
}
h2 {
font-size: 110%;
color: red;
background: white;
}
.note {
color: red;
background: yellow;
font-weight: bold;
}
p#paragraph1 {
margin: 0;
}
a:hover {
text-decoration: none !important;
}
#news p {
color: blue;
}
Здесь приведено шесть правил CSS с селекторами p, h2, .note, p#paragraph1, a:hover и #news p.
Первое правило присвоено HTML-элементу p (абзацу) – назначен стиль. Абзацы будут отображаться шрифтом Garamond, или, если такой шрифт недоступен, каким-либо другим шрифтом с засечками («serif»).
Второе правило присвоено HTML-элементу h2 (заголовку второго уровня). Заголовок второго уровня будет отображаться красным на белом фоне с увеличенным кеглем.
Третье правило
будет применено к любому элементу, атрибут class
которого равен 'note'. Например, к параграфу:
<p class="note">Этот абзац будет выведен полужирным шрифтом красного цвета на желтом фоне.</p>
Четвёртое правило будет применяться только к элементам p, атрибут id которых равен paragraph1. Такие элементы не будут иметь внешних от­ступов (margin).
14
Пятое правило определяет стиль hover для элементов a – гиперссы­лок. По умолчанию, в большинстве браузеров текст элементов a подчерки­вается. Это правило уберёт подчеркивание, когда указатель мыши нахо­дится над этими элементами. Сопроводительное слово !important гаранти­рует отсутствие подчёркивания, даже если оно будет задано в пользова­тельских стилях (за исключением ситуации, когда пользовательский стиль также
снабжён !important – приоритет будет у стиля пользователя).
Последнее, шестое правило применяется для элементов p, которые находятся внутри какого-либо элемента с атрибутом id, равным «news».
JavaScript
JavaScript – объектно-ориентированный скриптовый язык програм­мирования. Является диалектом языка ECMAScript. Обычно используется как встраиваемый язык для программного доступа к объектам приложе­ний. Наиболее широкое применение находит в браузерах как язык сцена­риев для придания интерактивности веб-страницам.
Основными архитектурными чертами являются динамическая типи­зация, слабая типизация, автоматическое управление памятью, прототип­ное программирование, функции как объекты первого класса.
На JavaScript оказали влияние многие языки, при разработке была цель сделать язык похожим на Java, но при этом лёгким для использования непрограммистами. Языком JavaScript не владеет какая-либо компания или организация, что отличает его от ряда языков программирования, исполь­зуемых в веб-разработке.
Семантика и синтаксис
Синтаксис языка JavaScript во многом напоминает синтаксис Си и Java, семантически же язык гораздо ближе к Self, Smalltalk или даже Лиспу.
Все идентификаторы языка являются регистрозависимыми. Имена переменных могут состоять из букв, арабских цифр, знака подчёркивания и символа доллара. При этом первым символом имени не может быть цифра.
Структура языка
Структурно JavaScript можно представить в чётко различимых друг от друга частей:
виде объединения трёх
15
ядро (ECMAScript),
объектная модель браузера (Browser Object Model или BOM (de)),
объектная модель документа (Document Object Model или DOM).
Если рассматривать JavaScript в отличных от браузера окружениях, то объектная модель браузера и объектная модель документа могут не поддерживаться.
Ядро (ECMAScript)
ECMAScript не является браузерным языком и на самом деле в нём не определяются методы ввода и вывода информации. Это скорее основа для построения скриптовых языков. Спецификация ECMAScript описывает типы данных, инструкции, ключевые и зарезервированные слова, операто­ры, объекты, регулярные выражения, не ограничивая авторов производных языков в расширении их новыми составляющими.
Объектная модель браузера
Объектная модель браузера – браузероспецифичная часть языка, яв­ляющаяся прослойкой между ядром и объектной моделью документа. Ос­новное предназначение объектной модели браузера – управление окнами браузера и обеспечение их взаимодействия. Каждое из окон браузера пред­ставляется объектом window, центральным объектом BOM. Объектная мо­дель браузера на данный момент не стандартизирована, однако специфи
-
кация находится в разработке WHATWG и W3C.
Помимо управления окнами в рамках объектной модели браузера, браузерами обычно обеспечивается поддержка следующих сущностей:
управление фреймами;
поддержка задержки в исполнении кода и зацикливания с
задержкой;
системные диалоги;
управление адресом открытой страницы;
управление информацией о браузере;
управление информацией о параметрах
монитора;
ограниченное управление историей просмотра страниц;
поддержка работы с HTTP-cookie.
Объектная модель документа
Объектная модель документа – интерфейс программирования при­ложений для HTML и XML-документов. Согласно DOM, документу можно поставить в соответствие дерево объектов, обладающих рядом свойств, ко­торые позволяют производить с ним различные манипуляции:
получение узлов,
изменение узлов,
изменение связей между узлами,
удаление узлов.
16
2. ПРОГРАММИРОВАНИЕ НА JAVASCRIPT
Типы данных
Описание типов данных
Язык JavaScript содержит всего шесть типов данных. Это относи­тельно небольшое количество типов позволяет, тем не менее, создавать полноценные сценарии для выполнения многих функций.
Тип Undefined (неопределенный)
Этот тип состоит из единственного значения undefined. Это значе­ние, которое принимает переменная, которая объявлена в
программе, но
которой еще не присвоено никакого значения.
Тип Null (нулевой)
Этот тип состоит из единственного значения null. Это значение оз­начает нулевую, пустую или несуществующую ссылку.
Тип Boolean (логический)
Этот тип состоит ровно из двух логических значений: true (истина) и false (ложь).
Тип String (строковый)
Этот тип состоит из всех возможных текстовых строк. Каждая строка представляет собой упорядоченный массив из нуля или более символов Unicode (т. е. 16-битовых целых чисел без знака), называемых элементами строки. Элементы строки нумеруются, начиная с нуля. Длина строки – это количество элементов в ней; пустая строка состоит из нуля элементов.
Тип Number (числовой)
Этот тип имеет ровно
18 437 736 874 454 810 627 (т. е. 264 - 253 + 3) значений, соответствующих 64-битовому формату плавающих чисел двой­ной точности IEEE 754 с тем единственным исключением, что
9 007 199 254 740 990 (т.е. 2
53
- 2) различных значений «Не число» данного
формата представляются в JavaScript одним значением NaN.
Еще два специальных значения – это положительная бесконечность и отрицательная бесконечность, которым в JavaScript соответствуют вы­ражения +Infinity (или просто Inifinity) и -Infinity. Отметим также, что в данном формате различаются положительный нуль (+0 или 0) и отрица- тельный нуль (-0).
Тип Object (объектный)
Значением этого типа являются объекты. Объект – это неупорядо­ченный набор свойств.
Преобразование типов
JavaScript – слаботипизированный язык. Это означает, что в деклара­ции переменной мы не указываем ее тип и в дальнейшем можем присваи­вать ей значения любых типов. Исполняющая система JavaScript сама
17
выполняет автоматическое преобразование типов данных по мере необхо­димости. Для явного преобразования типов используются методы Boolean, Number, Object и String.
Преобразования типов происходят по следующим правилам (табл. 2.1-2.4):
Таблица 0.1
Преобразование к логическому типу
Исходный тип Результат
Undefined False
Null False
Boolean без изменений
Number
String false, если аргумент – пустая строка; true в остальных случаях
Object True
Исходный тип Результат
Undefined NaN
Null +0
Boolean
Number без изменений
String
false, если аргумент равен +0, -0 или NaN; true в остальных случаях
Преобразование к числовому типу
1, если аргумент равен true; 0, если аргумент равен false
если строка содержит правильное число (возможно с пробелами перед и/или после него), то это число; NaN в противном случае
Таблица 0.2
Object результат преобразования значения объекта по умолчанию
Преобразование к строковому типу
Исходный тип Результат
Undefined "undefined"
Null "null"
18
Таблица 0.3
а
r
r
Boolean
Number текстовое представление числ
String без изменений
Object результат преобразования значения объекта по умолчанию
Исходный тип Результат
Undefined генерируется исключение TypeErro
Null генерируется исключение TypeErro
Boolean новый логический объект с данным значением по умолчанию
Number новый числовой объект с данным значением по умолчанию
String новый строковый объект с данным значением по умолчанию
"true", если аргумент равен true; "false", если аргумент равен false
Преобразование к объектному типу
Таблица 0.4
Object без изменений
Примеры неявных преобразований
В выражениях, соединяющих числовые и строковые значения опера­цией +, JavaScript преобразует числа в строки, например:
x = "Ответ равен " + 21; // возвращает "Ответ равен 21"
y = 21 + " - вот ответ"; // возвращает "21 - вот ответ"
В остальных случаях JavaScript пытается преобразовать строку в число, например:
a = "21" – 1; // возвращает 20
b = "21" + 1; // возвращает 211
Комментарии
Комментариями называются блоки текста, вставляемые в программ­ный код, но никак не обрабатываемые интерпретатором. Служат для раз­мещения в коде вспомогательной информации для разработчика.
В языке JavaScript применяются два вида комментариев:
1. Однострочный, или линейный.
Комментарий начинается комбинацией символов // и продолжается ровно до конца текущей строки. Применяется для добавления небольших замечаний или
для временного отключения одной строки кода. ... // Пример однострочного комментария ...
19
2. Многострочный, блочный, или внутристрочный. Комментарий начинается комбинацией символов /* и заканчивается
комбинацией */. При этом комментарий может содержать в себе знаки пе­ревода строки. Применяется для вставки значительных текстовых фраг­ментов (подробное описание работы модуля) или для временного отклю­чения блока кода.
... /*
Пример многострочного комментария. Комментарий может занимать множество строк. */ ...
Ветвление
Оператор ветвления (условный оператор) – оператор, конструкция
языка программирования, обеспечивающая выполнение определённой ко­манды (набора команд) только при условии истинности некоторого логи­ческого выражения, либо выполнение одной из нескольких команд (набо­ров команд) в зависимости от значения некоторого выражения.
Оператор ветвления применяется в случаях, когда выполнение или
невыполнение некоторого набора или невыполнения некоторого условия. Ветвление – одна из трёх (наряду с последовательным исполнением команд и циклом) базовых конструкций структурного программирования.
В языке JavaScript существуют две формы условной инструкции: ус-
ловный оператор и оператор выбора (переключатель).
Условный оператор
Условный оператор if...else позволяет проверить определенное усло-
вие и, в зависимости вательность операторов. Он имеет две формы:
if (условие) оператор_1 if (условие) оператор_1 else оператор_2
Здесь условие – это любое выражение, значение которого может
быть преобразовано к логическому типу, оператор_1 и оператор_2 – лю­бые группы операторов JavaScript; если эти группы содержат более одного оператора, то они должны быть заключены в фигурные скобки {}.
Первая форма оператора означает, что если значение условия истин
но, то выполняется оператор_1; если оно ложно, то управление передается оператору, следующему за if.
от его истинности, выполнить ту или иную последо-
команд должно зависеть от выполнения
-
20
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]