Регистрация
 
 
 
 
 



Главная
Добро пожаловать, Гость
Нажмите "Вход/Регистрация" для входа
Объявления Администрации
Стили:
 
 
 
 
Чат-бокс
Сообщения чата
   Help! 
RE: CSS OnDemand: HowTo для начинающих (1 чел.) (1) Гость
Вниз
  • [Страница 1 из 2]  12
Сообщения темы: RE: CSS OnDemand: HowTo для начинающих
#1432 
CSS OnDemand: HowTo для начинающих 5 мес., 2 нед. назад Репутация: 49  
Вступление.

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

Общепринятой практикой и даже нормой в современном оформлении страниц сайтов (в том числе, конечно, и сайтов на Joomla) является использование Каскадных таблиц стилей, или CSS.

С ним (с CSS) мы и будем работать.

Обоснование.

Сразу оговоримся - никакой острой и насущной необходимости в смене стиля страницы "на лету" (да и НЕ "на лету" тоже) совершенно нет - казалось бы, страница сформирована, сверстана и готова для показа посетителю, чего же еще? И если вы сторонник такого подхода - можете не читать дальше эту статью.

А для тех, кто считает, что комфорт, удобство и забота о пользователе никогда не бывают лишними (тем более, если обеспечить это можно ценой столь незначительных усилий, как я и постараюсь показать в этой статье) - идем дальше, и будем внедрять в нашу страницу возможность менять стили (цветовое оформление) "на лету", без перезагрузки страниц.

Методология.

Так же, как это описано и в первой статье, практически идеальным решением этой проблемы будет загрузка и применение новых, измененных CSS "по требованию", только в том случае, когда посетитель явным образом выразит такое желание (путем клика по соответствующему объекту на странице - кнопке или ссылке). Для этого мы реализуем механизм, который будет "подгружать" необходимые файлы CSS, меняя оформление страницы целиком или отдельных ее частей.

Такой метод носит название OnDemand, или в моем вольном переводе - "Остановка по требованию".

Пример.

Создадим на своей страничке (в модуле, в компоненте) простую таблицу, в которой разместим некоторые данные.

Код:

HTML

<table width="100%">
<tr>
<td class="mytd_1" width="100%">
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat
nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui
officia deserunt mollit anim id est laborum.
</td>
</tr>
<tr>
<td class="mytd_2" width="100%">
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat
nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui
officia deserunt mollit anim id est laborum.
</td>
</tr>
</table>


Создадим CSS - файл с названием MYCSS.CSS, определяющий разцветку ячеек таблицы:

Код:

CSS mycss.css

.mytd_1 {
background:red;
color:white;
}
.mytd_2 {
background:red;
color:white;
}


Подключим наш CSS - файл в секцию HEADER страницы:

Код:

HTML

<head>
<link href="mycss.css" rel="stylesheet" type="text/css" media="screen" />
</head>


Теперь при открытии страницы мы увидим табличку из 2х ячеек с красным фоном и белым цветом текста.

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

Решение.

Для этого сначала нужно создать 2 дополнительных CSS - файла, в которых определить другое цветовое оформление таблицы. Мы сделаем 1-й файл с синим фоном таблицы, а 2-й с зеленым.
И назовем их соответственно MYCSS-1.CSS и MYCSS-2.CSS:

Код:

CSS mycss-1.css

.mytd_1 {
background:blue;
color:white;
}
.mytd_2 {
background:blue;
color:white;
}


Код:

CSS mycss-2.css

.mytd_1 {
background:green;
color:white;
}
.mytd_2 {
background:green;
color:white;
}


Теперь осталась "самая малость" - обеспечить смену этих 3х стилей "на лету".

Технология метода настолько проста, что не вызовет никакой сколько-нибудь существенной дополнительной нагрузки на интерфейс, сервер или броузер.
Для ее реализации мы снова используем метод javascript appendChild.

Создадим в нашем документе функцию для автоматической подгрузки CSS "на лету":

Код:

HTML
<script type="text/javascript">
function loadCSSOnDemand(filename) //принимаем имя нужного файла CSS (filename) в качестве входного аргумента функции
{
var newCSS = document.createElement("link"); //создаем новый объект типа link
newCSS.setAttribute("rel", "stylesheet"); //присваиваем ему атрибут css-файла
newCSS.setAttribute("type", "text/css"); //присваиваем ему атрибут css-файла
newCSS.setAttribute("href", filename); //присваиваем ему атрибут источника - наш файл filename
document.getElementsByTagName("head")[0].appendChild(newCSS); //присоединяем скрипт к хедеру страницы
}
</script>


Фактически, задача выполнена! Теперь достаточно "повесить" вызов нашей новой функции на событие onclick кнопок или ссылок, передав в качестве параметра имя CSS-файла, который надо подгрузить:

Код:

HTML

<a href="javascript:void(0);" onclick="loadCSSOnDemand('mycss-1.css')" title="Синий">
Синий
</a>
<a href="javascript:void(0);" onclick="loadCSSOnDemand('mycss-2.css')" title="Зеленый">
Зеленый
</a>
<a href="javascript:void(0);" onclick="loadCSSOnDemand('mycss.css')" title="По умолчанию">
По умолчанию
</a>


Теперь при нажатии на ссылку "Синий" или "Зеленый" нужный CSS - файл будет "на лету" загружен в страницу и применен, наша таблица мгновенно изменит цвет фона! Если же посетитель на ссылку не нажмет - новые CSS не будут загружены никогда!
Третья ссылка в нашем примере загружает первоначальный CSS для того, чтобы была возможность вернуться к первоначальной цветовой гамме.

Остается только добавить, что возможности этого метода, разумеется, не ограничены только изменением цветовой гаммы - вы можете "прописать" в новых CSS - файлах любые изменения (изменить фоновые картинки, цвета и размер бордюров, изображения и т.д. и т.п.) - все эти изменения будут автоматически применены к странице при клике по ссылкам!

Пробуйте, экспериментируйте, придумывайте!

Важное замечание:

Очевидно, что сделанные таким методом изменения стиля страницы сохраняться только в пределах текущего просмотра. Если посетитель сменит страницу или даже обновит эту же страницу - стиль вернется к первоначальному виду.

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

Такой механизм можно создать.

Но это - тема уже совсем другой статьи!
adeptus
Администрация
Lorem Ipsum...
Администратор
Постов: 819

Пользователь в оффлайне  Кликните здесь, чтобы посмотреть профиль этого пользователя
Пол: Мужскойadeptus62ATDadeptusСтрана, город: РоссияДата рождения: 1962-12-31
Зарегистрирован Зарегистрирован  
 
Последнее редактирование: 23.07.2008 17:59 Редактировал adeptus.
 
 
Для добавления сообщений Вы должны зарегистрироваться или авторизоваться  
#1450 
RE: CSS OnDemand: HowTo для начинающих 5 мес., 2 нед. назад Репутация: 0  
Класс
FrosTPK
V.I.P.
Юниор
Постов: 5

Пользователь в оффлайне  Кликните здесь, чтобы посмотреть профиль этого пользователя
Пол: Мужской
Зарегистрирован Зарегистрирован  
 
Для добавления сообщений Вы должны зарегистрироваться или авторизоваться  
#1452 
RE: CSS OnDemand: HowTo для начинающих 5 мес., 2 нед. назад Репутация: 0  
Все замечательно. Мне только одно не понятно - почему местом для этой статьи был выбран форум, а не joomla или там wiki? Ведь так не удобно искать статью. Форум, по-моему, нужен для обсуждения каких то вопросов, а статьи должны размещаться в ином месте.
nanosoft
Юниор
Постов: 2

Пользователь в оффлайне  Кликните здесь, чтобы посмотреть профиль этого пользователя
Зарегистрирован Зарегистрирован  
 
Для добавления сообщений Вы должны зарегистрироваться или авторизоваться  
#1453 
RE: CSS OnDemand: HowTo для начинающих 5 мес., 2 нед. назад Репутация: 49  
nanosoft писал(а):
Все замечательно. Мне только одно не понятно - почему местом для этой статьи был выбран форум, а не joomla или там wiki? Ведь так не удобно искать статью. Форум, по-моему, нужен для обсуждения каких то вопросов, а статьи должны размещаться в ином месте.
А мне и тут нравится...
А вообще-то, мои статьи дублируются и на форуме Русского сообщества Joomla.
adeptus
Администрация
Lorem Ipsum...
Администратор
Постов: 819

Пользователь в оффлайне  Кликните здесь, чтобы посмотреть профиль этого пользователя
Пол: Мужскойadeptus62ATDadeptusСтрана, город: РоссияДата рождения: 1962-12-31
Зарегистрирован Зарегистрирован  
 
 
Для добавления сообщений Вы должны зарегистрироваться или авторизоваться  
#1455 
RE: CSS OnDemand: HowTo для начинающих 5 мес., 2 нед. назад Репутация: 0  
=) Возможно было бы очень классно создать у вас тут на тестовом полигоне раздел "Статьи" в меню и туда выкладывать

^^^ как вариант.
zOMG
Заказчики
Начинающий
Постов: 38

Пользователь в оффлайне  Кликните здесь, чтобы посмотреть профиль этого пользователя
Пол: МужскойСтрана, город: Россия, МоскваДата рождения: 1990-03-30
Зарегистрирован Зарегистрирован  
 
Мои работы: 1, 2, 3, 4.
 
Для добавления сообщений Вы должны зарегистрироваться или авторизоваться  
#1456 
RE: CSS OnDemand: HowTo для начинающих 5 мес., 2 нед. назад Репутация: 0  
adeptus писал(а):
nanosoft писал(а):
А мне и тут нравится...
А вообще-то, мои статьи дублируются и на форуме Русского сообщества Joomla.

То что статьи дублируются это я знаю, но там тоже все выложено на форуме, что не есть гуд..
nanosoft
Юниор
Постов: 2

Пользователь в оффлайне  Кликните здесь, чтобы посмотреть профиль этого пользователя
Зарегистрирован Зарегистрирован  
 
Последнее редактирование: 24.07.2008 22:30 Редактировал nanosoft.
 
Для добавления сообщений Вы должны зарегистрироваться или авторизоваться  
Вверх
  • [Страница 1 из 2]  12
Фотоальбом

Форум FireBoard. Русская редакция: Adeptus v.2.1


buy zyban online tadalafil viagra without rx ambien no rx cialis low price discount levitra cialis from canada phentermine purchase cialis mastercard levitra senza ricetta buy testosterone viagra low price soft viagra order xanax sildenafil pharmacy sildenafil india buy percocet cialis prescription viagra for sale alprazolam no prescription tramadol cod cheap tadalafil sildenafil soft tabs vente levitra comprare viagra india viagra generic viagra cost cialis tablets cheap doxycycline hydrocodone 500 mg cheap acomplia viagra supplies order hydrocodone ultram no prescription viagra by mail valium 10 mg cialis no prescription cialis generique cialis by mail cialis uk buy wellbutrin kot7 buy phentermine levitra cost vendo levitra valium tablets cialis 10mg acquisto cialis buy prozac buy cialis uk buy viagra canada purchase cialis levitra without prescription cialis purchase generic viagra sale cialis pricing levitra canada compra viagra compra cialis levitra sales ativan no prescription levitra for sale cipro no prescription levitra tablets cialis canada xanax prescription online viagra delivery tramadol prices levitra online purchase buy ambien discount viagra cialis pharmacy cheap phentermine cheap adipex cheap carisoprodol viagra generique achat kamagra compra cialis soma online buy alprazolam sildenafil 20 mg zyban no prescription xanax otc sildenafil price discount phentermine sildenafil tablets valium without a prescription cialis generique buy ultram commande cialis sildenafil sales cialis st achat cialis viagra 100 mg hydrocodone prescriptions buy norco indian cialis commande cialis tadalafil cheap viagra made in india vente cialis cialis without prescription viagra cheapest cheap ultram buy zolpidem buy clomid cialis soft tabs buy ephedrine viagra overnight delivery buy ativan buy valtrex buy tadalafil levitra best price cialis sans ordonnance cialis pills cialis costs sildenafil pills cheapest viagra commande viagra otc valium cialis 10 mg levitra lowest price soft cialis buy oxycontin cialis in india kamagra tablets generic soft viagra cialis sale achat levitra buy paxil viagra cheap phentermine 15mg viagra fast delivery viagra mail order doxycycline no prescription acheter tadalafil buy oxycodone amoxicillin no prescription tadalafil online tadalafil india viagra generico free viagra diazepam no prescription phentermine 30mg cialis best prices tadalafil prices levitra generique viagra india generic ambien soma bars achat kamagra hcl phentermine comprare cialis generic sildenafil kamagra online buy viagra no prescription sildenafil without prescription levitra generico hydrocodone discount cialis wholesale achat sildenafil buy viagra vendo cialis cheap celebrex viagra generique valium no rx cialis sans ordonnance valium blue tadalafil 10mg cialis overnight delivery vendita cialis buy sildenafil citrate viagra purchase cialis paypal buy meridia buy lamisil soma discount order levitra order cialis prescription cialis viagra capsules online viagra canada ambien overnight cheap amoxicillin buy lexapro buy fioricet cialis prices acquista levitra sildenafil 50 mg cialis suppliers viagra discount viagra in canada commande kamagra levitra online compro viagra viagra 25 mg commande viagra buy carisoprodol discount ambien cheap xenical viagra fedex viagra next day viagra en ligne achat sildenafil generic vardenafil levitra sans ordonnance achater levitra order viagra viagra over the counter vendo viagra achat viagra viagra generic brand viagra from india kot6 viagra generico viagra price cheapest cialis buy vicodin no prescription buy vicodin cheap buy hoodia buy kamagra viagra low cost kot levitra 10 mg cialis tab prescription viagra viagra prices levitra generique buy propecia purchase ambien kot4 buy doxycycline cialis 100 mg blue viagra sildenafil canada acquista levitra cialis buy blue xanax hydrocodone no rx cialis 40 mg viagra generic names buy zyrtec cheap xanax indian viagra 99 phentermine buy valium buy diazepam