ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Блоки в документах
         

     

    Інформатика, програмування

    Блоки в документах

    Михайло Дубаков

    Будь-який документ складається з блоків. Наприклад, основний текст, заголовки, форма пошуку, меню, новини і т.п. Всі блоки якимось чином позиціонуються на сторінці. Зазвичай для цього використовуються таблиці. Питання позиціонування і створення загальної структури сторінок ми з вами почнемо розглядати дуже скоро, а поки поговоримо про окремих блоках, які бувають на сторінках.

    Обладнання блоків річ цікава, але нас, як верстальників, в першу чергу цікавить верстка блоків. Звичайно, для унікально оформленого блоку доведеться створювати унікальний HTML-код, але все ж є досить багато універсальних прийомів, які зустрічаються часто - поруч.

    Виділення блоків

    Практично завжди сайт можна розбити на блоки. У мережі зустрічаються оригінальні сайти дизайнерів, на яких складно знайти блоки, тому що навіть меню іноді так заховано, що на його виявлення йде 5 хвилин. Але всі стандартні сайти, з якими вам і доведеться мати справу, на блоки розбити можна. На рис. 1 показана перша сторінка сайту компанії «Дизайн Артіль», яка займається веб-розробками <. Вона наведена як приклад, тому що дуже чітко видно окремі блоки.

    Рис. 1 Головна сторінка сайту www.artel.by, розбита на блоки

    Я виділив 7 блоків, на малюнку вони позначені цифрами в кружечки. Пройдімося по всім блокам:

    Блок з логотипом. Іноді його ще називають блок для бренду. Логотип зазвичай розташовується в лівому верхньому кутку.

    Блок з меню. Меню на сайті нестандартне, розташоване в три стовпчики.

    Блок новин або стрічка новин. Новини виводяться досить стандартно в один стовпчик. Кожна новина має дату та посилання «докладніше».

    Два інформаційних блоку. Один з останньою роботою, а другий з рекламою системи.

    Блок для роздруківки інформації про компанію. Звичайна форма з чекбоксами і графічної кнопкою.

    Блок підписки на новини. Поле для введення електронної адреси та графічна кнопка.

    Блок входу для клієнтів. Форма з полями для вводу логіна і пароля з графічною кнопкою.

    Дизайн сторінки на рис. 1 будується саме на оформленні окремих блоків і на невеликій кількості яскравих картинок. Так буває нечасто, тому зазвичай блоки на сторінці трохи складніше ідентифікувати.

    Ми зараз можемо як би структуровано поглянути на верстку окремої сторінки. Можна виділити два завдання:

    створення загальної структури сторінки

    створення окремих блоків

    Процес верстки в такому випадку можна розбити два етапи. На першому етапі верстальник створює структуру (каркас). Зазвичай для цього використовуються таблиці. Після того, як структура сторінки створена, можна приступати до верстки окремих блоків, які заповнюють порожній каркас.

    Я, наприклад, перемішую два етапи. Я не відразу створюю весь каркас, а тільки якусь його частину. Потім наявну частину каркаса я заповнюю блоками і переходжу до створення такої елемента каркаса. Проте на самому початку я прикидаю загальну структуру сторінки і методи її реалізації. Якщо цього не зробити, то можна натрапити на проблему, для вирішення якої потрібно повністю переробляти весь каркас.

    В як невеликого тренування давайте придумаємо каркас для сторінки, показаної на рис. 1. Видно, що блоки 1 і 2 можна винести в окрему таблицю. Взагалі існує загальне правило для табличної верстки: використовувати як можна більше окремих таблиць. Якщо весь вміст сторінки помістити в одну таблицю, то відвідувач побачить зміст тільки тоді, коли завантажиться весь вміст таблиці. Якщо ж розбити сторінки на кілька різних таблиць, то вони завантажуватимуться послідовник і відвідувач побачить деяку частину інформації раніше. Так ось, блок 1 і 2 можна винести в одну таблицю, яка може складатися з чотирьох стовпців.

    Решта блоки відмінно вкладаються в другу таблицю з трьох стовпців, вони просто самі в неї просяться, так що логічно задовольнити їх бажання. У результаті у нас вийде дві окремі таблиці, одна з яких містить блоки 1 і 2, а друга - Всі інші блоки.

    Як бачите, у наведеному прикладі продумати заздалегідь каркас сторінки дуже просто. Звичайно, подібні ситуації бувають не завжди. Іноді доводиться проводити багато часу, вирішуючи якусь принципову проблему, що стосується структури. Уява дизайнерів (особливо тих, які з HTML не знайомі) створює деколи такі шедеври, які перевести в HTML неймовірно складно.

    Отже, щоб верстати сайти, необхідно навчиться робити дві речі: створювати каркас сторінки і окремі блоки. У більшості випадків створення каркаса завдання більш складна, але винятки бувають і нерідко. Я вирішив все ж таки спочатку поговорити про окремих блоках, тому що наявних знань для цього достатньо, а для розмови про структуру сторінки - ні.

    Так як все ж таки ідентифікувати блоку на макеті, які радісний дизайнер з неприхованою гордістю передав вам на верстку? Звичайно, для цього треба знати, які взагалі види блоків бувають. Розглядом видів блоків ми зараз і займемося.

    Форми

    Форми присутні на будь-якому корпоративному сайті. Враховуючи, що професійні верстальники в основному роблять саме корпоративні сайти, нам не уникнути знайомства з формами. В основному на сайті присутні такі форми: пошук, вхід для клієнтів, підписка на розсилку, швидкий перехід по розділам за допомогою селектора. Власне, на цих прикладах ми наочно розглянемо, які бувають типи форм, як вони звичайно оформляються і, головне, як верстати. Почнемо з найпростішого - форми пошуку.

    Пошук

    Найпростіша форма пошуку складається всього з двох елементів: поля введення запиту і кнопки запуску пошуку. Найбільш звичним є розташування цих елементів на одній горизонталі: так, як показано на мал.2.

    Рис. 2 Стандартна форма пошуку

    Кнопка запуску пошуку може бути як текстової, так і графічної. Звичайна текстова кнопка реалізується ось так:

    Графічна кнопка малюється дизайнером, потім вирізається верстальником і зберігається в каталозі з іншими картинками. Як ви вже знаєте, каталог з картинками я завжди називаю i. Є в мене і стандартне назва кнопки submit, таку кнопку я зазвичай називаю go. За таких назвах графічна кнопка вставляється ось так:

    Стандартне рішення при верстці блоку форми пошуку, показаного на рис. 2, зробити таблицю з одного рядка і двох осередків. У першу комірку вставляється поле введення тексту, а у другому - кнопка. Код буде таким:

    На що треба звернути увагу? По-перше, на те, що тег варто між тегами

    і . Жоден валідатор коду не пропустить таку конструкцію і буде вас клятвено запевняти, що ні в якому разі не можна так вчинити наругу над HTML і вставляти тег в недозволених місцях. Так, не можна, але часто необхідно. Справа в тому, що браузери Internet Explorer, Mozilla і Opera мають зовсім різні точки зору на те, як треба відображати елемент . Internet Explorer впевнений, що треба зробити пристойний відступ від елемента , Opera робить відступ трохи менше, а Mozilla взагалі вважає, що ніякого відступу робити не треба. Ці невідповідності вирішуються так, як показано в коді, тобто приміщенням тега між тегами
    і . У цьому випадку відступи відсутні у всіх браузерах, що зазвичай буває необхідно.

    По-друге, в таблиці обнулені відступи і відстані між осередками. Практично завжди дизайнери прив'язують елементи до будь-якої вертикальної або горизонтальної лінії, щоб композиція була краща. Якщо не обнулити відступи, то в підсумку отримаємо два пикселя розбіжності. Звичайно, це не дуже-то і кидається в очі, але гостре око дизайнера відразу помітить розбіжність і попросить виправити. Обов'язково попросить, повірте моєму досвіду.

    По-третє, при обнулення відступів елементи форми злипаються. Проблему можна вирішити, поставивши після текстового поля нерозривний пробіл.

    В реальному житті форми рідко залишають у первозданному вигляді і все частіше пишуть на них стилі. Найбільш часто використовується стиль, які замість псевдотрехмерной рамки навколо полів створює звичайну рамку. Деякі оголошують такий стиль для всіх елементів , але я вважаю це поганою практикою, тому що рамки навколо чекбоксів виглядають жахливо. Для текстових полів я створюю окремий клас, який зазвичай називаю input. Якщо кнопка відсилання вмісту форми звичайна неграфіческая, то для неї я створюю клас submit. Наприклад, я хочу зробити рамку шириною 1 піксель темно-сірого кольору, і задати помаранчевий фон для кнопки. Стилі будуть такими:

    INPUT.input (border: 1px solid # 666)

    INPUT.submit (background: # F90; border: 1px solid # 666)

    Форма пошуку зміниться і буде виглядати значно краще.

    Рис. 3 Форма пошуку з рамками

    Іноді НЕ цьому не зупиняються. Наприклад, висота кнопки і висота поля введення трохи відрізняється. Це може дратувати естетів. Проблему легко вирішити, якщо задати однакову висоту й у поля, і у кнопки. Для завдання висоти існує властивість height.

    INPUT.input (border: 1px solid # 666; height: 21px)

    INPUT.submit (background: # F90; border: 1px solid # 666; height: 21px)

    Крім того, напис на кнопці читається неважливо. Краще змінити колір шрифту на білий і зробити його напівжирним.

    INPUT.submit (color: # FFF; font: bold 12px Verdana; background: # F90; border: 1px solid # 666; height: 21px)

    Після таких перетворень форма пошуку буде виглядати так, як показано на рис. 4.

    Рис. 4 Форма пошуку із заданою висотою і зміненим шрифтом на кнопці

    Звичайно, бувають абсолютно унікальні випадки оформлення форм, але нас вони не особливо цікавлять. Так що з пошуком закінчимо.

    Вхід для клієнтів

    Ще однією популярною формою є вхід для клієнтів. На рис. 1 така форма представлена блоком 7. Зазвичай форма складається з двох полів (логіна і пароля) і кнопки відправки. Іноді поруч вставляють посилання на сервіс «забув пароль». Користувачі дуже часто забувають свої паролі, так що подібний сервіс вкрай корисний.

    Типових розташувань елементів форми два:

    все елементи розташовуються в один рядок

    поле для введення логіна розташовується в першому рядку, а поле для введення пароля і кнопка відправки - у другому рядку (саме так зроблена форма на рис. 1)

    Давайте спочатку розглянемо перший варіант. Для нього відмінно підійде таблиця з трьох осередків. Будемо використовувати зображення в якості кнопки відправки і відразу поставимо ширину полів, за допомогою атрибуту size. Код буде простим:

    В браузері така форма буде виглядати так, як показано на рис. 5.

    Рис. 5 Проста форма входу для клієнтів

    Для повного щастя залишилося написати стилі на поля форми. Я знаю, що висота картинки рівно 19 пікселів, тому задам висоту полів теж 19 пікселів. Стиль вийде нескладним:

    INPUT.input (border: 1px solid # 666; height: 19px)

    Треба б ще назвати поля, щоб користувач знав, куди що вводити. Іноді назва поля пишуть прямо в самому полі. Для цього можна використовувати атрибут value. Крім того, нам треба задати клас input для обох полів, так що HTML-код форми трохи модифікується:

    А виглядатиме форма буде так, як показано на рис. 6

    Рис. 6 Вид форми після написання стилів

    Деякі можуть заперечити, що використовувати таблицю для верстки такої простої форми абсолютно необов'язково. Давайте спробуємо зробити якомога простіше і подивимося, що з цього вийде. Якщо прибрати, таблицю, то код стане дуже простим:

    Він відображатиметься браузером так, як показано на рис. 7.

    Рис. 7 Форма без таблиць

    Як бачите, кнопка відправки змістилася вгору, і форма виглядає дуже неакуратно. Жоден дизайнер не пропустить таку помилку і обов'язково попросить виправити. Більш того, ні один пристойний верстальник не повинен робити такі помилки.

    Проблема виникає через те, що не можна здійснити вирівнювання елементів по вертикалі, якщо вони не вставлені у комірки таблиці. Проблема, насправді, глобальна, і саме вона є причиною використання таблиць навіть у таких простих випадках. Що саме противне, навіть каскадні таблиці стилів не предоставляютхорошей можливості вирівнювання блоків по вертикалі! Тому все одно доведеться користуватися звичайними таблицями.

    Перейдемо до другого типу форми входу для клієнтів. Таблиць теж буде досить простий. Перший рядок містить одну об'єднану клітинку з полем для логіна, а друга рядок містить два відділення:

    Здається, що все гаразд і має працювати. І воно працює в браузері Internet Explorer, але не працює в Mozilla і Opera. Наприклад, в Mozilla форма буде виглядати так, як показано на рис. 8

    Рис. 8 Вид форми в браузері Mozilla

    Як бачите, поля злиплося через те, що відстані між осередками таблиці та відступи в осередках обнулені. Форма виглядає неважливо, тому треба як-небудь розсунути поля. Якщо прописати в таблиці атрибут cellspacing = "4", то це вирішить проблему, але зрушить всі поля на чотири пікселя праворуч. Часто це неприйнятно, тому що порушується вирівнювання елементів дизайну уздовж певної вертикалі, сторінка втрачає цілісність і може виглядати дещо незакінченою. Дизайнери відразу помічають дисонанс і страшно обурюються, що абсолютно справедливо.

    Інший варіант рішення - вставити після першого поля розпірку, тобто невидиму картинку:


    Я задав висоту картинки 4 пікселя. Зверніть увагу, що перед картинкою обов'язково повинен стояти новий рядок, тобто тег
    , інакше ніякого ефекту не буде.

    Такий варіант, в принципі, життєздатний і я ним часто користуюсь, але проблему можна вирішити і за допомогою CSS. Нам треба, щоб у першу осередку був відступ в 4 пікселя знизу, а в інших осередків не було. Логічно, що треба виділити першу клітинку і написати для неї стиль. Виділити краще за допомогою класу. Наприклад, назвемо клас expand-form. Для завдання відступів блоку в CSS існує властивість padding. Крім того, можна задавати відступи для певного боку блоку за допомогою властивостей padding-top, padding-right, padding-bottom, padding-left. У нашому випадку потрібно скористатися свойствомpadding-bottom. Стиль для класу expand-form буде дуже простим:

    . expand-form (padding-bottom: 4px)

    А до комірки таблиці з полем для логіна чіпляємо назва класу:

    Після таких перетворень поля розсунуться, і форма буде виглядати так, як показано на рис. 9

    Рис. 9 Форма входу для клієнтів після усунення злипання полів

    Як бачите, навіть з такими простими формами виникають певні проблеми. Я, наприклад, спочатку витрачав дуже багато часу на пошуки рішення. Тільки з досвідом приходить чітке знання того, як треба діяти в певній ситуації.

    Навігація

    Навігація - Це найважливіший елемент будь-якого сайту. Вона повинна чітко показувати відвідувачу, де він знаходиться і куди може потрапити. Вкрай бажано е?? е і показувати, де він вже побував. Навігація по сайту складається з кількох елементів: самі різноманітні меню, внутрішні посилання, система пошуку, карта сайту та інші допоміжні елементи. У цьому розділі ми розглянемо, які бувають елементи навігації і як вони верстати.

    Меню

    Меню присутній практично на будь-якому сайті. Неможливо собі уявити корпоративний сайт без меню. Чітку класифікацію видів меню побудувати досить складно, але перед нами такої задачі не варто. Якщо коротко, то з одного боку меню бувають вертикальні і горизонтальні, а з іншого -- текстові, графічні та змішаного типу. Складно сказати, які види меню зустрічаються частіше, але ми коротко розглянемо загальні всі типи.

    Вертикальні

    Для Спочатку розглянемо вертикальні меню і почнемо з текстового. Текстове вертикальне меню зазвичай оформляють у вигляді списку. Приклад текстового вертикального меню показаний на рис. 10

    Рис. 10 Текстове вертикальне меню на моєму сайті «Веб-анатомія»

    Зверніть увагу, що розділи, у яких є підрозділи, мають чорні кружечки, а кінцеві розділи мають білі кружечки. Таке відміну допомагає відвідувачам працювати з сайтом. Дуже швидко вони навчаються чітко визначати, чого чекати від розділу. Давайте з вами наведемо приблизно таке ж меню. Припустимо, у нас є чотири пункти меню: «Про компанію», «Продукція», «Послуги» і «Контакт». Відразу створюємо список:

    • Про компанії

    • Продукція

    • Послуги

    • Контакт

      Зазвичай на посилання в меню потрібно написати стилі, які відрізняються від стилів для звичайних посилань. Наприклад, посилання можуть відрізнятися кольором, шрифтом або не мати підкреслення. Треба б посилання в меню якось позначити. Для цього можна використовувати клас, але краще всього скористатися контекстним селектором. Ми називаємо як-небудь блок з меню (тобто ставимо блоку з меню ID), наприклад, menu, а потім пишемо стиль для всіх посилань, які знаходяться всередині блоки з id = "menu". HTML-код зміниться дуже незначно: