Jump to content
  • 0

Разница между inline и inline-block


aaron
 Share

Question

Подскажите новичку.

Стоит задача создать горизонтальное меню.

Имеются такие строки:

ul li {

...

display:inline;

...

}

А чем отличается вышеприведенная строка от следующей:

ul li {

...

display:inline-block;

...

}

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

Пожалуй вам стоит начать с самых азов.

inline - это строковый элемент, inline-block - строчно-блочный элемент. Азы я знаю. Может даже больше, чем нужно на начальном этапе (как мне кажется).

А вот с практикой у меня дела обстоят гораздо хуже.

Пытаюсь верстать по готовому примеру. И в чужом коде увидел, что горизонтальное меню делается таким образом:

display:inline-block

Во всех учебниках и у Мержевича горизонтальное меню создается через:

display:inline

Так понимаю, что в первом случае элементы li представляют из себя блочные элементы, а во втором случае - просто строка.

В первом случае тогда мне нет необходимости дописывать:

ul li a {

display:block

}

Я правильно понимаю?

Edited by aaron
Link to comment
Share on other sites

  • 0

inline - это строковый элемент, inline-block - строчно-блочный элемент. Азы я знаю. Может даже больше, чем нужно на начальном этапе (как мне кажется).

А вот с практикой у меня дела обстоят гораздо хуже.

Пытаюсь верстать по готовому примеру. И в чужом коде увидел, что горизонтальное меню делается таким образом:

display:inline-block

Во всех учебниках и у Мержевича горизонтальное меню создается через:

display:inline

При display:inline-block элемент ведет себя, как встроенный, но его внутренняя часть форматируется так, как будто это блочный элемент. Это позволяет, например, добавить вертикальные паддинги.

Так понимаю, что в первом случае элементы li представляют из себя блочные элементы, а во втором случае - просто строка.

В первом случае тогда мне нет необходимости дописывать:

ul li a {

display:block

}

Я правильно понимаю?

Наверное, все-таки лучше действительно начать с азов, чтобы понимать, что происходит, а не заучивать "если у родителя inline, значит - у потомка display:block" (что, кстати, никак друг от друга не зависит, а только от ситуации). И вообще, не понятно откуда такой вывод сделан :)

Edited by hedgehog
Link to comment
Share on other sites

  • 0

inline - это строковый элемент, inline-block - строчно-блочный элемент. Азы я знаю. Может даже больше, чем нужно на начальном этапе (как мне кажется).

А вот с практикой у меня дела обстоят гораздо хуже.

Пытаюсь верстать по готовому примеру. И в чужом коде увидел, что горизонтальное меню делается таким образом:

display:inline-block

Во всех учебниках и у Мержевича горизонтальное меню создается через:

display:inline

При display:inline-block элемент ведет себя, как встроенный, но его внутренняя часть форматируется так, как будто это блочный элемент. Это позволяет, например, добавить вертикальные паддинги.

Так понимаю, что в первом случае элементы li представляют из себя блочные элементы, а во втором случае - просто строка.

В первом случае тогда мне нет необходимости дописывать:

ul li a {

display:block

}

Я правильно понимаю?

Наверное, все-таки лучше действительно начать с азов, чтобы понимать, что происходит, а не заучивать "если у родителя inline, значит - у потомка display:block" (что, кстати, никак друг от друга не зависит, а только от ситуации). И вообще, не понятно откуда такой вывод сделан :)

Мда... Значит, действительно еще не все знаю... Печально... (((

Link to comment
Share on other sites

  • 0
inline - это строковый элемент, inline-block - строчно-блочный элемент.

Имхо, лучше думать о нем как о внутристрочном блоке или блоке, встраиваемом (встроенном) в строку. Как картинка или кнопка.

Так понимаю, что в первом случае элементы li представляют из себя блочные элементы, а во втором случае - просто строка.

В первом случае тогда мне нет необходимости дописывать:

ul li a {

display:block

}

Я правильно понимаю?

Нет. Как раз в случае встроенных блоков дописывать это имеет смысл (если надо сделать кликабельной всю ширину пункта меню). А при inline это, как правило, бессмысленно — блок, насильно впихнутый посреди строки обычного текста, попросту разорвет ее.

Наглядный пример разницы: http://jsfiddle.net/4NrXF/

  • Like 1
Link to comment
Share on other sites

  • 0

Меня поражает тот факт, что когда учил CSS - да, было тяжеловато сначала, но потом освоил. Перечитал горы литературы (Мержевич - всю его литературу, Тиге, половину Рейчел и Мейера и еще других авторов), пересмотрел видеокурсы ("Специалист", Попов), накопал в Инете видеоуроки по верстке (хотя их и мало как таковых). Считал, что теоретически создал для себя более чем хорошую основу.

А вот попробовал самостоятельно свертать (пускай и по готовому примеру) что-то - и все! Как будто ничего и не учил, ничего и не знаю вообще. Вроде смотришь на макет - ага, здесь все просто, там так сделать, тут так.

А начинаешь делать - то одно не получается, то другое не знаешь как правильно или вообще не знаешь как сделать.

Firebug еще только хорошо помогает изучить готовый шаблон, разобраться, что к чему.

(((

Edited by aaron
Link to comment
Share on other sites

  • 0
inline - это строковый элемент, inline-block - строчно-блочный элемент.

Имхо, лучше думать о нем как о внутристрочном блоке или блоке, встраиваемом (встроенном) в строку. Как картинка или кнопка.

Так понимаю, что в первом случае элементы li представляют из себя блочные элементы, а во втором случае - просто строка.

В первом случае тогда мне нет необходимости дописывать:

ul li a {

display:block

}

Я правильно понимаю?

Нет. Как раз в случае встроенных блоков дописывать это имеет смысл (если надо сделать кликабельной всю ширину пункта меню). А при inline это, как правило, бессмысленно — блок, насильно впихнутый посреди строки обычного текста, попросту разорвет ее.

Наглядный пример разницы: http://jsfiddle.net/4NrXF/

Спасибо за простое и доступное объяснение.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy