У дома Ремонт Как да центрирате адаптивно оформление на елемент. Всичко за CSS подравняването. Абсолютно позициониране и разтягане

Как да центрирате адаптивно оформление на елемент. Всичко за CSS подравняването. Абсолютно позициониране и разтягане

Много често задачата е да подравните блока към центъра на страницата / екрана и дори така, че без java скрипт, без да задавате твърди размери или отрицателни отстъпи, така че лентите за превъртане да работят върху родителя, ако блокът надвишава размера си. В мрежата има доста монотонни примери за това как да подравните блок към центъра на екрана. По правило повечето от тях се основават на едни и същи принципи.

По-долу са основните начини за решаване на проблема, техните плюсове и минуси. За да разберете същността на примерите, препоръчвам да намалите височината / ширината на прозореца с резултати в примерите на посочените връзки.

Вариант 1. Отрицателна подложка.

Позициониране блокгорни и леви атрибути с 50% и като знаете предварително височината и ширината на блока, задайте отрицателен марж, който е равен на половината от размера блок. Огромен минус тази опцияе, че трябва да преброите отрицателните отстъпи. Същия начин блокне се държи съвсем коректно в средата на ленти за превъртане - просто се отрязва, защото има отрицателни отстъпи.

Родител (ширина: 100%; височина: 100%; позиция: абсолютна; горе: 0; ляво: 0; препълване: автоматично; ) .block (ширина: 250px; височина: 250px; позиция: абсолютна; горе: 50%; ляво : 50%; поле: -125px 0 0 -125px; img (максимална ширина: 100%; височина: автоматично; дисплей: блок; поле: 0 автоматично; рамка: няма; ))

Опция 2: Автоматичен отстъп.

По-рядко срещан, но подобен на първия. За блокзадайте ширината и височината, позиционирайте горния десен и долния ляв атрибут на 0 и задайте автоматично марж. Предимството на тази опция е работещите ленти за превъртане родител, ако последният има 100% ширина и височина. Недостатъкът на този метод е твърдото оразмеряване.

Родител (ширина: 100%; височина: 100%; позиция: абсолютна; горе: 0; ляво: 0; препълване: автоматично; ) .block (ширина: 250px; височина: 250px; позиция: абсолютна; горе: 0; дясно: 0; отдолу: 0; отляво: 0; поле: автоматично; img (максимална ширина: 100%; височина: автоматично; дисплей: блок; поле: 0 автоматично; рамка: няма; ))

Вариант 3. Таблица.

Ние питаме родителтаблица стилове, клетка родителЗадайте централно подравняване на текста. НО блокзадайте вградения блоков модел. Недостатъците са неработещите ленти за превъртане и като цяло не естетиката на "емулацията" на таблицата.

Родител ( ширина: 100%; височина: 100%; дисплей: таблица; позиция: абсолютна; горе: 0; ляво: 0; > .inner ( дисплей: клетка-таблица; подравняване на текст: център; вертикално подравняване: среда; ) ) .block ( дисплей: inline-block; img ( дисплей: блок; рамка: няма; ) )

За да добавите свитък към този пример, ще трябва да добавите още един елемент към структурата.
Пример: jsfiddle.net/serdidg/fk5nqh52/3.

Вариант 4. Псевдоелемент.

Тази опция е лишена от всички проблеми, изброени в предишните методи, и също така решава оригиналните задачи. Въпросът е да имаш родителзадайте стилове псевдо елементпреди, а именно 100% височина, централно подравняване и модел на вградена кутия. Същото с блокпоставете модела на вградения блок, централно подравняване. Да се блокне попадна под псевдо елементкогато размерите на първия са по-големи от родител, уточни родител white-space: nowrap и font-size: 0, след което y блокотменете тези стилове със следното - бяло пространство: нормално. AT този пример font-size: 0 е необходим, за да се премахне полученото пространство между родители блоквъв връзка с форматирането на кода. Празнината може да бъде премахната по други начини, но се счита за най-добре просто да не се допуска.

Родител (ширина: 100%; височина: 100%; позиция: абсолютна; горе: 0; ляво: 0; препълване: автоматично; бяло пространство: nowrap; подравняване на текст: център; размер на шрифта: 0; &:before ( височина: 100%; дисплей: вграден блок; вертикално подравняване: по средата; съдържание: ""; ) ) .block ( дисплей: вграден блок; бяло пространство: нормално; вертикално подравняване: по средата; подравняване на текст: вляво ; img (дисплей: блок; рамка: няма; ))

Или, ако искате родителят да заема само височината и ширината на прозореца, а не цялата страница:

Родител (позиция: фиксирана; отгоре: 0; отдясно: 0; отдолу: 0; отляво: 0; препълване: автоматично; бяло пространство: nowrap; подравняване на текст: център; размер на шрифта: 0; &:before (височина: 100%; дисплей: вграден блок; вертикално подравняване: по средата; съдържание: ""; )) .block ( дисплей: вграден блок; бяло пространство: нормално; вертикално подравняване: по средата; подравняване на текст: вляво; img (показване: блок; рамка: няма; ))

Вариант 5. Flexbox.

Един от най-простите и елегантни начини е да използвате flexbox. Не изисква ненужни движения на тялото, описва същността на случващото се доста ясно и има висока гъвкавост. Единственото нещо, което трябва да запомните при избора този метод- поддръжка на IE от версия 10 включително. caniuse.com/#feat=flexbox

Родител (ширина: 100%; височина: 100%; позиция: фиксирана; горе: 0; ляво: 0; дисплей: гъвкав; подравняване на елементи: център; подравняване на съдържание: център; оправдаване на съдържание: център; препълване: автоматично; ) .block (фон: #60a839; img (дисплей: блок; рамка: няма; ))

Вариант 6. Трансформирайте.

Подходящо, ако сме ограничени от структурата и няма начин да манипулираме родителския елемент, но блокът трябва да бъде подравнен по някакъв начин. Функцията translate() css ще дойде на помощ. Стойност от 50% абсолютна позиция ще позиционира горния ляв ъгъл на кутията точно в центъра, след което отрицателна стойност на транслацията ще премести кутията спрямо нейните собствени размери. Моля, имайте предвид, че могат да се появят отрицателни ефекти под формата на замъглени ръбове или стил на шрифта. Също така подобен метод може да доведе до проблеми с изчисляването на позицията на блока с помощта на java-script "a. Понякога, за да компенсирате загубата на 50% от ширината поради използване на cssлявото свойство може да бъде подпомогнато от правилото, зададено за блока: margin-right: -50%; .

Родител (ширина: 100%; височина: 100%; позиция: фиксирана; отгоре: 0; отляво: 0; препълване: автоматично; ) .block (позиция: абсолютна; отгоре: 50%; отляво: 50%; трансформация: превод( -50%, -50%); img ( дисплей: блок; ) )

Вариант 7. Бутон.

Опция потребител azproduction където блокувит в етикет с бутон. Бутонът има способността да центрира всичко, което се намира вътре в него, а именно елементите на inline и block-line (инлайн-блок) модел. Не го препоръчвам на практика.

Родител (ширина: 100%; височина: 100%; позиция: абсолютна; горе: 0; ляво: 0; преливане: автоматично; фон: няма; рамка: няма; контур: няма; ) .block ( дисплей: вграден блок; img (дисплей: блок; граница: няма; ))

Бонус

Използвайки идеята за 4-та опция, можете да зададете маржове за блок, като в същото време последният ще се показва адекватно в средата на плъзгачите.
Пример: jsfiddle.net/serdidg/nfqg9rza/2.

Можете също така да подравните картината в центъра и ако картината е по-голяма родител, мащабирайте го според размера родител.
Пример: jsfiddle.net/serdidg/nfqg9rza/3.
Пример за голяма картина:

Уеб дизайнерите използват DIV всеки ден на работа. Без преувеличение, това е най-популярният етикет. Отворете изходния код на всеки сайт и ще видите, че повечето, ако не и две трети от обектите са затворени в

. Дори с появата на HTML5 и появата на сериозни конкуренти под формата на статия или заглавка, той продължава да се вмъква в маркирането навсякъде. Затова ви предлагам да се справите с проблема с форматирането и подравняването на div блокове в центъра.

Какво е DIV

Името на елемента идва от английската дума division, което означава деление. Когато пишете маркиране, той се използва за разделяне на елементи на блокове. DIV обхваща групи от съдържание на уеб страница. Например изображения, параграфи с текст. Тагът не влияе по никакъв начин на показването на съдържание и не носи никакво семантично натоварване.

DIV поддържа всички глобални атрибути. Но за уеб дизайн ви трябват само две - клас и идентификатор. За всичко останало ще си спомните само в екзотични случаи, а това не е факт. Атрибутът align, който се използваше за центриране или ляво подравняване на div, е отхвърлен.

Кога да използвате DIVs

Представете си, че сайтът е хладилник, а DIV са пластмасови контейнери, по които трябва да сортирате съдържанието. Няма да слагате плодове в един и същи съд с черен дроб. Всеки вид продукт поставяте отделно. Уеб съдържанието се генерира по подобен начин.

Отворете всеки сайт и го разделете на семантични блокове. Горен колонтитул отгоре, долен колонтитул отдолу, основен текст в центъра. Отстрани обикновено има по-малка колона с промоционално съдържание или облак от етикети.

документ

Сега разглобете всеки раздел по-подробно. Започнете със заглавката. Заглавката на сайта има отделно лого, навигация, заглавие от първо ниво и понякога слоган. Задайте свой собствен контейнер към всеки семантичен блок. Това не само ще раздели елементите в потока, но и ще улесни форматирането им. Ще бъде много по-лесно за вас да центрирате обекта в тага DIV, като му дадете клас или ID.

Центрирайте DIV с полета

Когато изобразява уеб елементи, браузърът взема предвид три свойства: подложка, поле и рамка. padding е пространството между съдържанието и неговата граница. Маржин - полета, разделящи един обект от друг. Границите са линии по протежение на блоковете. Те могат да бъдат присвоени наведнъж от всички или само от едната страна:

div( border: 1px solid #333; border-left: none; )

Тези свойства добавят свободно пространство между обектите и също така им помагат да се подравнят и поставят по желание. Например, ако блок с картина трябва да бъде изместен от левия край към центъра с 20%, вие присвоявате margin-left на елемента със стойност 20%:

Block-with-img( margin-left: 20%; )

Елементите могат също да бъдат форматирани, като се използват техните стойности на ширина и отрицателна подложка. Например, има блок с размери 200px на 200px. Първо, задайте му абсолютна позиция и го преместете в центъра с 50%.

Div (позиция: абсолютна; ляво: 50%; )

Сега, за да сте сигурни, че DIV е идеално центриран, дайте му отрицателна лява подложка, равна на 50% от ширината му, т.е. -100 пиксела:

ляво поле: -100px

В CSS това се нарича "премахване на въздух". Но има значителен недостатък в необходимостта от извършване на постоянни изчисления, което е доста трудно да се направи за елементи с няколко нива на влагане. Ако са зададени padding и border-width, браузърът по подразбиране ще изчисли размерите на контейнера като сбор от дебелината на границата, подложката отдясно, отляво и самото съдържание, което също може да бъде изненада.

Така че, когато трябва да центрирате DIV, използвайте свойството box-sizing със стойност border-box. Това ще попречи на браузъра да добави стойността на подложката и рамката към общата ширина на елемента DIV. За да повдигнете или намалите елемент, използвайте и отрицателни стойности. Но в този случай те могат да бъдат присвоени или към горното, или към долното поле на контейнера.

Как да центрирате блок div с помощта на автоматични полета

Това е лесен начин за центриране на големи блокове. Просто задавате ширината на контейнера и свойството margin на auto. Браузърът ще постави блока в средата с еднакви полета отляво и отдясно, вършейки цялата работа сам. В резултат на това не рискувате да се объркате в математическите изчисления и значително спестявате време.

Използвайте метода за автоматично маржиране, когато разработвате адаптивни приложения. Ключът е да дадете на контейнера стойност за ширина в em или проценти. Кодът от примера по-горе ще центрира DIV на всяко устройство, включително Мобилни телефони, ще заема 90% от екрана.

Подравняване чрез дисплея на свойствата: inline-block

По подразбиране DIV елементите се считат за блокови елементи и имат показана стойност на блок. За този метод ще трябва да замените това свойство. Подходящо само за DIV с родителски контейнер:

Всякакъв текст

Присвоен е елемент с клас outer-div свойство за подравняване на текстсъс стойност center, която ще центрира текста вътре. Но засега браузърът вижда вложения DIV като блоков обект. За да работи свойството text-align, inner-div трябва да се третира като inline. Следователно, в CSS таблицаза селектора inner-div пишете следния код:

Inner-div( display: inline-block; )

Променяте свойството за показване от block на inline-block.

метод за преобразуване/превод

Каскадните стилови таблици ви позволяват да местите, изкривявате, завъртате и трансформирате уеб елементи по желание. За това се използва свойството transform. Желаният тип трансформация и степента са посочени като стойности. В този пример ще работим с превод:

трансформиране: превод (50%, 50%);

Функцията за превод премества елемент от текущата му позиция наляво/надясно и нагоре/надолу. Две стойности се предават в скоби:

  • степен на хоризонтално движение;
  • степен на вертикално движение.

Ако елементът трябва да се премести само по една от координатните оси, тогава след думата за превод посочвате името на оста и в скоби количеството на необходимото изместване:

Трансформация: translateY(-20%);

В някои ръководства можете да видите трансформация с префикси на доставчика:

преобразуване на webkit: превод (50%, 50%); -ms-трансформация: превод (50%, 50%); трансформиране: превод (50%, 50%);

През 2018 г. това вече не е необходимо, свойството се поддържа от всички браузъри, включително Edge и IE.

За да центрираме DIV, от който се нуждаем, CSS функцията translate е написана със стойност 50% за вертикалната и хоризонталната ос. Това ще накара браузъра да премести елемента от текущата му позиция до половината от неговата ширина и височина. Свойствата за ширина и височина трябва да бъдат посочени:

документ

Имайте предвид, че елементът, към който е приложено свойството transform, се движи независимо от обектите около него. От една страна, това е удобно, но понякога се движи, DIV може да припокрие друг контейнер. Следователно този метод за центриране на уеб компоненти се счита за нестандартен и се използва само в спешни случаи. За анимация се използват трансформации по всички CSS канони.

Работа с Flexbox оформление

Flexbox се разглежда по сложен начиноформления на уеб оформление. Но ако го овладеете, ще разберете, че е много по-лесно и приятно от стандартни начиниформатиране. Спецификацията Flexbox е гъвкав и невероятно мощен начин за обработка на елементи. ОТ на английски езикИмето на модула се превежда като "гъвкав контейнер". Стойностите на ширината, височината, разположението на елементите се настройват автоматично, без да се изчисляват отстъпи и полета.

В предишните примери вече работихме със свойството display, но го настроихме да блокира (block) и вградени (inline-block) стойности. За да създадем гъвкави оформления, ще използваме display: flex. Първо имаме нужда от гъвкав контейнер:

За да го преобразуваме във гъвкав контейнер в каскадни таблици, пишем:

Гъвкав контейнер (дисплей: гъвкав; )

Всички обекти, вложени в него, но само преки деца, ще бъдат гъвкави елементи:

Първият
Второ
трето
Четвърто

Ако списъкът е поставен във гъвкав контейнер, тогава елементите в списъка li не се считат за гъвкави елементи. Flexbox оформлението ще работи само на ul:

Правила за поставяне на гъвкави елементи

За да управлявате flex елементи, имате нужда от justify-content и align-items. В зависимост от зададените от вас стойности, тези две свойства автоматично позиционират обектите според нуждите. Ако трябва да центрираме всички вложени DIV, пишем justify-content: center, align-items: center и нищо друго. Браузърът ще свърши останалата работа:

документ

Първият
Второ
трето
Четвърто

За да центрирате текст върху DIV, които са гъвкави елементи, можете да използвате стандартния трик за подравняване на текст. Или можете също да направите всеки вложен DIV гъвкав контейнер и да управлявате съдържанието с justify-content. Този метод е много по-рационален, ако съдържа разнообразно съдържание, включително графики, други вложени обекти, включително многостепенни списъци.

Всеки дизайнер на оформление постоянно се сблъсква с необходимостта да подреди съдържанието в блок: хоризонтално или вертикално. Има няколко добри статии по този въпрос, но всички те предлагат много интересни, но малко практични опции, поради което трябва да губите допълнително време, за да подчертаете основното. Реших да подам тази информация в удобния за мен вид, за да не търся повече в гугъл.

Подравняване на блокове с известни размери

Най-лесният начин да използвате CSS е да подравните кутии, които имат предварително определена височина (за вертикално подравняване) или ширина (за хоризонтално подравняване).

Подравняване с подложка

Понякога можете да не центрирате елемент, но да добавите граници към него със свойството " подплата".

Например, има картина 200 на 200 пиксела и искате да я центрирате в блок от 240 на 300. Можем да зададем височината и ширината външно тяло= 200px и добавете 20 пиксела за горната и долната част и 50 за лявото и дясното.

.example-wrapper1 (фон: #535E73; ширина: 200px; височина: 200px; подложка: 20px 50px;)

Подравняване на абсолютно позиционирани блокове

Ако блокът е настроен на " позиция: абсолютна", тогава той може да бъде позициониран спрямо най-близкия родител с "position: relative". За това всички свойства (" Горна част","точно","отдолу","наляво") на вътрешния блок, за да присвоите същата стойност, както и "margin: auto".

*Има един нюанс: Ширината (височината) на вътрешния блок + стойността на ляво (дясно, долу, горе) не трябва да надвишава размера на родителския блок. По-безопасно е да зададете свойствата отляво (отдясно, отдолу, отгоре) на 0 (нула).

.example-wrapper2 ( позиция : относителна ; височина : 250px ; фон : url(space.jpg) ; ) 0 ; дясно : 0 ; поле : автоматично ; фон : url(king.png) ; )

Хоризонтално подравняване

Подравняване с "text-align: center"

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

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

.example-text (text-align: center; padding: 10px; background: #FF90B8;)

Струва си да се отбележи, че това свойство ще работи не само за текст, но и за всички вградени елементи („display: inline“).

Но този текст е подравнен вляво, но е в блок, който е центриран спрямо обвивката.

.example-wrapper3 (текст-подравняване: център; фон: #FF90B8;) .inline-текст (дисплей: вграден блок; ширина: 40%; подплата: 10px; текст-подравняване: ляво; фон: #FFE5E5;)

Подравняване на блокове с полета

Елементите на ниво блок с известна ширина лесно се подравняват хоризонтално, като ги зададете на "маржин-ляво: автоматично; маржин-дясно: автоматично". Обикновено се използва съкращението: " марж: 0 авто" (вместо нула може да има произволна стойност). Но за вертикално подравняване този метод няма да работи.

.lama-wrapper (височина: 200px; фон: #F1BF88;) .lama1 (височина: 200px; ширина: 200px; фон: url(lama.jpg); margin: 0 auto;)

Ето как си струва да подравните всички блокове, където е възможно (където не е необходимо фиксирано или абсолютно позициониране) - това е най-логичното и адекватно. Въпреки че това изглежда очевидно, понякога съм виждал плашещи примери с отрицателни отстъпи, така че реших да изясня.

Вертикално подравняване

Има много повече проблеми с вертикалното подравняване - очевидно това не е предвидено в CSS. Има няколко начина да постигнете желания резултат, но всички те не са много красиви.

Подравняване със свойството line-height

В случай, че има само един ред в блока, можете да постигнете вертикалното му подравняване, като приложите " височина на линията" и да го зададете на желаната височина. За по-сигурно трябва да зададете и "height", чиято стойност ще бъде равна на стойността на "line-height", тъй като последното не се поддържа във всички браузъри.

.example-wrapper4 (line-height: 100px; color: #DC09C0; background: #E5DAE1; height: 100px; text-align: center;)

Също така е възможно да подравните блок с множество редове. За да направите това, ще трябва да използвате допълнителен обвиващ блок и да му зададете височината на линията. Вътрешният блок може да бъде многоредов, но трябва да е "inline". Трябва да приложите "vertical-align: middle" към него.

.example-wrapper5 (line-height: 160px; height: 160px; font-size: 0; background: #FF9B00;) 1.5; vertical-align: middle; background: #FFFAF2; color: #FF9B00; text-align: center ;)

Обвиващият блок трябва да има зададен "font-size: 0". Ако не зададете размера на шрифта на нула, тогава браузърът ще добави няколко допълнителни пиксела от себе си. Ще трябва също да посочите размера на шрифта и височината на реда за вътрешния блок, тъй като тези свойства са наследени от родителя.

Вертикално подравняване в таблици

Имот " вертикално подравняване" също засяга клетките на таблицата. Със стойността, зададена на "middle", съдържанието вътре в клетката е центрирано. Разбира се, табличното оформление се счита за архаично в днешно време, но в изключителни случаи може да бъде симулирано чрез указване на " дисплей: клетка-таблица".

Обикновено използвам тази опция за вертикално подравняване. По-долу е даден пример за оформление, взет от готов проект. Картината, която е центрирана вертикално по този начин, представлява интерес.

.one_product .img_wrapper (показване: клетка-таблица; височина: 169px; вертикално подравняване: по средата; преливане: скрито; фон: #fff; ширина: 255px;) .one_product img (максимална височина: 169px; максимална ширина: 100 %; мин. ширина: 140px; дисплей: блок; поле: 0 автоматично;)

Трябва да се помни, че ако елементът има набор "float", различен от "none", тогава той така или иначе ще бъде с форма на блок (display: block) - тогава ще трябва да използвате допълнителна обвивка на блок.

Подравняване с допълнителен вграден елемент

А за вградени елементи можете да приложите " вертикално подравняване: по средата". В този случай всички елементи с " дисплей: вграден", които са на една и съща линия, ще се изравнят с обща централна линия.

Трябва да създадете спомагателен блок с височина, равна на височината на родителския блок, след което желаният блок ще бъде центриран. За това е удобно да използвате псевдоелементи:before или:after.

.example-wrapper6 (височина: 300px; подравняване на текст: център; фон: #70DAF1;) .pudge (дисплей: вграден блок; вертикално подравняване: по средата; фон: url(pudge.png); цвят на фона: # fff; ширина: 200px; височина: 200px;) .riki (дисплей: вграден блок; височина: 100%; вертикално подравняване: по средата;)

Дисплей: гъвкавост и подравняване

Ако не ви пука много за потребителите на Explorer 8 или ви пука толкова много, че сте готови да поставите част от допълнителен javascript за тях, тогава може да се използва "display: flex". Кутиите Flex се справят с проблемите с подравняването наистина добре и е достатъчно да напишете „margin: auto“, за да центрирате съдържанието вътре.

Досега този метод практически никога не ме е срещал, но няма специални ограничения за него.

.example-wrapper7 (дисплей: flex; височина: 300px; фон: #AEB96A;) .example-wrapper7 img (марж: auto;)

Е, това е всичко, за което исках да пиша CSS подравняване. Сега центрирането на съдържанието няма да е проблем!

Често на практика е необходимо да се реши проблемът с групирането и подравняването на съдържанието използвайки CSS. Днес ще разгледаме основните начини за подреждане на елементи в хоризонтален ред.

Материалът на тази статия има за цел да помогне на начинаещите уеб дизайнери да овладеят техниките за оформление на уеб страници.

Какво да изберете или методи

Има няколко начина за подреждане на структурни елементи в ред в хоризонтална равнина. най-полезен от гледна точка на практическо приложение, са:

  • Метод "Float".
  • Метод "Inline block".
  • метод таблица-клетка

Всеки от тях има своите предимства, приложения и недостатъци. Нека ги разгледаме по ред.

"За шут" или малко теория

Всички структурни HTML елементиможе условно да се раздели на:

В редица(вграден) - вид img, spanи подобни. Ние нямаме възможност да променяме техния фон и да им даваме произволни линейни размери.

Блокирайте– заемащи цялата ширина на родителския блок, винаги започвайте с нова линияp, h, div.

Илюстративен пример за вградени и блокови структури е показан по-долу:

Метод на плаване

Както вече е известно (вижте по-горе), блоковият елемент се поставя на нов ред, независимо от посочената за него ширина ( ширина). Следователно, намаляване на хоризонталния размер див-a, не можете да изграждате блокове в един ред.

Най-популярният (особено сред начинаещите дизайнери на оформление) метод за решение е използването на собствеността плавам.

CSS свойство плавампридоби голяма популярност и практическа стойност след прехода от таблично оформление към блоково оформление.

Плаване: ляво (дясно)трансформира елемент на ниво блок в float, подравнява го към левия (десния) край на родителския блок и задава дясното (ляво) обвиване за текст и други елементи.

Например, нека създадем четири блока, които трябва да бъдат поставени в един ред:

< html> < head> < meta charset= "utf-8" > < link rel= "stylesheet" media= "all" type= "text/css" href= "style.css" /> < body> < div class = "bblock" >Ние строим < div class = "bblock" >хоризонтална < div class = "bblock" >ред < div class = "bblock" >от диви

И външен стилов лист със следното съдържание:

div(float:left; /*Задайте опаковане*/височина на реда: 120px; размер на шрифта: 40px; фон: dogerblue; цвят:бял; margintop: 60px; ширина: 320px /*Коригирайте ширината на блока*/ }

В резултат на това получаваме четири блока, подредени в хоризонтален ред и подравнени към левия край на родителския блок:

Понякога на практика е необходимо блоковете да се подравнят към десния край на родителския елемент. Нека променим обвиването около блоковете в предишния пример:

float:right;

Обърнете внимание на надписите, разположени в блоковете. На пръв поглед може да изглежда, че примерът работи криво. Но всъщност браузърът обработи кода правилно: прочете блоковете отгоре надолу и направи това, което поискахме от него - подравнено вдясно. Имайте това предвид, когато използвате имота float:right.

За да спрете потока от елементи от определено място, използвайте реда:

< div style= "clear: both;" >

В горния пример задаваме разстоянието между блоковете с помощта на отстъпа margin-right. Но какво ще стане, ако имате задача, когато оформяте страницата: поставете блоковете в ред, центрирайте ги и дори така, че отстъпите да са само между тях, но не и отвън?

Алгоритъмът на действията е следният.

< div class = "wrap" > < div class = "bblock" >Ние строим < div class = "bblock" >хоризонтална < div class = "bblock" >ред < div class = "bblock" >от диви

обвиване (ширина: 1310px; /*фиксирайте ширината на обвивката*/марж: 0 авто; /*центрирайте го*/ фон: тъмносив; височина: 120px; /*Задайте височината на обвивката*/) . bblock (float: ляво; /*Задайте опаковане*/височина на реда: 120px; /*Височина на ред + верт. центриране на текст*/размер на шрифта: 40px; фон: dogerblue; цвят:бял; ширина: 320px /*Коригирайте ширината на блока*/ margin-right: 10px; подравняване на текст: център; /*Центрирайте текста хоризонтално*/) . обвиване: последно дете ( margin-right: 0px; /*Премахване на полето на последния div*/ }

В резултат на това получаваме следната картина:

Е, не можете да разгледате всички практически ситуации, така че нека преминем към общи характеристики.

важно!!!

Метод на вграден блок

Както вградените, така и блоковите елементи имат своите предимства и недостатъци в контекста на всяка конкретна задача, която се решава. Но какво ще стане, ако съчетаем техните предимства?

Запознайте се с акцента в програмата – имот дисплей: inline-block.

дисплей: inline-blockгенерира вграден в блок елемент, който по същество е вграден, но запазва свойствата на блока - позволява ви да променяте линейните размери, да задавате полета, отстъпи и т.н.

Вграденият блоков елемент има следните свойства:

  • височината и ширината на блока се определят автоматично от съдържанието и стойността на подплата ( подплата)
  • Височината и ширината на блока могат да бъдат фиксирани
  • Няма ефект на свиване на границата.

Помислете за пример за създаване на проста навигационно меню A, съдържащ изображение и връзка.

< div class = "nav" > < p>< img src= "./vaden-pro-logo.png" alt= "" /> < p class = "string" >< a href= "#" >Връзката към меню 1 е по-дълга от обикновено < div class = "nav" > < p>< img src= "./vaden-pro-logo.png" alt= "" /> < p class = "string" >< a href= "#" >Връзка към менюто 2 < div class = "nav" > < p>< img src= "./vaden-pro-logo.png" alt= "" /> < p class = "string" >< a href= "#" >Връзка към менюто 3 < div class = "nav" > < p>< img src= "./vaden-pro-logo.png" alt= "" /> < p class = "string" >< a href= "#" >Връзка към менюто 4

Nav (дисплей: inline-block; /*Задаване на блок-редов дисплей*/ширина: 180px /*задаване на ширина на блока*/фон: dogerblue; ) . низ (подравняване на текст: център; /*Подравнете текста хоризонтално*/ }

В резултат на това получаваме следното меню:

Както можете да видите, се оказа криво ... Но ние не възнамеряваме да се разстройваме, затова прилагаме свойството CSS към нашите divs вертикално подравняване(вижте по-долу за подробности):

вертикално подравняване: отгоре;

Нашата навигационна лента вече е подравнена към горния ред:

Разбира се, дадения пример е примитивен, но съм сигурен, че въз основа на него можете да създадете истински шедьовър!!!

важно!!!

  • За древните версии на Firefoxдобавете ред:

    дисплей: -moz-inline-stack;


    и увийте елемента в допълнителна обвивка на div.
  • IE 7 и по-стари - добавете редове:

    увеличение: 1 /*set hasLayout*/ * дисплей: inline; /*звездичка - хак за IE */ _височина: 250px; /*min-height не работи в IE6*/

  • Отбелязвам, че определени браузъри реагират избирателно на тези редове (Firefox на първия, IE на останалите).

Метод на таблицата

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

Имоти дисплей: таблица (клетка на таблицата, вградена таблица), ви позволяват да извършвате таблично форматиране на елементи без HTML приложениямаси.

За хоризонтално разполагане на блокове се нуждаем от родителски елемент, който има свойството дисплей: таблицаи дъщерни елементи (клетки), които имат свойството дисплей: клетка-таблица:

< div class = "wrap" > < div class = "bblock" >Ние строим < div class = "bblock" >табличен < div class = "bblock" >ред < div class = "bblock" >от диви

Bblock (дисплей: клетка от таблица; размер на шрифта: 32px; ширина: 200px; височина: 200px; фон: златен; подравняване на текст: център; вертикално подравняване: средата; ) . обвиване (дисплей: таблица; разстояние между границите: 20px 20px; цвят на фона: тъмносив; )

важно!!!

  1. За разлика от методите "inline-block" и "float", когато ширината на прозореца на уеб браузъра е намалена, клетките не се движат надолу.
  2. Нямате възможност да зададете свойството margin за клетки на псевдотаблица.
  3. Крос браузър. Свойствата от дисплея: семейство таблица* не се поддържат от IE6, IE7. Освен това в IE8 може да видите грешка при динамично изобразяване за елементи на псевдотаблица като произволно изчезващи клетки. Тази грешканай-често се проявява при първоначалното изготвяне на документа

Добър ден, абонати и читатели на тази публикация. Днес искам да навляза в подробности и да ви кажа как да центрирате текст в css. В някои предишни статии косвено засегнах тази тема, така че имате известни познания в тази област.

В тази публикация обаче ще ви разкажа за всякакви начиниподравняване на обекти и обяснете как да направите отстъп и червена линия на абзаци. Така че нека започнем да учим!

Html и неговите потомци
и подравнете

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

Що се отнася до валидирането този срокописано подробно в статията ""), тогава самата html спецификация осъжда използването < център>, тъй като за валидност е необходимо да се използва транзитив DOCTYPE>.

Този видпропуска забранените елементи.

ЦЕНТЪР

Сега да преминем към атрибута подравнете. Той задава хоризонталното подравняване на обектите и се вписва след декларацията на етикета. Обикновено може да се използва за подравняване на съдържание отляво ( наляво), от дясната страна ( точно), центрирано ( център) и ширина на текста ( оправдавам).

По-долу ще дам пример, в който ще поставя картината и абзаца в центъра.

подравнете

Това съдържание ще бъде центрирано.

Имайте предвид, че за картината атрибутът, който анализираме, има малко по-различни стойности.

В примера, който използвах подравняване="средата". Благодарение на това изображението се подравнява така, че изречението да се намира точно в средата на изображението.

CSS инструменти за центриране

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

И така, нека започнем с първото свойство на центрирането на текста - това е текст-подравнете.

Функционира по същия начин като подравняване в . Сред ключовите думи можете да изберете една от общия списък или да наследите характеристиките на предшественика ( наследяват).

Искам да отбележа, че в css3 можете да зададете още 2 параметъра: започнете– в зависимост от правилата за писане на текста (отдясно наляво или обратно), задава подравняването наляво или надясно (подобно на работата наляво или надясно) и край- противоположно на началото (при писане на текст отляво надясно действа като дясно, при писане отдясно наляво - ляво).

подравняване на текст

Оферта вдясно

Изречение с край

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

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

Ключова дума предназначение
базова линия Указва подравняването спрямо линията на предшественика, което се нарича базова линия. Ако обектът-предшественик няма такава линия, тогава подравняването се извършва по долната граница.
средата Средата на променливия обект е подравнена спрямо основната линия, към която се добавя етажът на височината на родителския елемент.
отдолу Долната част на избраното съдържание се настройва към долната част на обекта под всичко това.
Горна част Подобно на дъното, само с горната част на обекта.
супер Създава горен индекс.
суб Прави елемента долен индекс.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 вертикално подравняване
° С ATд TОДа се

вертикално подравняване

° С ATд TОДа се

Вдлъбнатина

И накрая, стигнахме до отстъпа в параграфа. Езикът css използва специално свойство, наречено отстъп на текста.

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

отстъп на текста

За да създадете червена линия, трябва да знаете само един параметър.

Това е просто свойство за отстъп на текст.