Дефинирайте с CSS външния вид на сензорната графична мрежа в IoT
В предишната статия от поредицата за как да направите графики на състоянието на сензори, свързани към интернет на нещата IoT обяснява начина използвайте уеб страница, разработена в HTML като структура за графики. Елементите на уеб страницата, които са сведени до минимум с помощта на обекти <div>
, не определиха директно външния му вид, вместо това се позоваха на информация за външния вид към стилов лист CSS, което ще бъде обяснено в тази част от поредицата.
В решението, което предлагам за създаване на графики на сензори, свързани към IoT, се използва документ CSS който се зарежда от документа HTML. Ако кодът HTML ще се генерира от приложение на сървъра, например в PHP, би било много лесно да се включи като част от кода, който дефинира уеб страницата, вместо да се зарежда от нея, което може да се оптимизира малко чрез запазване на повикване. Който и вариант да бъде избран, най-удобният метод включва редактирайте кода CSS в отделен документ, за да го управлявате по-удобно и да можете да го използвате повторно. В примера, разработен в урока от тази поредица от статии, му е дадено името estilo.css
.
По същия начин, Когато работите със сложни проекти, ще бъде препоръчително да използвате няколко отделни таблици със стилове в различни документи, както за да можете да използвате повторно конкретни функционалности, без да се налага да ги зареждате всеки път, така и за да редактирате кода по-лесно, като го разпространявате в различни документи според съответната логическа структура.
Стиловете CSS Те се опитват да опишат всички крайности на поведението и външния вид на уеб страница от няколко вида подходи, всички едновременно валидни, като същевременно се опитват да зачитат съвместимостта със спецификациите на предишната версия, доколкото е възможно. Това означава, че има много възможни решения, които решават едни и същи нужди. както и голям брой налични ресурси (свойства CSS). Поради дидактичния подход на статията и за да не се объркват новите потребители в CSS, само свойствата и структурите, необходими за крайната цел, който трябва да представя графично данни от сензори, свързани към Интернет на нещата. В същото време има и a малко въведение към CSS, каскадни стилови листове.
Форматиране на CSS свойства
El основен формат Състои се от име на свойство, знак за двоеточие, стойност на свойството и знак за точка и запетая. nombre:valor;
CSS ви позволява да използвате различни мерни единици в един и същи документ включително тези, свързани със структурата (измерването на съдържанието на даден елемент) като проценти, спрямо устройството, на което са представени, като например пиксела, или абсолютни като сантиметри. Единиците се изразяват след стойността съгласно следното кодиране със съкращение.
Код | единица |
% | контейнерен процент |
ch | спрямо ширината на числото нула |
cm | см |
em | спрямо основния тип на контейнера |
ex | спрямо височината на буквата х |
in | са инча |
mm | mm |
pc | picas (типографско измерване) |
pt | точки (типографски) |
px | пиксела |
вещно | спрямо основния тип на документа |
vh | спрямо 1% от височината на очите (мобилен екран) |
vmax | спрямо 1% от най-голямото измерение на изгледа (мобилен екран) |
vmin | спрямо 1% от най-малкия размер на изгледа (мобилен екран) |
vw | спрямо 1% от ширината на изгледа (мобилен екран) |
За приложението, което ще направим, е важно да вземем предвид поне три стилови единици. % за вземане на измервания спрямо размера на контейнера на артикул, пиксел за измервания според разделителната способност на екрана и милиметри (всъщност всяко абсолютно измерване) за създаване на отпечатани отчети.
Има и някои комплексни свойства, или съставни, които зависят от няколко стойности (като цвят, размер, стил...), за указване на стойността има две възможности в CSS: напишете в подходящия ред всички стойности, разделени с интервали или използвайте сумата от прости свойства, еквивалентни на сложните. Например, всичките четири полета на обект могат да бъдат посочени в едно свойство margin
или може да се зададе със свойства margin-top
, margin-right
, margin-bottom
y margin-left
. Между другото, този ред (по посока на часовниковата стрелка) е този, последван от описанията на стойностите, които "заобикалят" елемент като вътрешното (подложка) или външното поле, границата...
С това, което беше обяснено досега, сега можем да видим някои примери за свойства
1
2
3
4
|
margin:10px 20px 0 10px;
width:500px;
height:100%;
color:#FF0099;
|
В горния пример Цветът се определя с помощта на код от 6 шестнадесетични цифри, които представляват по двойки стойността на червения, зеления и синия компонент. Когато се случи, както в примера, че двете цифри са равни, това може да бъде съкратено като #F09
(което, между другото, отговаря на т. нар. "уеб безопасни цветове"). В окончателното предложение ще избегна използването на тези съкращения, за да унифицирам критериите и да го направя по-разбираемо. Можете също така да съкращавате стойностите на сложни свойства, като напр margin
в примера, когато всички стойности или противоположни двойки се повтарят. По същия начин на запазване на текст е възможно също така да се пропусне единицата, когато се указва свойство, когато стойността е нула, тъй като в този случай тя е без значение.
Някои стойности, освен че могат да бъдат изразени числено, имат име което прави кода по-четлив и ви позволява да ги запомните по-добре. Например, вместо шестнадесетичния цифров код на целта, #FFFFFF
(o #FFF
), може да се напише white
със същия резултат. По този начин черният цвят, #000000
(o #000
), може да се замени с black
.
също там стойностите се изразяват със специален код, име. Например, за да се посочи, че страничното поле се задава автоматично от браузъра (обикновено то ще съответства на централната функция), се използва специалната стойност auto
, което няма цифрово съответствие с никоя стойност.
за изразяват специален начин за използване на поредица от съставни (комплексни) стойности на свойство CSS Можете да изберете формати със синтаксис, подобен на този на функциите. Например, за да изразите цвят като трите стойности на неговия червен, зелен и син компонент (the RGB модел) ще бъде написано color: rgb(128, 255, 64);
. В рамките на този стил на изразяване също е възможно да се използват единици; В примера по-горе цветните компоненти са десетична стойност от 0 до 255, но може да е по-лесно да изразите това като процент от общата сума на всеки цветен компонент, в който случай може да се запише и като color: rgb(50%, 100%, 25%);
.
Изчисляване на стойности в CSS
В най-новите версии на CSS възможно е да се направи прости математически операции за изчисляване на стойности. За да направите това, използвайте calc
и операцията, която трябва да се извърши, е изразена в скоби. Можете да посочите единици, скоби и прости оператори като сума (+
), изваждане (-
), умножение (*
) и разделение (/
). Изразът би бил от типа width:calc((90%-20px)/2));
.
Променливите могат да се използват в математически операции в CSS отнасящи се при изчисляването на едно свойство към стойността на друго със var
. За да можете да използвате променлива, без да е необходимо да се позовавате на действително свойство на стила, също е позволено да цитирате свойство, което не съществува. CSS препоръчва формата --nombre-variable
(две тирета пред името на измисленото свойство). По този начин, за да дефинирате височината на елемент като половината от неговата ширина, израз в CSS като height:calc(var(width)/2);
и за да дефинирате нова променлива "дебелина" (която могат да използват други свойства), вие ще напишете, например, --grosor:4px;
за да можете по-късно да го наречете като margin-top:calc(var(--grosor)*4);
Зависещи от браузъра CSS свойства
CSS Това е спецификация, стандартизирана от консорциума W3C (World Wide Web Consortium), но много свойства или стилове на поведение достигат до браузърите, преди да бъдат част от спецификацията на версия.
така че кодът CSS работи с текущите функции на браузъра, но не губете съвместимост с нови функции, използва се префикс. Този префикс зависи от рендеринг двигател който използва уеб браузъра, който искате да посочите (за който стилът е дефиниран).
Префиксът -webkit
Работи за браузъри, базирани на WebKit като сафари o Chrome. Префиксът -moz
Използва се за браузъри, базирани на рендеринг двигател de Mozilla, в момента ГущерКато Firefox и неговите производни. За позоваване на EdgeHTML, на рендеринг двигател браузър Ръб от Microsoft (бивш тризъбец), се използва префиксът -ms
. Случаят на браузъра Opera е малко специален, откакто започна да използва своя рендеринг двигател, визирани с -o
, но в момента работи с WebKit, което се изразява като -webkit
.
За да използвате свойство, отнасящо се до браузър, напишете името му, като го поставите в префикс и го разделите с тире, както в -o-border-radius:10px;
, което би служило за задаване на заоблена граница (заоблен ъгъл) в по-старите версии на браузъра Opera.
коментари
За изясняване на кода CSS Можете да използвате коментари, което ще го направи по-четлив, но с недостатъка да увеличи размера му. Синтаксисът на коментарите в CSS Това е като многоредови коментари C + + което съм сигурен, че вече знаете: започвайки в /*
и завършващ на */
, Както и в C + +, може да заема няколко реда.
Селектори
Определението на свойства се присвояват на обекти в документ HTML групирането им в селектори и ги затваря в скоби. Селекторът може да препраща към езиков елемент HTML (етикет), като div
, клас (присвоен с class
en HTML) идентификатор (присвоен с id
en HTML) или всички („универсалният селектор“), представени със звездичката (*
). Следващият пример показва селектор от всеки тип:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
* /* El asterisco es el selector universal */
{
margin:2px 6px 4px 20px;
}
div /* div es una etiqueta HTML */
{
width:500px;
height:200px;
}
.grafico /* «grafico» es el nombre de una clase que se usará en HTML con class=”grafico” */
{
color:#A0B0C0;
}
#superior /* «superior» es un identificador que se usará en HTML con id=”superior” */
{
width:100%;
color:#CCCCCC;
}
|
Етикетите на HTML са изразени в дефиницията на стила с името си, класовете се маркират чрез поставяне на точка преди името (.
) и знак за паунд (#
) за идентификатори.
Част от голямата сила на CSS живее в възможност за групиране на селектори при дефиниране на техните свойства. Има няколко начина за групиране на селектори. Групирайки ги, разделяйки ги със запетаи, се изразява, че всеки от цитираните селектори има тези свойства.
1
2
3
4
5
6
7
8
9
10
11
|
.consumo, .humedad, .temperatura
{
color:#FF00AA;
width:100%;
height:100%;
}
.temperatura
{
height:50%;
}
|
Предишният пример показва, че класовете на консумация, влажност и температура споделят цвят, ширина и височина. В този код е въведена и нова концепция: свойствата могат да бъдат предефинирани и в този случай най-скоро описаните имат предимство. По този начин елементите от температурния клас най-накрая ще имат височина 50% от обекта, който ги съдържа.
Ако групираните селектори не са разделени със запетаи, условието, наложено на свойствата, е кумулативно, т.е. елементът трябва да удовлетворява всички селектори, за да придобие вида или поведението, което те дефинират. Ако селекторите се отнасят до тагове HTML Редът, в който се появяват, трябва да бъде низходящ в нивото на включване: първо най-високото йерархично ниво и последно най-ниското.
1
2
3
4
5
6
7
8
9
10
11
|
div.temperatura
{
color:#FF00AA;
width:100%;
height:100%;
}
.temperatura .consumo
{
height:50%;
}
|
В предишния пример елементите са дефинирани div
които също са от температурен клас и елементите, които имат както температурен клас, така и клас на консумация (и двата едновременно), както в class="temperatura consumo"
. Елементите <div>
На код HTML с class="temperatura"
те биха имали висок 100%
CSS свойства за дефиниране на текста
Може да се направи разлика между три типа свойства, които влияят на външния вид на текста: (1) тези, които определят шрифта, с който е представен, (2) тези, които определят външния вид на литерала (съдържанието на текста) и (3) общи, т.е. тези, които засягат както външния вид на текста, така и този на други компоненти. Като цяло казаното, за да обясни тези от последната група, ще се прилага и за същите свойства, приложени към други елементи.
Типография (шрифт)
-
font-family
показва името на шрифта, използван за даден елемент. Можете да напишете едно име или списък, по ред на предпочитанията и разделяйки имената със запетаи, на шрифтовете, които ще се използват алтернативно, ако желаният не съществува. По същия начин е възможно да се използват общи шрифтове с именатаmonospace
,serif
,sans-serif
,cursive
,fantasy
. От тези общи шрифтове най-важният (за представянето на наличните данни) е първият, който, както подсказва името му, ще използва шрифта с фиксирано разстояние, наличен в системата и предварително зададен от браузъра. Секундата,serif
, ще използва наличния по подразбиране сериф (завършване или изящество). Без търг при посочено третото,sans-serif
. Имитиращ ръчно рисувано писане сcursive
(начинът да го наречем, който очевидно може да бъде подобрен) и декоративната типография на системата сfantasy
, последният от петте.Колкото до кода CSS Интервалите имат специално значение като разделител; когато името на фамилията шрифтове е съставено от няколко думи, разделени с интервали, то се изписва в кавички, за да се избегне объркване.
1font-family: DejaVu, Helvetica, Arial, “a palo seco”, sans-serif;Уеб браузърите могат да използват локални шрифтове (тези, инсталирани в системата, на която работят), както и други, които са специално заредени, дори припокриващи тези, инсталирани локално. За да заредите шрифт, използвайте
@font-face
посочвайки неговото име, местоположението за изтегляне на неговата дефиниция и, ако е приложимо, описание на неговия формат.12345678910111213141516@font-face{font-family:“SircuitoExpandedLight”;src: url(‘/EOT/Sircuito-Expanded-Light.eot’);}@font-face{font-family:“SircuitoRegularMedium”;src: url(‘tipos/Sircuito-Regular-Medium.eot’);src: url(‘tipos/Sircuito-Regular-Medium.eot?iefix’) format(‘eot’),url(‘tipografia/Sircuito-Regular-Medium.woff’) format(‘woff’),url(‘tipografia/Sircuito-Regular-Medium.ttf’) format(‘truetype’),url(‘tipografia/Sircuito-Regular-Medium.svg#webfont’) format(‘svg’);-webkit-font-smoothing:antialiased;}В първата от двете дефиниции в предишния пример се зарежда буквата на документа Sircuito-Expanded-Light.eot което се намира в папката EOT в основната (основната) папка и е зададено като фамилно име CircuitExpandedLight. Между другото, харесва ли ви този шрифт? Безплатно е, можете изтеглете безплатно шрифта Sircuito, който проектирах за изображението на GranaBot.
Както може да се види в примера, свойството url, което съответства на униформен локатор на ресурси, ви позволява да посочите местоположението на документа с шрифта, който се изтегля. Наклонената черта се използва за разделяне на имената на различните папки от пътя до шрифта, като се започне с тази, съдържаща документа, от който се прави извикването, или от корена, ако URL Започнете с бар.
Вторият пример използва няколко алтернативни документа, така че една и съща дефиниция да работи за няколко браузъра (всеки от които ще зареди типа, който може да интерпретира)
Последният ред на дефиницията включва свойството
font-smoothing
за омекотяване на буквата (приложете a заглаждане). Тъй като не е стандартно свойство, префиксът се използва-webkit
. -
font-size
служи за указване на размера на буквата, както вfont-size:12px;
-
font-weight
Задава дебелината на шрифта. Може да бъде изразено като числова стойност, обикновено кратно на 100 между 100 и 900, според обичайните типографски тегла, или по-често с име:normal
за дебелина на основата,bold
за смелите,bolder
за версията, обикновено наричана черна,light
за глобата (обикновено наричана светлина) иlighter
за най-тънките (понякога наричани тънки).Числената стойност на нормалната версия на шрифта е 400 (без единици) и 700 за удебелената версия.
По подразбиране, ако не е посочена друга стойност, външният вид на шрифта е този, който съответства
normal
или 400, така че ако не е променен в генеричния елемент или в контейнера, от който наследява, не е необходимо да се посочваfont-weight
със смелосттаnormal
. -
font-stretch
Използва се за обозначаване на ширината на буквата, стига да е налична в съответното семейство. Възможните стойности, които свойството може да приеме, подредени от най-тясната към най-широката, са:ultra-condensed
,extra-condensed
,condensed
,semi-condensed
,normal
,semi-expanded
,expanded
,extra-expanded
yultra-expanded
. Със същите критерии, които бяха използвани в предишното свойство, ширината по подразбиране еnormal
и не е необходимо изрично да се посочва, освен ако не е променен в по-висок йерархичен ред от дефинирания. -
с
font-style
Можете да посочите дали текстът е начертан с наклонена или наклонена буква, което се отразява на външния му вид, или с курсивна буква, която изразява специален смисъл (чужди думи, например), или кръгла буква, тоест нито предходните или нормално. стойносттаoblique
изпълнява първата функция, тази на външен вид и стойностitalic
секундата. Фактът, че появата на двете често е сходна или дори еднаква, означава, че употребата (значението) понякога е объркана, така че си струва да се обърне внимание. Както при другите свойства,normal
служи за деактивиране на предишните стойности. -
text-decoration
служи за подчертаване (със стойносттаunderline
), надчертайте (със стойносттаoverline
), зачертайте (със стойносттаline-through
) или мига (със стойносттаblink
) текстът, който засяга това свойство. -
За да завършим серията от типографския аспект, въпреки че за нашето приложение не е много уместно,
font-variant
, ви позволява да кандидатствате малки букви (малки главни букви) към текстовете.
Текст
-
text-align
казва на браузъра как трябва да бъде подравнен блокът от текст. Възможните подравнявания са отляво (което се счита по подразбиране) с кодаleft
, център със стойносттаcenter
, правилно използванеright
и оправдани в двата края сjustify
. -
line-height
задава разделението между редовете на текста. В този случай, ако се използват проценти, стойността от 100% съответства на височината на текста, вместо на измерването на контейнера. Най-използваната мярка спрямо текста отговаря на 120%. 100% линия би означавала, че долната част на една линия докосва горната част на следващата. Въпреки че типографският дизайн обикновено включва известно пространство, обичайно е да се оставя малко повече поле между редовете.За да се изрази разделянето между редовете, също е възможно да се посочи коефициент (стойност без единица), с който да се изчисли височината на реда въз основа на височината на текстовото поле.
-
letter-spacing
е стойността на разстоянието между буквите на думите, което в типографията е известно като кернинг o проследяване. -
word-spacing
представлява мярката на интервалите между думите. -
white-space
задава поведението на белите интервали в текст. Когато се използва стойносттаnormal
, който се приема по подразбиране, свързва няколко празни интервала в кода HTML в една от презентациите на уеб страницата (показва се от браузъра) и приема белите интервали като препратка, за да прекъсне ред, ако няма място в блока.Стойността
nowrap
Той също така обединява повтарящи се празни пространства в едно, но не разделя редовете с текст в празните пространства, дори ако редът не се побира в контейнера, препълвайки пространството, ако е необходимо, и пише извън, ако е необходимо. За изрично разделяне на линиите можете да използвате етикета<br>
de HTML.използване
pre
Нито празните интервали са обединени чрез обединяването им в едно, нито редовете са разделени с помощта на интервалите като референция.pre-line
съединете повтарящите се празни места и прекъснете линиите, ако е необходимо, като използвате празните места като ориентир.pre-wrap
запазва повтарящи се интервали и прекъсва редовете, ако е необходимо, използвайки интервали като препратка.
Цвят
En CSS цвят може да се изрази според RGB цветен модел или според HSL цветен модел и в двата случая може да бъде включена информация за прозрачност, стойността на четвъртия канал, който обикновено се извиква канал алфа o алфа състав, което поражда моделите RGBA и HSLA.
За изразяване на цвят във формат RGB като се използва шестнадесетична нотация, се използва синтаксисът #RRGGBB
, като RR е стойността на червения компонент (по принцип, използвайки две шестнадесетични цифри), GG е стойността на зеления компонент и BB е стойността на синия компонент. Както вече беше казано, ако двете цифри на всеки компонент имат една и съща стойност, тя може да бъде изразена като #RGB
ограничаване на броя на наличните цветове до така наречените уеб безопасни
В допълнение към този начин на представяне на цвят, най-класическият и използван, той може да се изрази като rgb(R,G,B)
, hsl(HSL)
, rgba(R,G,B,A)
y hsla(HSLA)
за да го посочите във формата RGB, HSL и съответните им форми с указание за прозрачност (канал алфа)
Освен ако не е поискано друго чрез добавяне на суфикса на единицата, the RGB модел използва десетични стойности от 0 до 255, за трите компонента, стойността на алфа компонент е коефициент (десетичен от нула до едно) и първата стойност на HSL цветен модел, нюансът, е десетична стойност, която варира от 0 до 360 (без единици), представляваща ъгъл. Стойностите на наситеност и осветеност на HSL модел Те обикновено се изразяват в проценти.
Както вече беше казано, въпреки че използването му не е много често, цветовете могат да бъдат обозначени с името им във формата color:black;
вместо color:#000000;
. Първият формат е по-четлив, но е ограничен до кратка таблица със стойности, която също е по-трудна за цифрово модифициране от приложение, написано на JavaScript.
За нашето предложение за графично представяне на данни от сензори, свързани с IoT, ще ни трябват само три свойства, свързани с цвета. Те ще служат както за посочване на името на текста, който сега е обяснен, така и за посочване на името на всеки компонент, който го поддържа.
-
color
показва цвета на елемента HTML и това на това, което съдържа (което го наследява), освен ако не е изрично променено чрез присвояване на други цветове поотделно. -
background-color
Използва се за определяне на цвета на фона на елемент HTML. В допълнение към посочването на цвета като стойност RGB o HSL можете да използвате специална стойностtransparent
обектът да няма фонов цвят и да се вижда какво се намира зад него, тоест да не покрива елементите, върху които е нарисуван. -
opacity
ви позволява да зададете непрозрачността (индиректно, прозрачността) на елемент и цялото му съдържание (да не се бърка с прозрачността на фона). Ако прозрачността е присвоена на елементи, съдържащи се в други, които сами по себе си са прозрачни, това ще бъде увеличено, няма да работи отделно. Не можете да направите обект, съдържащ се в прозрачен обект, по-непрозрачен. Стойността наopacity
Изразява се като коефициент катоopacity:0.5;
за да посочите 50% непрозрачност.По-старите версии на браузъра на Microsoft не използваха това свойство, но го имаха
filter
(филтър), който, наред с други стойности, може да поддържа алфа (за канал алфа), на които може да се присвои процент непрозрачностopacity
според формата:1filter:alpha(opacity=50); /* Opacidad del 50% en una versión 8.0 o anterior de Microsoft Internet Explorer */
Мерки
En CSS, измерването на елементите <div>
, който сме избрали за съставяне на графичния контейнер, се задава с width
(ширина) и height
(алт).
между съдържанието на <div>
и по периметъра му има запълваща площ, която се определя със стойността на padding
. Около периметъра на обекта е ръбът, чието измерване е посочено със свойството border
. Отделяне на екстериора на обекта <div>
от другите околни обекти има пространство, чието измерване се определя от margin
.
При нормални условия измерването на пространството, използвано от обекта <div>
може да се изчисли като сбор от неговата ширина или височина плюс подложката (padding
) плюс рамка (border
) плюс марж (margin
). Когато съответното измерване, което се установява, е полезното вътрешно пространство на обекта <div>
, този състав е много практичен, но ако това, което се знае, е общото налично измерване може ли това поведение да се промени, зададено по подразбиране, така че измерването на общата ширина и височина да е посоченото от width
(ширина) и height
(височина), като извадите от него измерването на подложката, границата и полето, вместо да го добавите. За да използвате този режим, задайте propiedad box-sizing
стойността border-box
(по подразбиране е content-box
)
Следната диаграма показва графично стойностите, произтичащи от width
(ширина) и height
(високо), ако се използва box-sizing:border-box;
(общо) илиbox-sizing:content-box;
(вътре)
Стойностите на измерванията са изразени с единиците, които вече са обяснени. Когато става въпрос за свойства, дефинирани от няколко стойности, числата, изразени с различни видове средни стойности, могат да бъдат смесени. В допълнение, има някои специални стойности, които са подходящи за употребата, която ще използваме в това внедряване на сензорни графики в IoT. По-конкретно, можем да използваме стойността auto
върху имота margin
като ресурс за центриране на обекти при някои обстоятелства.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
.caja_chica
{
box-sizing:border-box;
width:400px;
height:100px;
padding:5px 10px 15px 20px;
border:2px solid #000000;
margin:10px 10px 10px 10px;
}
.caja_grande
{
width:400px;
height:100px;
padding:5px 10px 15px 20px;
border:2px dashed #FF0000;
margin:10px 10px 10px 10px;
}
|
В примера по-горе за класа “small_box” е дефинирана граница с дебелина 2 пиксела, начертана с черен щрих (#000000
) непрекъснато (solid
). В класа „big_box“ линията, използвана за граница, е пунктирана (dashed
) и червеният цвят (#FF0000
). За да изразим тези стойности отделно, можем да използваме border-width
за дебелина, border-style
за инсулт и border-color
за цвят. Тези свойства на ръба на свой ред са съставни и се образуват от горните, десните, долните и левите елементи, следващи посоката на часовниковата стрелка, както е обяснено по-горе.
Двата класа, които са дефинирани, имат еднакви измервания, но първият е по-малък, тъй като, когато се използва стойността border-box
за собственост box-sizing
, подложката, рамката и полето се изчертават вътре в обекта, вместо около съдържанието, както е по подразбиране. В класа "big_box" не е посочено, така че стойността се приема по подразбиране content-box
което води до увеличаване на подложката, рамката и полето до размера, посочен от width
y height
.
Стойността на полето за класовете в примера по-горе е 10 пиксела отгоре, отдясно, отдолу и отляво, така че може да се изрази като една стойност margin:10px;
. Много е интересно да се знае тази алтернатива за разбиране на кода, разработен от трети страни, въпреки че в това предложение за внедряване, за да стане по-четливо, се предлага да се посочат, повторени, стойностите.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
.laconica /* Clase lacónica */
{
background-color:#00F; /* Equivale a background-color:#0000FF; */
padding:10px 5px; /* Equivale a padding:10px 5px 10px 5px; */
margin:1%; /* Equivale a margin:1% 1%; que equivale a margin:1% 1% 1% 1%; */
border:1px solid #000;
/* Lo anterior puede expresarse de forma menos compacta como:
border-width:1px;
border-style:solid;
border-color:#000;
*/
}
.explicita
{
background-color:#0000FF;
padding:10px 5px 10px 5px;
margin:1% 1% 1% 1%;
border-width:1px 1px 1px 1px;
border-style:solid solid solid solid;
border-color:#000000 #000000 #000000 #000000;
}
.locuaz
{
/* Color de fondo */
background-color:rgb(0,0,255);
/* Relleno, dimensiones */
padding-top:10px;
padding-right:5px;
padding-bottom:10px;
padding-left:5px;
/* Margen, dimensiones */
margin-top:1%;
margin-right:1%;
margin-bottom:1%;
margin-left:1%;
/* Borde, grosor */
border-top-width:1px;
border-right-width:1px;
border-bottom-width:1px;
border-left-width:1px;
/* Borde, estilo */
border-top-style:solid;
border-right-style:solid;
border-bottom-style:solid;
border-left-style:solid;
/* Borde, color */
border-top-color:#000000;
border-right-color:#000000;
border-bottom-color:#000000;
border-left-color:#000000;
}
|
Трите класа в предишния пример дават един и същ резултат, като дефиницията на така наречения „лаконичен“ е по-компактен и по-малко от този на така наречения „говорлив“, което повече от добавяне на яснота на четенето е формата обикновено използвани за модифициране на някои частичен, конкретен аспект на свойство, повторно използване на другите стойности чрез наследяване (те се предоставят от контейнера или се предоставят от един от класовете, присвоени на елемента). Ако натоварването, наложено на сървъра от допълнителния текст на този начин на дефиниране на свойствата и други обстоятелства, които, за да направят кода по-четлив, като коментари, увеличават размера и следователно трафика, бяха уместни, би било възможно да обработете го (например например) от PHP като част от стратегията за генериране на код от този език.
Размерите на модела кутия засягат основно елементите <div>
но е възможно да се наложи това поведение на други елементи със свойството display
и стойността block
. За да накарате елемент да тече като текст на ред, използвайте display:inline;
и двете поведения, измервания и поток, могат да се комбинират с display:inline-block;
Стойността none
върху имота display
, използван като display:none;
, също ви позволява да скриете обекти, което ще служи за тяхното "включване" и "изключване". JavaScript.
Ако размерите на даден елемент не са посочени, той взема всички необходими размери, за да направи съдържанието му подходящо (всъщност това прави съдържанието подходящо, без да е необходимо да се установи измерение). Но ако размерите са посочени, може да се случи, че съдържащите се обекти не пасват; в такъв случай размерите не се спазват, те се увеличават, за да позволят цялото съдържание да бъде видимо.
Така че елементите, съдържащи се в друго от фиксираните измервания, се изрязват, когато надвишават размера, се използва свойството overflow
със смелостта hidden
. със стойността scroll
, обектите, които препълват контейнера, също се изрязват, както се случва с hidden
но се показва лента за превъртане, която може да се види при преместването му. Стойността auto
кара лентата за превъртане да се показва само когато е необходимо въз основа на размера на съдържанието.
Можете също така да установите минимален размер, така че контейнерите да заемат това пространство, дори ако съдържанието не се нуждае от него и без да ограничавате размерите им да се увеличават, когато съдържанието го изисква. Свойствата, които отговарят за тази задача, са min-width
за ачо и min-height
за високия. В обратния смисъл, max-width
задайте максимална ширина и max-height
максимална височина, която се компенсира width
ти height
.
Поток от елементи на уеб страницата
Правоъгълниците (блоковете), които сме дефинирали с елементи <div>
, те са поставени един под друг по подразбиране. За да промените това поведение, можете да използвате свойството float
, което показва left
o right
като стойност, така че да текат съответно отляво надясно или отдясно наляво. Напротив, за да предотвратите "плаването" на един обект отдясно или отляво на друг, можете да използвате свойството clear
със стойностите left
, right
o both
, които заменят потока отляво надясно, отдясно наляво или и двете.
Противно на това, което се случва при други обстоятелства, произведеният поток float
не променя автоматично размерите на контейнера, така че е полезно да се включи в неговите свойства overflow:auto;
за да принудите размера (височината) на контейнера да се промени, когато обект го препълни поради местоположението му float
.
Друг начин за конфигуриране на потока на съдържанието на елемент е да го разделите на колони със свойството column-count
(което за момента трябва да бъде придружено от -webkit-column-count
и -moz-column-count
) Размерът на колоните може да бъде посочен (всъщност предложен) с column-width
(-webkit-column-width
-moz-column-width
) и разделянето между колоните с column-gap
(-webkit-column-gap
-moz-column-gap
)
За да не са разделени блоковете и съдържанието им да е разпределено в няколко колони, можете да използвате display:inline-block;
въпреки че това със сигурност предполага. оставете част от колоната неизползвана.
Posicionamiento
За да установи местоположението на елементите на уеб страницата, CSS използва няколко режима на позициониране, които могат да бъдат различни за всеки елемент, тоест е възможно да се смесват различни критерии за позициониране на един и същи уебсайт.
-
position:static;
Това е позиционирането по подразбиране (не е необходимо да го посочвате, ако не е било променено преди това). Този тип позициониране следва "естествения" поток на страницата: един елемент след друг започва отляво, расте, докато има място отдясно и отгоре надолу. Той не използва хоризонтални или вертикални координати, за да установи местоположението си, той следва позицията, която съответства на реда на обекта. -
position:fixed;
Използва се за поставяне на обект във фиксирана позиция в прозореца на браузъра (като меню например).Местоположението на елемента се определя хоризонтално сleft
oright
за определяне на разделянето съответно отляво или отдясно и съсtop
obottom
за разделяне над или под ръба на прозореца на браузъра (viewport).Използвайки този и други видове позициониране, обектите могат да се припокриват. Първи се изчертават обекти (дефинирани по-рано в кода HTML) могат да бъдат покрити от изтеглените по-късно (тези, включени по-късно в кода HTML). За да промените нормалния ред, можете да използвате имота
z-index
, обектите с най-висока стойност вz-index
Те покриват тези с по-малка стойност. -
position:relative;
Премества елемента от неговата "нормална" позиция, както е посочено от свойстватаleft
oright
хоризонтално иtop
obottom
вертикално. -
position:absolute;
Поставя елемента във фиксирана позиция по отношение на обекта, който го съдържа. Местоположението му се изразява, както и в предишните случаи, сleft
,right
,top
ybottom
Наименованието на този тип позициониране първоначално е объркващо, тъй като позицията се установява по отношение на обекта, йерархично по-висш от този, който използва собствеността, което е спорно дали е абсолютно.
Също така е важно да запомните, че елементът, който съдържа обектите
<div>
който използваме на първото йерархично ниво е<body>
, следователно, ако<div>
какво използвашposition:absolute;
не се съдържа в друг, неговото позициониране ще бъде "абсолютно" по отношение на уеб страницата.
Свойства за специфични медии и характеристики (медийни заявки)
CSS ви позволява да дефинирате в един и същи стилов лист различни изяви за различни медии или поддръжка в зависимост от типа на използваното устройство (като екран или принтер), неговите размери, неговата ориентация (вертикална или пейзажна) или неговата разделителна способност. Това служи, за да може да се покаже, по най-подходящия за даден контекст начин, същата уеб страница.
За да се обърнете към медиите, използвайте @media
по начин, подобен на това, което вече беше обяснено за шрифтове с @font-face
, ограждайки скоби ({
y }
) дефинициите на различните елементи: етикети HTML, класове, идентификатори...
Видовете медии, налични в CSS3 звук: all
, за препратка към всякакви медии (всички), screen
за всеки тип екран (по-стари версии на CSS Те направиха разлика между телевизионни и компютърни монитори) print
за изход на принтер и speech
за аудио уеб четци, които интерпретират информация с гласови синтезатори.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
@media screen
{
.texto
{
color:#FFFFFF;
background-color:#000000;
}
}
@media print
{
.texto
{
color:#000000;
background-color:#FFFFFF;
}
}
|
В горния пример елементите от текстовия клас имат черен фон и бял текст на екрана, но се отпечатват с бял фон и черен текст.
Могат да бъдат наложени условия на медиите, за да се дефинират различни набори от свойства въз основа, например, на наличната разделителна способност или съотношение на прозореца за изглед. Тези условия и самите средства могат да бъдат съставени с логически операции and
, not
y only
да изискват да спазвате няколко, съответно да не спазвате или само когато спазвате.
Сред наличните условия ги намираме за особено интересни max-width
(максимална ширина на прозореца), max-height
(максимална височина на прозореца), min-width
(минимална ширина на прозореца), min-height
(минимална височина на прозореца), orientation
(ориентацията, която може да бъде landscape
, пейзаж или portrait
, вертикално), max-resolution
(максимална разделителна способност в dpi
, точки на инч или инч dpcm
, точки на сантиметър) и min-resolution
(минимална разделителна способност, също в dpi
o dpcm
).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
@media all
{
.bloque_principal
{
background-color:#CCCCCC;
}
}
@media screen and (min-width:320px)
{
.bloque_principal
{
width:300px;
margin-left:auto;
margin-rigth:auto;
}
}
@media screen and (min-width:640px)
{
.bloque_principal
{
width:620px;
}
}
@media print
{
.bloque_principal
{
background-color:#FFFFFF;
}
}
|
В предишния пример започваме с дефиниране на фонов цвят, така че във всички медии елементите на класа main_block да имат фонов цвят #CCCCCC. Когато се показва на екран и прозорецът е широк най-малко 320 пиксела, лявото и дясното поле ще бъдат автоматични (центрирайте блока), а ширината на елемента ще бъде 300 пиксела. Ако разделителната способност на екрана е 640 пиксела, ширината на блока ще бъде 620 пиксела. Тъй като втората дефиниция на носителя не включва информация за полето и устройствата, които отговарят на второто условие, ще отговарят и на първото, хоризонталното поле все още ще бъде автоматично.
И накрая, в примера цветът на фона се променя така, че да е бял в разпечатката.
Обичайният начин за дефиниране на стилове за различни медии обикновено е да се започне с общите, обикновено цветове и шрифтове, последвани от най-рестриктивните геометрии (измерванията на устройства с най-малък брой пиксели), обикновено за смартфони и таблети, където в допълнение Ще бъде важно да знаете дали се използват вертикално или хоризонтално с orientation
и със сигурност също и неговата резолюция с min-resolution
. След това се посочват различните размери за по-големи екрани и обикновено се завършва с печатни и гласови медии, които в примера с IoT графики са пропуснати.
Употреба @media
Налагането на условия като размери, разделителна способност и ориентация позволява на дизайнера да създаде една уеб страница, която с различни стилове ще изглежда най-подходяща за всяко устройство. Това поведение обикновено се нарича отзивчив дизайн; адаптивен дизайн, в много свободен превод.
CSS за SVG графичен контейнер
С това, което беше обяснено досега, вече е възможно да се дефинират стиловете, които SVG графичен HTML контейнер с които да се представи състоянието на сензорите, свързани към IoT. В следния код е предложението, включващо, коментирано, разпределението в колони, което съответства на по-голям брой графики от тези, които използва предложението от поредицата от статии, така че да може да се използва повторно в други случаи.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
|
@font-face /* Descripción del tipo de letra ancho */
{
font-family:“SircuitoExpandedLight”;/* Nombre de la tipografía */
/* Documentos con la tipografía en los formatos disponibles */
src: url(‘tipos/Sircuito-Expanded-Light.eot’);
src: url(‘tipos/Sircuito-Expanded-Light.eot?iefix’) format(‘eot’),
url(‘tipos/Sircuito-Expanded-Light.woff’) format(‘woff’),
url(‘tipos/Sircuito-Expanded-Light.ttf’) format(‘truetype’),
url(‘tipos/Sircuito-Expanded-Light.svg#webfont’) format(‘svg’);
/* Forzar alisado de la tipografía (Normalmente por defecto) */
-webkit-font-smoothing:antialiased;
}
@font-face /* Descripción del tipo de letra normal */
{
font-family:“SircuitoRegularLight”; /* Nombre de la tipografía */
/* Documentos con la tipografía en los formatos disponibles */
src: url(‘tipos/Sircuito-Regular-Light.eot’);
src: url(‘tipos/Sircuito-Regular-Light.eot?iefix’) format(‘eot’),
url(‘tipos/Sircuito-Regular-Light.woff’) format(‘woff’),
url(‘tipos/Sircuito-Regular-Light.ttf’) format(‘truetype’),
url(‘tipos/Sircuito-Regular-Light.svg#webfont’) format(‘svg’);
/* Forzar alisado de la tipografía (Normalmente por defecto) */
-webkit-font-smoothing:antialiased;
}
@font-face /* Descripción del tipo de letra comprimido */
{
font-family:“SircuitoCondensedLight”; /* Nombre de la tipografía */
/* Documentos con la tipografía en los formatos disponibles */
src: url(‘tipos/Sircuito-Condensed-Light.eot’);
src: url(‘tipos/Sircuito-Condensed-Light.eot?iefix’) format(‘eot’),
url(‘tipos/Sircuito-Condensed-Light.woff’) format(‘woff’),
url(‘tipos/Sircuito-Condensed-Light.ttf’) format(‘truetype’),
url(‘tipos/Sircuito-Condensed-Light.svg#webfont’) format(‘svg’);
/* Forzar alisado de la tipografía (Normalmente por defecto) */
-webkit-font-smoothing:antialiased;
}
@font-face /* Descripción del tipo de letra normal de grosor normal */
{
font-family:“SircuitoRegularMedium”; /* Nombre de la tipografía */
/* Documentos con la tipografía en los formatos disponibles */
src: url(‘tipos/Sircuito-Regular-Medium.eot’);
src: url(‘tipos/Sircuito-Regular-Medium.eot?iefix’) format(‘eot’),
url(‘tipos/Sircuito-Regular-Medium.woff’) format(‘woff’),
url(‘tipos/Sircuito-Regular-Medium.ttf’) format(‘truetype’),
url(‘tipos/Sircuito-Regular-Medium.svg#webfont’) format(‘svg’);
/* Forzar alisado de la tipografía (Normalmente por defecto) */
-webkit-font-smoothing:antialiased;
}
@media all
{
body
{
font-family:“SircuitoCondensedLight”;
margin:0px;
column-count:1;
-webkit-column-count:1; /* Viejos Chrome, Opera y Safari */
-moz-column-count:1; /* Viejos Firefox */
column-gap:8px;
-webkit-column-gap:8px;
-moz-column-gap:8px;
background-color:#FFFFFF;
}
.bloque_sensor, .bloque_titulo, .bloque_descripcion, .bloque_fecha, .bloque_grafico
{
display:inline-block;
box-sizing:border-box;
width:100%;
color:#205587;
}
.bloque_sensor
{
min-width:320px;
height:100%;
background-color:#EDEDED;
}
.bloque_titulo
{
padding:16px 16px 0px 20px;
font-size:25px;
}
.bloque_descripcion
{
padding:2px 16px 0px 20px;
font-size:15px;
}
.bloque_fecha
{
padding:2px 16px 8px 20px;
font-size:17px;
}
.bloque_grafico
{
height:200px;
padding:4px 20px 20px 20px;
}
.grafico
{
background-color:#A8C3EA;
}
}
@media (min-width:360px)
{
body
{
margin:8px 8px 0px 8px;
}
.bloque_sensor
{
margin:0px 0px 8px 0px;
background-color:#E9E9E9;
}
}
@media (min-width:460px)
{
body
{
font-family:“SircuitoRegularLight”;
}
}
@media (min-width:530px)
{
body
{
font-family:“SircuitoExpandedLight”;
}
}
@media (min-width:690px)
{
body
{
font-family:“SircuitoCondensedLight”;
column-count:2;
-webkit-column-count:2; /* Viejos Chrome, Opera y Safari */
-moz-column-count:2; /* Viejos Firefox */
}
}
@media (min-width:870px)
{
body
{
font-family:“SircuitoRegularLight”;
}
}
@media (min-width:1010px)
{
body
{
font-family:“SircuitoExpandedLight”;
}
}
/*
@media (min-width:1020px)
{
body
{
font-family:”SircuitoCondensedLight”;
column-count:3;
-webkit-column-count:3;
-moz-column-count:3;
}
}
@media (min-width:1280px)
{
body
{
font-family:”SircuitoRegularLight”;
}
}
@media (min-width:1570px)
{
body
{
font-family:”SircuitoExpandedLight”;
}
}
*/
@media (min-width:1610px)
{
body
{
font-family:“SircuitoCondensedLight”;
column-count:4;
-webkit-column-count:4; /* Viejos Chrome, Opera y Safari */
-moz-column-count:4; /* Viejos Firefox */
}
}
@media (min-width:1710px)
{
body
{
font-family:“SircuitoRegularLight”;
}
}
@media (min-width:2010px)
{
body
{
font-family:“SircuitoExpandedLight”;
}
}
/*
@media (min-width:2200px)
{
body
{
font-family:”SircuitoRegularLight”;
column-count:5;
-webkit-column-count:5;
-moz-column-count:5;
}
}
@media (min-width:2520px)
{
body
{
font-family:”SircuitoExpandedLight”;
}
}
*/
|
По-долу можете да видите как биха изглеждали тези стилове. HTML код от предложения контейнер за SVG графики от предишната статия.
Следващата статия от тази серия обяснява как да рисувате с SVG Графики с данни за състоянието на сензори, свързани с Интернет на нещата (IoT).
Публикувай коментар