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

1. Хоризонтално подравняване към центъра на блока/страницата

1.1. Ако блокът има ширина:

div (ширина: 300px; марж: 0 автоматично; /*центрирайте елемента хоризонтално в рамките на родителския блок*/)

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

1.2. Ако блок е вложен в друг блок и за него няма зададена ширина:

.wrapper(text-align:center;)

1.3. Ако блокът има ширина и трябва да бъде фиксиран в центъра на родителския блок:

.wrapper (позиция: относителна; /*задаване на родителското поле на относителна позиция, така че да можем абсолютно да позиционираме полето вътре в него по-късно*/) .box (ширина: 400px; позиция: абсолютна; ляво: 50%; марж-ляво: - 200px; / *преместете блока наляво с разстояние, равно на половината от ширината му*/ )

1.4. Ако не е зададена ширина за блокове, можете да центрирате с помощта на родителския обвиващ блок:

.wrapper (text-align: center; /*центрирайте съдържанието на блока*/) отстъп между блоковете*/ )

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

2.1. Ако текстът заема един ред, например за бутони и елементи от менюто:

.button (височина: 50px; височина на реда: 50px;)

2.2. За да подравните блок вертикално вътре в родителския блок:

.wrapper (позиция: относителна;) .box (височина: 100px; позиция: абсолютна; горна: 50%; margin: -50px 0 0 0; )

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

.wrapper ( дисплей: таблица; ширина: 100%; ) .box ( дисплей: клетка-таблица; височина: 100 пиксела; подравняване на текст: център; вертикално подравняване: среда; )

2.4. Ако полето има зададени ширина и височина и трябва да бъде центрирано върху родителското поле:

.wrapper (позиция: относителна;) .box (височина: 100px; ширина: 100px; позиция: абсолютна; горе: 0; дясно: 0; долу: 0; ляво: 0; поле: автоматично; препълване: автоматично; /*до съдържанието не се разпространява */ )

2.5. Абсолютно позициониране в центъра на страницата/блока с помощта на CSS3 трансформация:

ако елементът има размери

div ( width: 300px; /*задайте ширината на блока*/ height:100px; /*задайте височината на блока*/ transform: translate(-50%, -50%); position: absolute; top: 50%; left: 50% ;)

ако елементът няма размери и не е празен

Малко текст тук

h1 (поле: 0; трансформация: превод (-50%, -50%); позиция: абсолютна; горе: 50%; ляво: 50%; )

Много често задачата е да подравните блока към центъра на страницата / екрана и дори така, че без 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. Бутон.

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

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

Бонус

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

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

Влад Мержевич

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

Вертикално центриране

Един от начините да покажете на посетителя фокуса и заглавието на сайта е да използвате начална страница. Това е първата страница, на която по правило има флаш интро или картина, изразяваща основната идея на сайта. Изображението е и връзка към други раздели на сайта. Необходимо е да поставите тази снимка в центъра на прозореца на браузъра, независимо от резолюцията на монитора. За целта можете да използвате таблица с ширина и височина равна на 100% (пример 1).

Пример 1: Центриране на картина

подравняване

В този пример хоризонталното подравняване се задава с помощта на параметъра на етикета align="center". , и не е необходимо съдържанието на клетката да бъде центрирано вертикално, тъй като тази позиция е зададена по подразбиране.

За да зададете височината на таблицата на 100%, премахнете, кодът вече не е валиден.

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

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

Чрез комбиниране на атрибутите align (хоризонтално подравняване) и valign ( вертикално подравняване) етикет , е допустимо да се зададат няколко вида позиции на елементи един спрямо друг. На фиг. 1 показва как да подравните елементи хоризонтално.

Нека да разгледаме някои примери за подравняване на текст според фигурата по-долу.

Горно подравняване

За да укажете подравняването на съдържанието на клетката към горната част, за етикета необходимо е да зададете атрибута valign със стойност top (пример 2).

Пример 2: Използване на valign

подравняване

Колона 1 Колона 2

В този пример характеристиките на клетката се контролират с помощта на параметри на тагове , но също така е по-удобно да се променят чрез стилове. По-специално, подравняването на клетките се определя от свойствата vertical-align и text-align (пример 3).

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

подравняване

Колона 1 Колона 2

За да се съкрати кодът, този пример използва групиране на селектора, тъй като свойствата за вертикално подравняване и запълване се прилагат към две клетки едновременно.

Подравняването отдолу се извършва по същия начин, но се използва bottom вместо top .

Централно подравняване

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

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

Пример 4: Подравняване на формула

подравняване

(18.6)

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

Подравняване на елементи на формата

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

За да може текстът в близост до полетата на формуляра да бъде подравнен вдясно, а самите елементи на формуляра да бъдат подравнени вляво, ви е необходима таблица с невидима рамка и две колони. Лявата колона ще съдържа самия текст, а дясната колона ще съдържа текстови полета (пример 5).

Пример 5 Подравняване на полета на формуляр

подравняване

Име
електронна поща
Коментирайте

В този пример атрибутът align="right" е добавен за клетки, които изискват дясно подравняване. За да може етикетът „Коментар“ да бъде разположен в горната граница на многоредовия текст, съответната клетка е подравнена отгоре с помощта на атрибута valign.

Много често задачата е да подравните блока към центъра на страницата / екрана и дори така, че без 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 блокотменете тези стилове със следното - бяло пространство: нормално. В този пример е необходим 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.
Пример за голяма картина:

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

Вертикалното централно подравняване с CSS не се постига толкова лесно. Има много начини и не всички работят във всички браузъри. Нека да разгледаме 5 различни методи, както и "за" и "против" всеки от тях. Пример.

1-ви начин

Този метод предполага, че задаваме някакъв елемент

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

някои полезна информация, която трябва да бъде центрирана.
#wrapper( display: table; ) #cell( display: table-cell; vertical-align: middle; )

професионалисти

  • Съдържанието може да променя височината динамично (височината не е дефинирана в CSS).
  • Съдържанието не се съкращава, ако няма достатъчно място за него.

минуси

  • Не работи в IE 7 и по-нови версии
  • Много вложени етикети

2-ри метод

Този метод използва абсолютно позициониране на div, чиято горна част е зададена на 50%, а горното му поле (margin-top) минус половината от височината на съдържанието. Това означава, че обектът трябва да има фиксирана височина, която е дефинирана в CSS стилове.

Тъй като височината е фиксирана, можете да зададете overflow:auto; за div, съдържащ съдържанието, така че ако съдържанието не се побира, ще се появят ленти за превъртане.

Съдържание тук
#съдържание (позиция: абсолютна; горна: 50%; височина: 240px; margin-top: -120px; /* минус половината от височината */)

професионалисти

  • Работи във всички браузъри.
  • Без допълнителни инвестиции.

минуси

  • Когато няма достатъчно място, съдържанието изчезва (напр. div е вътре в тялото и потребителят свива прозорците, в който случай лентите за превъртане няма да се появят.

3-ти метод

В този метод ще обвием div съдържанието с друг div. Задайте височината му на 50% (height: 50%;) и долното поле на половината от височината му (margin-bottom:-contentheight;). Съдържанието ще изчисти поплавъка и ще бъде центрирано.

тук съдържание
#floater( float: ляво; височина: 50%; margin-bottom: -120px; ) #content( clear: двете; височина: 240px; позиция: относителна; )

професионалисти

  • Работи във всички браузъри.
  • Когато няма достатъчно място (например, когато прозорецът е намален), съдържанието не се отрязва, ще се появят ленти за превъртане.

минуси

  • Мисля, че само едно: че се използва допълнителен празен елемент.

4-ти метод.

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

Важна информация.
#content(позиция: абсолютна; горе: 0; долу: 0; ляво: 0; дясно: 0; поле: автоматично; височина: 240px; ширина: 70%; )

професионалисти

  • Много просто.

минуси

  • Не работи в Internet Explorer
  • Съдържанието ще бъде изрязано без ленти за превъртане, ако няма достатъчно място в контейнера.

5-ти метод

Можете да използвате този метод, за да центрирате един ред текст. Просто задайте височината на текста (line-height) на височината на елемента (height). След това линията ще се покаже в центъра.

Някакъв ред текст
#съдържание (височина: 100px; височина на реда: 100px; )

професионалисти

  • Работи във всички браузъри.
  • Не изрязва текста, ако не пасва.

минуси

  • Работи само с текст (не работи с блокови елементи).
  • Ако има повече от един ред текст, изглежда много зле.

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

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

Етап 1

Винаги е добре да започнете със семантично маркиране. Нашата страница ще бъде структурирана така:

  • #floater (за центриране на съдържанието)
  • #centred (централен елемент)
    • #страна
      • #лого
      • #nav (списък
      • #съдържание
    • #bottom (за авторски права и всичко останало)

    Нека напишем следната HTML маркировка:

    Центрирана компания

    Заглавие на страница

    Реинженерирайте холистично аутсорсинга с добавена стойност след сътрудничество, ориентирано към процеса и споделяне на идеи. Енергично опростете въздействащи пазарни ниши чрез активирани императиви. Холистично преобладават първокласни иновации след завладяващи сценарии. Безпроблемно пресъздайте високи стандарти в човешкия капитал с водещи произведени продукти. Отличително синдикирайте съвместими със стандартите схеми преди стабилни вортали. Рекаптиуализирайте по уникален начин използваната уеб готовност спрямо информацията извън кутията.

    Заглавие 2

    Възприемете ефективно персонализирана готовност за уеб, а не насочени от клиента процеси. Асертивно развивайте междуплатформените императиви спрямо проактивните технологии. Удобно овластяване на мултидисциплинарни мета-услуги без интерфейси за цялото предприятие. Удобно рационализирайте конкурентните стратегически тематични области с фокусирани електронни пазари. Фосфлуоресцентно синдикирайте общности от световна класа срещу пазари с добавена стойност. Подходящо преоткриване на холистични услуги преди стабилни електронни услуги.

    Известието за авторски права е тук

    Стъпка 2

    Сега ще пишем прост CSS, за позициониране на елементи на страницата. Трябва да запишете този код във файла style.css. Именно на него е написана връзката в html файла.

    Html, тяло ( margin: 0; padding: 0; height: 100%; ) body ( background: url("page_bg.jpg") 50% 50% no-repeat #FC3; font-family: Georgia, Times, serifs; ) #floater (позиция: относителна; float: ляво; височина: 50%; margin-bottom: -200px; ширина: 1px; ) #centered (позиция: относителна; ясно: ляво; височина: 400px; ширина: 80%; макс. -width: 800px; min-width: 400px; margin: 0 auto; background: #fff; border: 4px solid #666; ) #bottom (position: absolute; bottom: 0; right: 0; ) #nav (position: абсолютен; отляво: 0; отгоре: 0; отдолу: 0; отдясно: 70%; подложка: 20px; марж: 10px; ) #съдържание ( позиция: абсолютен; отляво: 30%; отдясно: 0; отгоре: 0; отдолу: 0; преливане: автоматично; височина: 340px; подложка: 20px; поле: 10px; )

    Преди да можем да направим нашето съдържание централно подравнено, трябва да зададем височината на тялото и html на 100%. Тъй като височината се счита без вътрешна и външна подложка (подложка и поле), ние ги задаваме (подложка) на 0, така че да няма ленти за превъртане.

    Долната подложка за елемента "floater" е минус половината от височината на съдържанието (400px), а именно -200px;

    Сега страницата ви трябва да изглежда така:

    Ширината на елемента #centered е 80%. Това прави сайта ни по-тесен на малки екрани и по-широк на по-големи. повечето сайтове изглеждат грозно на новите широки монитори в горния ляв ъгъл. Свойствата min-width и max-width също ограничават нашата страница, така че да не изглежда твърде широка или твърде тясна. Internet Explorer не поддържа тези свойства. Трябва да се настрои на фиксирана ширина.

    Тъй като елементът #centered е настроен на position:relative, можем да използваме абсолютното позициониране на елементите в него. След това задайте overflow:auto; за елемента #content, така че да се показват ленти за превъртане, ако няма съдържание, което да се побере.

    Стъпка 3

    И последното нещо, което ще направим, е да добавим малко стил, за да направим страницата да изглежда малко по-привлекателна. Да започнем с менюто.

    #nav ul ( стил на списък: няма; подложка: 0; поле: 20px 0 0 0; отстъп на текста: 0; ) #nav li ( подложка: 0; поле: 3px; ) #nav li a ( дисплей: блок; цвят на фона: #e8e8e8; подложка: 7px; поле: 0; украса на текст: няма; цвят: #000; border-bottom: 1px плътно #bbb; подравняване на текст: надясно; ) #nav li a::after ( съдържание: """; цвят: #aaa; тегло на шрифта: удебелен; дисплей: вграден; плаващ: отдясно; поле: 0 2px 0 5px; ) #nav li a:hover, #nav li a:focus (фон: # f8f8f8; border-bottom-color: #777; ) #nav li a:hover::after ( margin: 0 0 0 7px; цвят: #f93; ) #nav li a:active ( padding: 8px 7px 6px 7px; )

    Първото нещо, което направихме, за да направим менюто да изглежда по-добре, беше да премахнем куршумите, като зададохме атрибута list-style:none и също така зададохме подложката и подложката, тъй като настройките по подразбиране варират значително между браузърите.

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

    Друго интересно нещо, което използвахме за менютата, са псевдо-класовете :before и :after. Те ви позволяват да добавите нещо преди и след елемент. то добър начиндобавете икони или символи като стрелка в края на всяка връзка. Този трик не работи в Internet Explorer 7 и по-стари версии.

    Стъпка 4

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

    #centered (-webkit-border-radius: 8px; -moz-border-radius: 8px; border-radius: 8px; ) h1, h2, h3, h4, h5, h6 (семейство шрифтове: Helvetica, Arial, sans- сериф; тегло на шрифта: нормално; цвят: #666; ) h1 (цвят: #f93; долна граница: 1px плътен #ddd; разстояние между буквите: -0,05em; тегло на шрифта: удебелен; поле отгоре: 0; padding-top: 0; ) #bottom (padding: 10px; font-size: 0.7em; color: #f03; ) #logo (font-size: 2em; text-align: center; color: #999; ) #logo силен (тегло на шрифта: нормално;) #logo span (дисплей: блок; размер на шрифта: 4em; височина на реда: 0,7em; цвят: #666;) p, h2, h3 (височина на реда: 1,6em;) a ( цвят: #f03; )

    В тези стилове задаваме заоблени ъгли за елемента #centered. В CSS3 това ще бъде отговорно свойство border-radius. Това все още не се изпълнява от някои браузъри, освен ако не използвате префиксите -moz и -webkit за Mozilla Firefoxи Safari/Webkit.

    Съвместимост

    Както може би се досещате, основният източник на проблеми със съвместимостта е Internet Explorer:

    • Елементът #floater трябва да бъде зададен на ширина
    • Допълнителна подложка около менютата в IE 6

    237152 гледания