возврат

Ширина и высота

Вопросы

Ответы на вопросы

  1. Что понимается по стандарту под шириной и высотой элемента?

    Ответ. Под шириной и высотой элемента стандарт понимает размеры области содержимого элемента (без рамок, внутренних и внешних отступов).

  2. Назовите свойства, которые позволяют задавать ширину и высоту элемента. Какие значения могут принимать эти свойства? Какое значение работает по умолчанию? Как вычисляются проценты? К каким элементам можно применять эти свойства? Передаются ли они по наследству?

    Ответ. Ширину и высоту элемента можно задавать с помощью свойств width и height. Значения этих свойств могут задаваться в единицах размера, в процентах или принимать значение auto, которое работает по умолчанию. Проценты вычисляются относительно соответствующих размеров блока контейнера. Свойства применяются к блочным и строчным замещаемым элементам, по наследству не передаются.

  3. Как вычисляется значение auto для ширины и высоты элемента?

    Ответ. Значение auto для свойства width вычисляется так, чтобы общая ширина элемента вместе со всеми отступами и рамками точно равнялась ширине родителя (значению его свойства width). Значение auto для свойства height вычисляется по реальной высоте содержимого элемента.

  4. Можно ли задавать ширину и высоту для строчных незамещаемых элементов?

    Ответ. Можно, но эти правила будут проигнорированы.

  5. Какое свойство позволяет управлять переполнением содержимого элемента? Какие значения может принимать это свойство? Какое значение работает по умолчанию? К каким элементам можно применять это свойство? Передаётся ли оно по наследству?

    Ответ. Для управления переполнением содержимого элемента CSS предлагает свойство overflow. Возможные значения этого свойства:

    Свойство можно применять к блочным и замещаемым строчным элементам, по наследству оно не передаётся.

  6. В чём состоит проблема размеров?

    Ответ. По стандарту W3C ширина и высота относятся к содержимому блока.

    Браузеры, построенные на движке Gecko (например, Mozilla Firefox), и браузер Opera точно следуют в этом вопросе стандарту.

    А вот браузеры Internet Explorer версий 5 и 6 трактуют ширину и высоту блока по-другому. Они считают, что заданная в определении ширина и высота относится ко всему блоку в целом, исключая внешние отступы.

    Таким образом, в IE 5 и IE 6 ширина и высота блока интерпретируется как размер содержимого плюс размер внутреннего отступа и плюс размер рамки.

  7. Требуется задать блок, показанный на рисунке:

    Пример блока

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

    Ответ.

    Решением будет следующий набор CSS-определений:

    .area
    {
      background:#a7fbc0; 
      margin:15px;
      border:5px solid #4d4d4d;
      padding:20px;
      width:400px;   /* Для хороших старых по стандарту */
      \width:450px;  /* Обман для IE5 */
      w\idth:400px;  /* Для всех новых хороших по стандарту */
      height:300px;  /* Для хороших старых по стандарту */
      \height:350px; /* Обман для IE5 */
      he\ight:300px; /* Для всех новых хороших по стандарту */
    }
          

    Трюк основан на использовании символа “\” — обратной косой черты. Это допустимый символ, описанный в стандарте CSS. Он используется в качестве модификатора, меняющего специальный смысл следующего за ним знака на обычный. Если у символа нет специального смысла, то символ остаётся прежним.

    Таким образом, \width и w\idth полностью эквивалентны width.

       .area
       {
    01   width:400px;  /* Для хороших старых браузеров */
    02   \width:450px; /* Обман для IE5 */
    03   w\idth:400px; /* Для всех новых хороших браузеров */
       }  
          

    Первая строка уловки — для тех браузеров, которые работают по стандарту, но не понимают модификатора (к ним относится, например, браузер Opera 5). Эти браузеры будут рассматривать символ “\”, как обычный знак, входящий в состав имени свойства, не “узнают” width и пропустят строки 2 и 3.

    Вторая строка — для браузера IE5, который работает не по стандарту, не считает обратную косую черту модификатором в середине слова, но, по счастью, считает этот знак модификатором, если с него слово начинается. Таким образом, IE5 (и IE6, если он работает в режиме IE5) сначала прочитает 400px в первой строке, потом изменит это значение на 450px из второй строки, а третью строку проигнорирует.

    Третья строка — для совсем хороших браузеров: тех, которые работают во всём по стандарту, в том числе правильно понимают символ обратной косой черты.

    Для высоты нельзя было записать h\eight по следующей причине. Знак “\” используется и для кодирования символов 16-ричными цифрами. Если за обратной косой чертой следует один из знаков 0–9, a, b, c, d, e, f, то это воспринимается как начало 16-ричного кода.

  8. Объясните назначение декларации DOCTYPE. В каком месте кода записывается эта декларация.

    Ответ. Декларация DOCTYPE предназначена для указания соответствия кода документа одному из стандартов W3C. Браузер, в зависимости от стандарта, по-разному интерпретирует элементы на странице.

    Декларацию DOCTYPE помещают перед элементом HTML, она начинается с восклицательного знака и записывается прописными буквами.

    Варианты DOCTYPE для HTML 4.01:


  9. Как работает браузер, если декларацией DOCTYPE определён вариант Transitional?

    Ответ. Браузер считает, что код может содержать устаревшие теги. Вариант введён в целях совместимости со старыми версиями HTML.

    Декларация записывается в виде:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
              "http://www.w3.org/TR/html4/loose.dtd">
          
  10. Как работает браузер, если декларацией DOCTYPE определён вариант Frameset?

    Ответ. Браузер работает так же, как и при варианте Transitional, но допускает использование в коде фреймов.

    Декларация записывается в виде:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
              "http://www.w3.org/TR/html4/frameset.dtd">
          
  11. Как работает браузер, если декларацией DOCTYPE определён вариант Strict?

    Ответ. Браузер не допускает в коде элементов и атрибутов, помеченных W3C как «устаревшие» или «не одобряемые» (например: CENTER, FONT, S, U, align, background, bgcolor, color, size).

    Декларация записывается в виде:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
              "http://www.w3.org/TR/html4/strict.dtd">
          
  12. Расскажите алгоритм вёрстки страницы, который браузер использует по умолчанию (вёрстка потоком).

    Ответ. По умолчанию браузер выводит блочные элементы друг за другом сверху вниз. При этом ширина блочного элемента совпадает с доступной шириной родителя (его свойством width), а высота определяется по содержимому.

    Строчный элемент браузер выводит в строку, пытаясь заполнить всю ширину родительского блока. Если материал в одной строке не умещается, он переносится на следующие строки.

    Строки по умолчанию выравниваются со стороны, принятой для текущего языка (слева для русского).

    При изменении ширины окна браузер перевёрстывает страницу: ширину блоков подгоняет под новый размер, ширину строк под изменившуюся ширину содержащих их блоков. В силу этого вёрстку потоком часто называют резиновой вёрсткой.

  13. Назовите свойства, связанные с размерами в коробочной модели элемента, которые могут принимать значение auto.

    Ответ. По горизонтали это свойства:

    По вертикали это свойства:


  14. Сформулируйте правило горизонтального форматирования в потоке.

    Ответ.

    Сумма размеров горизонтальных компонентов блока в потоке всегда равна значению width родителя.

  15. Сформулируйте правило вертикального форматирования в потоке.

    Ответ.

    По вертикали блок в потоке стремится занять размер по содержимому этого блока.

  16. Как выровнять блок слева, справа, по центру?

    Ответ.

    margin-right:auto

    Выравнивание слева:

    .block 
    {
      width:350px;
      margin-right:auto;
    }
              

    margin-left:auto

    Выравнивание справа:

    .block 
    {
      width:350px;
      margin-left:auto;
    }
              

    margin-left:auto; margin-right:auto

    Если оба отступа установлены в auto, для них устанавливается одинаковый размер, и блок центрируется:

    Выравнивание по центру:

    .block
    {
      width:350px;
      margin-left:auto;
      margin-right:auto;
    }
              
  17. Как преодолеть ошибку IE5, связанную с центрированием блоков?

    Ответ. Браузеры IE пятых версий не центрируют блок способом, принятым по стандарту. Эту ошибку можно компенсировать другой ошибкой этих браузеров: по указанию text-align:center браузеры IE5 центрируют не только текст (как требует стандарт), но и блоки.

    В этом гипертекстовом документе для центрирования BODY относительно HTML применён соответствующий трюк:

    HTML
    {
      /* Центрирование BODY для IE5 */
      text-align: center; 
    }
    BODY
    {
      /* Центрирование по стандарту */
      margin: 10px auto;  
      /* Восстановление выравнивания текста слева */
      text-align: left;   
    }
              
  18. Как ведёт себя блок с width:auto?

    Ответ.

    width:auto

    Блок с автоматическим свойством width растягивается до пределов заданных отступов.

    Содержимого блока растягивается до заданных отступов:

    .block 
    { 
      width:auto; 
      margin-left:50px;
      margin-left:150px;
    }
              
Вверх вверх | возврат