Profruit banner

Умен звънец в openHAB

16 декември 2023

Телефонът е винаги с мен и сега, където и да се намирам получавам известие от openHAB, че някой е позвънил и чака пред вратата. А ако ме няма вкъщи става ясно часа и датата на последното позвъняване.

Tasmota Multipress

30 септември 2023

Идеята е Sonoff Touch T1 US 2 в салона, да управлява освен своето осветление и това в кухнята, а още вентилатора.

DIY 12V 1A WiFi Router UPS

22 април 2023

При поредно прекъсване на захранването вкъщи, батерията на нoтбука и двата UPS автоматично превключват на аварийно захранване и едновременно полита съобщение за конфуза

Zigbee2MQTT клониране

21 януари 2023

... как да клонираме съществуваща настройка на Zigbee2MQTT без да се налага последвало интервю на zigbee-устройствата.

LD2410 - бюджетен датчик присъствие в openHAB

11 февруари 2023

Цената на HLK-LD2410 зададе име на поредната тема в моя блог. С негова помощ се постига "народен" датчик присъствие в домашната автоматизация. . ...


Ако имате зад гърба си създаден от вас сайт, то навярно сте се сблъсквали с проблеми като избор на шрифт, височина на HTML-елемент и подобни. Да допуснем, че е настъпила потребност, да измените цвят или промените  шрифт от друго семейство. В този случай ви се налага да редактирате отново всяка статична страница отделно.

Каскадните стилови таблици (CSS) значително ще упростят подобни задачи. Използвайки една стилова таблица вие можете да измените облика на своя сайт изцяло от раз.

Съществува огромно количество редактори за създаване на уеб-страници. Те биват визуални и текстови. Визуалните редактори не изискват от вас знания по html, css и други уеб-технологии. Остава единствено да ги включите и да излеете в тях наличното съдържание, формиращо страницата. Именно по това ги наричат още WYSIWYG-редактори. Абревиатурата WYSIWYG се разшифрова като What You See Is What You Get - каквото виждаш, това получаваш. Първото усещане с подобен род програми е, че са идеални за целта, но за тях професионалистът еднозначно отговаря:

  • Готовите уеб-страници, генерирани от WYSIWYG съдържат излишно, даже пренапълнено количество HTML-елементи.
  • Подобен код намалява прилекателността за индексиращите системи и търсачки.
  • Не всички интернет ползватели за преглед на уеб-страници ползват Internet Explorer, от което страда кросбраузерността, а това не е по силите на визуалния режим на редактора.
  • Ако пожелаете след време, да увеличите функционалността на вашата страница за сметка на допълнителни скриптове ще ви се наложи да се обърнете към кода.

Своите първи html-страницы създадох в обичайния текстови редактор Notepad. Разбира се допусках много синтактически и пунктуационни грешки в кода. В последствие разбрах за WYSIWYG-редакторите и фаворитен ми стана WYSIWYG Web Builder. Това временно развърза ръцете ми и обхождаше моето незнание, но трупаше нови грешки. Нещата се забатачваха допълнително от това, че браузерите не съобщават за наличните грешки, а се опитват да ги заобиколят според заложените алгоритми. В резултат, уеб-страниците се извеждаха на екрана не според моя замисъл. По тази причина се опитах да разбера как работи WYSIWYG-редактора.

WYSIWYG-редакторът е настроен под един браузър, в повечето случай Internet Explorer. Генерацията на страницата пропуска Reset файл, което е съществено за кросбраузерността. Приема елементи HTML и Body на 100%. Задава един общ блок с позициониране relative, който се явява родителски за останалите елементи. Останалите елементи пък автоматично стават дъщерни с абсолютно позициониране. В ход се пуска z-index и се почва едно тъпчене на код. Форматирането е най-зле от цялата работа. То е преплетено от възможностите на HTML и на вложен стил. От това разбира се страда читаемостта на кода. При прочит нещата отблъскват, защото изглеждат километрични и претъпкани.  Друг съществене недостатък е непоследователността на елементите. WYSIWYG-редактора следва вашите действия и в един момент настъпва каша. При проследяване на кода се виждат елементи от футера, заели ред преди тези от шапката, защото е напълно възможно да сте работили по оформянето на шапката, после да се стуснали към дъното и да сте върнали отново към шапката.

Как да направя сайт с CSS?

howtomakesitewithcss

Този въпрос има три отговора. Първият се заключва в нужните знания по HTML и CSS.

За втория е нужен специализиран редактор. Изборът пада на Notepad++ или PSPad editor. Това са безплатни редактори за уеб-страници под Windows. Работа с тях има определени преимущества, като подсветка на кода, номериране, енкодиране. Интерфейсът на PSPad editor силно наподобява този на WYSIWYG-редактор. Към този арсенал добавям AkelPad и причината е, че този редактор безпроблемно конвертира страница от windows-1251 към UTF-8.

Дойде ред и на третия отговор, а той е главен виновник на темата. Топлата вода е открита не от мен, велосипеда тоже, значи ще копираме умните. А те ползват CSS-генератори, за да си спестят труда, при това on-line.

Скелета на сайта ще формираме на http://csstemplater.com/ стъпка по стъпка.
Генераторът е интуитивен руски ресурс на шаблони, по-точно макети, защото крайния продукт е полуфабрикат, на когото  в последствие ще придадем завършен вид.
csstemplater
Моят сайт е визитка. Той е статичен от няколко страници с традиционното меню: Дом, Относно, За мен, Предложения, Контактна форма.

Приемам стандартен изглед. Шапка, странична дясна колона, съдържание, футер.
Първа стъпка е избор на DOCTYPE. Аз се спирам на XHTML 1.0 Transitional.

Следващ избор е тип на занулителя. Това е нещо като късо съединение, така го наричам аз, защото дава на късо заложените таблици в всеки един браузър. По този начин всеки един браузър посетил нашата страна и прочел тези правила започва да се съобразява с тях. Избирам тези от Yahoo. По тази въпрос можете да намерите в нета много становища и варианти.

Предпочитам фиксиран размер пред "гумен" и това е трета стъпка. На снимката не се вижда, но в този пунк задавам ширина на сайта 1000px (извинявам се за пропуска).

Според художествения замисъл, шапката е 515рх и това въвеждам като значение.

Избирам един сайдбар в дясно с ширина 285рх.

Последно избирам футер, когото искам да е притиснат в долната част на монитора с височина 285рх. Остава да натиснете синьото бутонче, което в превод е "получи адрес". На отведения адрес ще получите архив на бъдещия ви макет. Той съдържа HTML-структурата на сайта и съпътсващите го каскадни стилови таблици.

Всеки един може да премине на посочения адрес и да пробва по свой вкус, а до тогава нека надникнем отблизо как работи всичко това. Първо поглеждаме HTML-кода.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
 <title></title>
 <meta name="title" content="" />
 <meta name="keywords" content="" />
 <meta name="description" content="" />
 <link rel="stylesheet" href="style.css" type="text/css" media="screen, projection" />
</head>
<body>
<div id="wrapper">
 <div id="header">
  <strong>Header:</strong> Lorem ipsum dolor sit amet, 
 </div><!-- #header-->
 <div id="middle">
  <div id="container">
   <div id="content">
    <strong>Content:</strong> Lorem ipsum dolor sit amet, 
    </div><!-- #content-->
  </div><!-- #container-->
  <div class="sidebar" id="sideRight">
   <strong>Right Sidebar:</strong> Lorem ipsum dolor sit amet, 
   </div><!-- .sidebar#sideRight -->
 </div><!-- #middle-->
</div><!-- #wrapper -->
<div id="footer">
 <strong>Footer:</strong> Lorem ipsum dolor sit amet, 
 </div><!-- #footer -->
</body>
</html>

Работата ни започва с доработки. Моят сайт е насочен към рускоезично общество, затова добавям в 2-ри ред език.
<html xmlns="http://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru">

Шаблонът идва с зададена кодировка utf-8, а това означава, че текстове на кирилица ще трябва да конвертираме с AkelPad при изключен BOM. Надолу следва стандартна разкройка с контейнери.

Да надникнем в файла с CSS - style.css. Той е далеч по-интригуващ и загадъчен, защото той върши голямата работа.

body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, form, fieldset, input, textarea, p, blockquote, th, td {
 margin: 0;
 padding: 0;
}
table {
 border-collapse: collapse;
 border-spacing: 0;
}
fieldset, img {
 border: 0;
}
address, caption, cite, code, dfn, em, strong, th, var {
 font-style: normal;
 font-weight: normal;
}
ol, ul {
 list-style: none;
}
caption, th {
 text-align: left;
}
h1, h2, h3, h4, h5, h6 {
 font-size: 100%;
 font-weight: normal;
}
q:before, q:after {
 content: '';
}
abbr, acronym {
 border: 0;
}
html {
 height: 100%;
}
body {
 font: 12px/18px Arial, Tahoma, Verdana, sans-serif;
 width: 100%;
 height: 100%;
}
a {
 color: blue;
 outline: none;
 text-decoration: underline;
}
a:hover {
 text-decoration: none;
}
p {
 margin: 0 0 18px
}
img {
 border: none;
}
input {
 vertical-align: middle;
}
#wrapper {
 width: 1000px;
 margin: 0 auto;
 min-height: 100%;
 height: auto !important;
 height: 100%;
}

/* Header
----------------------------------------*/
#header {
 height: 515px;
 background: #FFE680;
}

/* Middle
----------------------------------------*/
#middle {
 width: 100%;
 padding: 0 0 285px;
 height: 1%;
 position: relative;
}
#middle:after {
 content: '.';
 display: block;
 clear: both;
 visibility: hidden;
 height: 0;
}
#container {
 width: 100%;
 float: left;
 overflow: hidden;
}
#content {
 padding: 0 280px 0 0;
}

/* Sidebar Right
----------------------------------------*/
#sideRight {
 float: left;
 margin-right: -3px;
 width: 260px;
 margin-left: -260px;
 position: relative;
 background: #FFACAA;
}

/* Footer
----------------------------------------*/
#footer {
 width: 1000px;
 margin: -285px auto 0;
 height: 285px;
 background: #BFF08E;
}

Първата работа е да отрежем на ламята главата. Този CSS - файл тепърва ще расте по обем и ще става все по-голям, а това значи по труден за четене/ориентиране. За целта всичко от 01 до 56 ред копираме и изрязваме в нов css-файл под име reset.css. На практика след това действие разполагаме с два файла - style.css и reset.css. Към тях обаче ще се присъедини трети. Той ще се яви главен за сайта, нещо като регулировчик. Да го наречем global.css и изглежда така.

@import url("./reset.css");
@import url("./style.css");

В глобалния файл може да добавяте произволно количество адреси към подобни файлове, според вашите нужди. За по-голяма пригледност тези файлове се намират в обща папка под име style. При мен те са 5 на брой и в другите два съм отделил стила на галерията, и стила на контактна форма. В наличния .htaccess-файл забранявам достъпа до стиловете и прегледа на индекса, като пренасочвам любопитните на главната страница.
style
Разбира се нужна е промяна в HTML-файла и там указваме адреса на глобалния файл на стиловете по следния начин:

<link rel="stylesheet" href="./style/global.css" type="text/css" media="screen, projection" />

Какво става на практика?

За да разберете принципа на тази технология сложете пред очите си html и css файлове.

Веднага след тагове </head> <body> виждаме контейнер wrapper, който се затваря преди контейнер footer. Свойствата на wrapper са зададени в css. Зададена е ширина от 1000рх, това което исках от on-line генератора, а margin: 0 auto; ще фиксира сайта по средата спрямо ос Х и ще "залепи" двата края по рамката на браузъра по ос Y.

height: auto !important; height: 100%; ще се грижат винаги да са изпълнява условието по ос Y. На свой ред контейнер wrapper съдържа контейнер header и контейнер middle.

Относно header няма нищо интересно. Просто наследява ширината на wrapper и според първоначалното условие е висок 515px. Естествено генерирания фонов цвят е само за първоначална ориентация.

Какво става в middle? Контейнер middle съдържа контейнер container, а той на свой ред контейнер content. Тук именно в content ще изливаме нашето главно съдържание с последвали подконтейнери. Но внимание, в middle се намира и контейнер с клас sidebar и идентификатор sideRight. В този контейнер ще добавяме разните джаджи, гаджети и всичко, което е замислено да бъде в тази колона. Внимателен оглед показва, че контейнер sideRight е плаващ (float) с отстъп в ляво -260px. Този минус кара sideRight да налети върху content и това се случва. Нещата са нормални до тук, защото на content се отрежда поле в ляво (padding: 0 280px 0 0;) от цели 280px. На практика sideRight с своите 260рх се разполага върху това поле от 280pх. Разликата от 20px ще формира граница между двата блока на сайта.

Преминаваме нататък и тук следва не по-малка изненада с контейнер footer.
Според условието за wrapper (гледаме css) min-height: 100% кара нашия сайт да се разпъне и залепи по рамката на браузъра, респективно контейнер wrapper. Да но под wrapper започва footer(гледаме html). Би следвало да очакваме поява на плъзгач за вертикално скролиране или footer да премине зад пределите на видимото. Как може да се избегне това и да очакваме очакваното? Поглеждаме отново файл css и намираме отговор. В свойствата на footer виждаме зададена ширина width: 1000px, която да пасне на общата такава, а още зададеното по условие височина. Интересен е margin: -285px auto 0. Този минус от -285px кара footer да налети нагоре по wrapper и това се случва, auto ще го държи по средата спрямо ос X, a 0-та ще го залепи за дъното на прозореца. ОК, отлично. Нататък отново преглеждаме кода в стиловете и виждаме, че контейнер middle образува поле в долната си част от 285px. Позната история с сайдбара. Именно на това заделено поле ще се намести footer.

Нагледна схема на шаблона.
Схема на шаблона
Този начин ни един WYSIWYG-редактор не може да построи и най-вече с този старт започваме да градим нашия сайт. А от друга страна ше бъдем сигурни, че всички съвременни браузери ще показват еднакво нашия сайт.






до нови срещи   ^.^

Публикувано от Profruit за Profruit на 04 декември 2010 23:33 

|

2 Response to "Направа на сайт чрез CSS"

  1. зайче Said,

    Поздрав с арабски мотиви и някой подобни неща, които може да ти харесат - http://dox.bg/files/dw?a=a87af0b8c1
    Благодаря ти за помощта, още веднъж.
    лека

     

  2. зайче Said,

    Знаят таратанци. Не се въздържах ^^`

     

Публикуване на коментар

Този блог е реинкарнация на първите ми опити за споделяне в нета. На времето започнах с къси разкази на преживяното. После се обезсмисли и превърнах блога си в системно радио. Пиша единствено неща, които карат душата ми да живее: openHAB, Ubuntu, Споделено и т.н. Това е моето системно радио, разбирате ли? Моята вълна и вие сте на нея сега.

Архив на блога