Alexander Dichev Weblog Home
  Блог              
  Времето              
  Панорами              
  Галерия              
  Директория              
  Уебдизайн              
  Контакт              
 
 
Weblog
 

        Дичев Уеблог  

Box Model Hack

Публикувано на 2008-04-17 в категория Уеб дизайн.

« NextGEN Gallery на български | Subaru Impreza WRX STI 2008 »




Оригиналът на тази страница на английски език се намира на адрес:
http://tantek.com/CSS/Examples/boxmodelhack.html.

Boxtest

Това е обикновен div с клас "boxtest".

Той има рамка (border) 20px, отстояние (padding) 30px и ширина (width) 300px.

div.boxtest { 
  border:20px solid;
  padding:30px;
  background:#ffc;
  width:300px;
}

Общата ширина, включваща рамката и отстоянието, би трябвало да е 400 пиксела.

20+30+300+30+20 = 400

Браузъри, които интерпретират грешно CSS1 box модела, поставяйки рамката и отстоянието вътре в оказаната ширина ще покажат като резултат обща ширина само 300px и ширина на съдържанието 200px.

300-20-30-30-20 = 200

Червеното и синьото поле по-долу са представени за сравнение. Този div (включително и рамката му) трябва да е с ширина като на синьото поле.

 
 

Content

Това е обикновен div с клас "content".

Стилът на този div е почти идентичен с този на div клас "boxtest":

div.content { 
  border:20px solid;
  padding:30px;
  background:#ffc;
}

с едно важно допълнение. Има втора дефиниция на стила, която коригира CSS parsing bug в IE5/Windows и IE5.5/Windows и прилага ширината (width), преди по-късно отново да се презапише.

div.content {
  width:400px; 
  voice-family: "\"}\""; 
  voice-family:inherit;
  width:300px;
} 

Този div (включително с рамката си) би трябвало да е широк, колкото синьото поле, дори при IE5/Windows и IE5.5/Windows.

В допълнение добавяме още едно правило веднага след по-горното, за да помогне на браузъри, които поддържат CSS2 селектори и CSS box модела, но страдат от същия бъг при парсване както IE5.x/Windows споменат по-горе. Авторът го нарича "be nice to Opera 5" правило. Убедете се, че не сте оставили празно място от двете страни на ‘>’.

html>body .content {
  width:300px;
} 

Най-накрая обърнете внимание на това, че браузърите страдащи от бъга при парсване, проявяващ се при "\"}\"" стойност, потенциално могат да игнорират въпросната дефиниция, така че "be nice to Opera 5" правилото служи да помогне за откриване на подобни агенти със странно поведение при парсването, още в контекста на самия стил (style sheet).

За демонстрация на това, че това CSS парсване е поправено във въпросния момент, е добавено още едно правило веднага след по-горното, за да изясни нагледно казаното досега.

p.ruletest { color: blue }

Този параграф има class="ruletest" и затова трябва да е оцветен в синьо. Ако е оцветен в червено означава, че по-ранното правило (което би трябвало да е предефинирано после) продължава да важи. Забележете, че последното правило не е необдимо и е добавено само за да покаже, че ефекта на по-горе описания box model hack е опстигнат и правилата след прилагането му са изчистени.

Приложение

Когато не е необходимо, избягвайте ?xml въведение в документа.

20020404 Prerit Bhakta пише, че ако използвате
?xml въведение:

<?xml version="1.0"?>

IE6/Windows използва quirky box модел (вграден стил по подразбиране).

Поради това, че ?xml пролога не е задължителен, авторът препоръчва да не се използва.

Валидирайте стиловете си като медия независими файлове.

20020903 Jonathan Horn пише, че W3C CSS валидатора намира грешка, когато ‘voice-family’ свойството се използва в ’screen’ style sheet.

Авторът е отбелязал в коментар към сайта mezzoblue на Dave Shea, че това е грешка на самия W3C CSS ваалидатор. Валидаторът трябва да рапортува предупреждение, а не грешка, когато се използват неподдържани от дефинираната медия свойства и това е докладвано на W3C:

Препоръка от автора: Валидирайте стила си като медия-независим файл за да сте сигурни, че използвате валиден CSS и тогава го импортирайте (@import) в медия-зависим елемент ако е необходимо.

This page is licensed under a Creative Commons License.



Тагове: , ,

Subsribe to feeds Не забравяйте да се абонирате за RSS новини от блога ми.

Add This! del.icio.us Digg.com StumbleUpon.com Technorati.com   Dao.bg Ping.bg Pipe.bg Svejo.net Web-bg.com






Вашият коментар:
(Моля, пишете на Кирилица!)

Текст за разпознаване Моля, въведете 5-те символа от картинката.
Цифри от 0 до 9 и букви от A до F.




 Предвижи се до началото на тази страница. (Горе)      Отиди в началото на този уебсайт.      Добави тази страница в списъка ми с Favorites. (Ctrl+D)



Блог   Времето   Панорами   Галерия   Уебдизайн   Директория   Контакт

© 2008 - Дичев, Александър - България, Варна - Credits -
Panoramas | Gallery | Link popularity | World time | Forecast | Weather | Moon
Home | Sitemap | Blogmap | Dirmap

10 x visitors online online