14 августа 2010
Иногда бывает необходимо загрузить стилевой файл CSS из JavaScript. (Например, если head-часть HTML уже выведена, а нарушать стандарт и подключать CSS и в body нежелательно.)
Делается это следующим образом: создается элемент link и добавляется как дочерний элемент к тегу head с помощью функций работы с DOM-моделью. Код для такого действия имеет примерно такой вид:
var tag_css = document.createElement('link');
tag_css.rel = 'stylesheet';
tag_css.href = 'http://test.ru/styles.css'; // здесь указывается URL стилевого файла
tag_css.type = 'text/css';
var tag_head = document.getElementsByTagName('head');
tag_head[0].appendChild(tag_css);
Если используется библиотека jQuery, то можно добавить тег несколько иначе:
$("head").append("<link>");
css = $("head").children(":last");
css.attr({
rel: "stylesheet",
type: "text/css",
href: "http://test.ru/styles.css" //здесь указывается URL стилевого файла
});
Рубрика: CSS, JavaScript, AJAX | Оставьте комментарий!
30 апреля 2010
Как правило, для проигрывания видеороликов и музыкальных MP3 на сайте размещается специальный Flash-плеер. Зачастую готовые флеш-плееры не подходят к дизайну сайта, а их доработка их требует хорошего знания Flash.
Однако есть и другое решение: сайт UPPOD.RU. Это сайт-конструктор, на котором можно за несколько минут сделать плеер для видео, MP3 или фотографий с размерами и цветовой гаммой, подходящей под дизайн сайта. Кроме того, для плеера можно настроить список воспроизводимых файлов (причем он хранится в обычном текстовом формате, так что можно генерировать его автоматически “на лету” скриптами), задать наличие тех или иных кнопок управления и некоторых других возможностей плеера.
Приятной особенностью является и то, что плеер не требует обязательного показа своего логотипа или ссылки.
Метки: mp3, видео
Рубрика: Разное | Комментариев: 1
27 декабря 2009
Иногда бывает нужно сделать два блока, у которых будут стыковаться между собой рамки. (Типичная ситуация — заголовок, у которого рамка имеет один цвет, а текст под ним обрамлен рамкой другого цвета, и при этом вся конструкция должна восприниматься как едиое целое). Типичный подход в такой ситуации — использование трех тегов div примерно такого вида:
<div>
<h1 style="border: #ccc 1px solid">Заголовок</h1>
<div style="border: #888 1px solid; border-top: 0">Текст</div>
</div>
Однако имеется более элегантное решение, позволяющее уменьшить число DOM-элементов:
<div style="border: #888 1px solid">
<h1 style="border: #ccc 1px solid; margin: -1px">Заголовок</h1>
Текст
</div>
Кроме того, такое решение удобно и тем, что не требует дублировать общие свойства CSS (например, выравнивание) для двух различных селекторов (внутреннего div и h1 в первом примере), их можно задавать только для внешнего divа.
Метки: верстка
Рубрика: CSS | Комментариев: 7
24 декабря 2009
Иногда возникает задача хранить какие-то свойства большого количества разнородных объектов, которые никогда не будут участвовать в условиях выборки или сортировке, но которые могут добавляться/исчезать по мере развития сайта. Например, к таким свойствам относятся задаваемые поля профиля пользователя на форуме, настройки сайта в целом, какие-то опции отдельных страниц этого сайта.
В такой ситуации можно использовать универсальную таблиц для всех настроек, которая будет иметь следющую структуру:
type : enum(’user’,'page’,’site’) (признак, кому принадлежит данная настройка: сайту, пользователю или странице, вместо типа enum можно использовать tinyint, чтобы не изменять структуру таблицы, если появятся новые типы объектов),
id : int (идентификатор пользователя или страницы)
name: varchar(24) (название опции)
value: varchar(255) (значение опции).
Далее »
Рубрика: Разное | Комментариев: 1
13 октября 2009
Если предполагается, что сайт будут заполнять контентом неподготовленные пользователи (в смысле, не знающие HTML, CSS, да и вообще плохо разбирающиеся в компьютере), то возможны ситуации, когда они загрузят слишком большую по размеру фотографию, которая приведет к тому, что сайт “разъедется”. Конечно, правильным решением является обработка картинки на стороне сервера, но не всегда есть такая возможность.
В этом случае при верстке имеет смысл принудительно ограничить ширину картинки с помощью CSS:
.content img { max-width: 700px }
где .content — это класс слоя, в котором отображается основное содержимое страницы.
Конечно, качество картинки при этом пострадает, но все же неудобств пользователю будет меньше, чем при растянутом сайте.
Метки: CSS, юзабилити
Рубрика: Разное | Комментариев: 2
17 июня 2009
Закругленные или фигурные углы блока в настоящее время — один из самых распространенных элементов дизайна. Решений существует множество и на CSS, и на JavaScript, но большая их часть либо требует большого количества лишних пустых тегов и несемантичной верстки, либо позволяет закруглять углы только блоков с фиксированной высотой или с однородным фоном самого блока и страницы под ним.
Однако есть универсальное решение этой проблемы, которое может применяться в решениях любой сложности. Выглядит оно следующим образом: над блоком с контентом, которому нужны углы, добавляем два блока, высота которых равна радиусу скругления, с горизонтальными полями (margin), также равными отступу. Фон этого блока по цвету совпадает с фоном блока контента. Внутри этого блока помещаем еще два блока, у первого из которых отрицательным является левое поле, у второго — правое (величина отступа опять же равна радиусу скругленного угла). Для этих углов задаем фоновые картинки и отменяем фоновый цвет.
Далее идет блок с контентом, после которого вставляется еще один блок, полностью аналогичный верхнему, но углы скруглены вниз. Далее »
Метки: скругленные углы
Рубрика: CSS, HTML | Комментариев: 1
10 апреля 2009
По умолчанию Apache настроен так, что кеширование запрещено даже для статического контента. Это означает, что при каждом обращении к сайту заново подгружаются все файлы CSS, JavaScript и картинки, что явно не способствует быстродействию.
Чтобы этого избежать, следует настроить выдачу заголовков Expires (время устаревания контента), ETag (строка, которая изменяется в случае изменения файла) и Cache Control (управление кешированием).
В Apache 2.x это делается с помощью следующих директив:
Далее »
Рубрика: HTTP, Администрирование | Комментариев: 1
4 апреля 2009
Иногда требуется выполнить какую-либо обработку HTML-кода (например, расставить графические смайлики, выполнить типографирование, убрать лишние пробелы). До тех пор, пока в этом коде нет тегов <pre> и <code>, все очень просто решается обычными регулярными выражениями. Однако при наличии этих тегов возникает необходимость сохранить текст внутри них без каких-либо изменений.
В этом случае подойдет следующее решение: запомнить и заменить содержимое этих тегов специальными последовательностями, у которых очень мала вероятность встретиться в тексте, провести обработку оставшейся части, после чего провести обратную замену.
Последовательность, на которую производится замена, должна выбираться так, чтобы при обработке она никаким образом не была изменена.
Пример такого кода:
Далее »
Метки: обработка текста, регулярные выражения
Рубрика: PHP | Комментариев: 1
17 марта 2009
Webo.In — еще один сайт для измерения времени загрузки. Примечателен тем, что кроме измерения и детального расписывания всех составляющих времени загрузки дает целый набор рекомендаций по повышению скорости загрузки сайта (включая как изменение самой Web-страницы, например, объединение/сжатие CSS, так и настройки Apache). Также содержит множество полезных статей по теме ускорения загрузки сайта.
DURIS — сайт, позволяющий сжимать CSS и применять в них технологию Data In URIs, с помощью которой можно помещать картинки в непосредственно в текст CSS, не получая их с сервера в виде отдельных файлов.
Метки: время загрузки, оптимизация
Рубрика: HTTP | Комментариев: 4
12 марта 2009
При тестировании скриптов иногда возникает необходимость тестирования и их почтовых функций. Из-за ограничений, имеющихся в PHP, наиболее простым решением оказывается установка локального почтового сервера (к тому же в ситуациях, когда нужно протестировать массовую рассылку, это избавляет от необходимости регистрировать десятки ящиков на внешних сервисах). Одним из наиболее удачных решений (для OS Windows) с точки зрения соотношения функциональность/удобство использования/легковесность является hMailServer, который является как SMTP, так и POP3/IMAP-сервером.
Метки: smtp, почта
Рубрика: Полезный софт | Комментариев: 4