OpenStreetBugs — лёгкий способ сообщить об ошибке в OpenStreetMap

OpenStreetBugs — лёгкий способ сообщить об ошибке в OpenStreetMap

Вы, конечно, знаете о свободной карте OpenStreetMap. Это настоящая народная карта, создаваемая такими же людьми как и вы! Это такой же opensource-проект как Linux и как Википедия. Конечно же, как и в других картах, в OpenStreetMap имеются ошибки, но в отличие от тех же Яндекс.Карт, где ошибки не исправляются годами из-за сложной бюрократической процедуры (я уже не говорю о намеренных ошибках), в OpenStreetMap всё гораздо проще и лучше для всех нас...
Подробнее..

CloudMade Navigation поддерживает ограничения манёвров

CloudMade Navigation поддерживает ограничения манёвров

Не так давно CloudMade выделил несколько приоритетных направлений, среди которых оказалась и навигация. Решено было создать специальный проект Navi Studio, который объединял бы в себе несколько более мелких сервисов и позволял пользоваться ими, для создания полноценного навигационного программного обеспечения. В Navi Studio вошли: Работа закипела и уже появилось несколько приложений использующих данный проект. Но полноценной навигации без соблюдения правил ПДД не существует, а потому данному вопросу было также уделено не мало времени...
Подробнее..

Удали себя из интернет-социума — «Web 2.0 Suicide Machine»

Удали себя из интернет-социума — «Web 2.0 Suicide Machine»

Недавно наткнулся в сети на один занимательный интернет-сервис, именующийся Web 2.0 Suicide machine . Предназначен он для того, чтобы позволить людям, обремененным «социальной жизнью в интернете», в пару кликов удалить свои аккаунты на Facebook (в данный момент сервис блокирован администрацией по IP), Twitter, Linkedin и Myspace. В общем-то судя по количеству положительных отзывов и «успешных очищений» — пипл хавает зависимые от социальных сетей успешно пользуются сервисом и довольны...
Подробнее..



Препроцессинг CSS на клиенте

Заметки - Фишки CSS

 

Представьте, что вы пишете блогохостинг и хотите позволить авторам блогов менять свой дизайн. Картиночки там вставлять, цвета менять, пропорции регулировать… Представили? Если хорошо представили, то уже поняли, что без констант и формул в CSS тут не обойтись.

При блуждании по блогам не хотелось бы грузить все стили заново, что неизбежно при серверном вычислении значений, а хотелось бы грузить лишь минимальную разницу — так называемый скин.

Итого, нам нужно грузить в дополнение к данным страницы: скин с константами и стили с формулами. Только две клиентские технологии позволяют сделать это: JS и XSLT. Однако первую очень любят отключать, а вторую отключать просто нет смысла. Поэтому вынесем CSS в XSLT контейнер, а заодно и не забудем про технологию XHTML-инклудов.

Напишем XHTML-ку и подключим к ней скин:

<!DOCTYPE html>
<?xml-stylesheet type= text/xsl href= skin.xsl?user:tenshi/rev:123 ?>
<html>
<head>
<title>Демонстрация препроцессинга CSS с помощью XSL</title>
</head>
<body>
<h1>Заголовок раздела</h1>
<h2>Дополнительный текст описывающий этот раздел</h2>
<div src= index2.xml srctype= text/xml >
<a href= index2.xml >Ссылка на подключаемый файл</a>
</div>
</body>
</html>


Напишем скин и подключим к нему стили:

<t:stylesheet version= 1.0 xmlns:t= http://www.w3.org/1999/XSL/Transform >

<t:variable name= color.main select= '#eee' />
<t:variable name= color.add select= '#369' />

<t:variable name= size.border select= 16 />
<t:variable name= size.decor select= 4 />
<t:variable name= size.font select= 16 />

<t:include href= styles.xsl?rev:123 />

</t:stylesheet>


И последний штрих — вычислим дополнительные константы, подставим их в стили и специальным шаблоном впрыснем их в результирующий XHTML:

<t:stylesheet id= t:stylesheet version= 1.0 xmlns:t= http://www.w3.org/1999/XSL/Transform >

<t:output method= html doctype-public= -//W3C//DTD XHTML 2.0//EN />

<t:variable name= size.padding select= $size.border * 2 />
<t:variable name= size.font.header select= $size.font * 2 />

<t:variable name= mixin.header >
margin: 0;
text-align: center;
text-overflow: ellipsis;
overflow: hidden;
line-height: 1em;
</t:variable>

<t:template match= head mode= content >
<t:apply-templates select= * />
<style>/*<link type= text/css rel= stylesheet href= data:text/css,*/{{}}

html {{
background: {$color.main};
margin: 0;
padding: {$size.padding}pt;
}}

h1 {{
{$mixin.header}
border: {$size.border}pt solid {$color.add};
padding: {$size.padding}pt;
font-size: {$size.font.header}pt;
color: {$color.add};
}}

h2 {{
{$mixin.header}
font-size: {$size.font}pt;
font-style: italic;
color: {$color.main};
background: {$color.add};
padding: 0 {$size.border}pt {$size.border+$size.decor}pt;
}}

p {{
border-top: {$size.decor}pt dashed {$color.main};
font-size: {$size.font}pt;
color: {$color.main};
background: {$color.add};
margin: -{$size.decor}pt 0 0;
padding: {$size.padding}pt;
text-overflow: ellipsis;
overflow: hidden;
}}

/* />*/</style>
<script>
if( /webkit/i.test( navigator.userAgent ) ) new function(){
var styles= document.getElementsByTagName( 'style' )
var style= styles[ styles.length - 1 ]
style.innerText= unescape( style.innerText )
}
</script>
</t:template>

<t:template match= @* | node() >
<t:copy>
<t:apply-templates select= @* />
<t:apply-templates select= . mode= content />
</t:copy>
</t:template>
<t:template match= processing-instruction() />

<t:template match= node() mode= content >
<t:apply-templates select=' node() ' />
</t:template>
<t:template match= *[ @src and contains( @srctype, 'xml' ) ] mode= content >
<t:apply-templates select=' document( @src )//body/node() ' />
</t:template>

</t:stylesheet>


Как видно мы по прежнему можем использовать возможности XHTML2 для вставки сторонних документов, а также применять довольно гламурный синтаксис для вставки в CSS констант, формул и примесей.

Совместимость: все попурярные настольные браузеры и часть продвинутых мобильных.

 

 


Читайте:


Добавить комментарий


Защитный код
Обновить

News image

Adobe представляет пакет LiveCycle Enterprise Suite 2

Компания Adobe Systems Incorporated представила пакет Adobe LiveCycle Enterprise Suite 2 (ES2) – новую версию программного обеспечения, с помощью ко...

News image

Adobe дает новые возможности для разработчиков смартфонов

Adobe Systems представила на выставке Mobile World Congress в Барселоне проекты, которые сделают технологии Adobe еще более доступными для мобильных...

News image

Oracle представила новую версию корпоративного сервера MySQL Enterpris

Oracle сегодня представила новую версию корпоративного сервера MySQL Enterprise. Данная версия популярной СУБД стала первым масштабным релизом, выпу...

News image

Native Client: одной ногой в офлайне

В понедельник в Google Code Blog вышел анонс нового эксперимента веб-гиганта. Технология Native Client призвана ускорить веб-приложения благодаря пр...

News image

Новый JDBC-драйвер для СУБД SQL Server уже доступен в виде предварител

Компания Microsoft сделала еще один шаг к обеспечению совместимости своей флагманской СУБД SQL Server с промышленными Java-приложениями, выпустив оз...

Топ технологий:

News image

Оздана новая система беспроводной связи - она в 10

Ученые из Национального тайваньского университета разработали новую систему беспроводной передачи данных, которая позволит передавать инф...

News image

Как взломали Twitter

В Интернетах, наряду с iPad, сканерами в аэропортах и войне между Google и Apple, уже второй день подряд активно обсуждается тема взлома и...