Jump to content
  • 0

Какая разница?


tigrus2014
 Share

Question

Здравствуйте! Подскажите пожалуйста. Вот не могу понять... К примеру есть маркированный список.

<div class="menu"><ul><li><a href="#">Ссылка 1</a></li><li><a href="#">Ссылка 2</a></li><li><a href="#">Ссылка 3</a></li></ul></div>

Дальше css код

.menu li {какой-то CSS стиль}

То есть ВСЕМ элементам li класса menu задаём "какой-то стиль" ? Верно?

.menu ul li {какой-то CSS стиль}

А тут что? Мы ведь по сути к тем же спискам li обращаемся? Зачем тут ul?

Link to comment
Share on other sites

17 answers to this question

Recommended Posts

  • 0

я приведу пример как в данном случае можно обратится к <a>

a {}li a {}ul a {}ul li a {}div a {}div ul a {}div ul li a {}div li a {}.menu a {}.menu li a {}.menu ul li a {}.menu ul a {}

может что-то упустил, но не суть важно.

 

Дело в том что обратится к <a> существует множество путей, а вот какой именно выбрать -- зависит от конкретной задачи и конкретного кода.

Link to comment
Share on other sites

  • 0

грубо говоря, вы обращаетесь к элементу через doom, если к примеру была бы иная структура, типа:

<div class="menu">    <p><ul><li><a href="#">Ссылка 1</a></li><li><a href="#">Ссылка 2</a></li><li><a href="#">Ссылка 3</a></li></ul>    </p></div>

и

<div class="menu">    <div><ul><li><a href="#">Ссылка 1</a></li><li><a href="#">Ссылка 2</a></li><li><a href="#">Ссылка 3</a></li></ul>    </div></div>

то в .css как бы вы обратились к первому блоку меню и как ко второму?

но по сути ul в .css в вашем примере может и не быть, он не обязателен, это просто предусмотрено спецификацией.

это как в зданиях: есть пожарный выход и огнетушитель, но не пользоваться же ими каждый день?!

Link to comment
Share on other sites

  • 0

грубо говоря, вы обращаетесь к элементу через doom, если к примеру была бы иная структура, типа:

<div class="menu">    <p><ul><li><a href="#">Ссылка 1</a></li><li><a href="#">Ссылка 2</a></li><li><a href="#">Ссылка 3</a></li></ul>    </p></div>

и

<div class="menu">    <div><ul><li><a href="#">Ссылка 1</a></li><li><a href="#">Ссылка 2</a></li><li><a href="#">Ссылка 3</a></li></ul>    </div></div>

то в .css как бы вы обратились к первому блоку меню и как ко второму?

но по сути ul в .css в вашем примере может и не быть, он не обязателен, это просто предусмотрено спецификацией.

это как в зданиях: есть пожарный выход и огнетушитель, но не пользоваться же ими каждый день?!

Но если мы пишем .menu ul li ,  то свойство к .menu и к ul и к li применится? Или только к Li? У меня собственно такая история. Взял картинку JPG из инета с сайтом., пытаюсь сверстать меню как там.  Проблема в том,, что первые два пункта меню отображаются другим цветом, шрифт другой и отступы между ними другие. Я этим двум li задал одинаковые классы Остальные форматируются через menu ul и menu ll. Вроде делал всё правильно, но проблемы с бекграундом этих двух пунктов,... со всем короче. :unsure:  Понимаю что дело в наследовании, но.... как следует НА ПРАКТИКЕ наследования не понимаю :rofl: И ещё... Кто-то пробовал брать картинку бекграундом и по ней всё выстраивать, естественно в HtML и CSS (не блоки с картинками)? Но всмысле вместо сетки? :rofl:  Сработает такое?

Edited by tigrus2014
Link to comment
Share on other sites

  • 0

Вкладывать <ul> в <p> не надо, rus, зачем ты так?

да собственно хотел какой-нибудь пример привести, а что?

<p> как и <ul> - блочные элементы, кто-то мешает блочный в блочный вставлять?

Link to comment
Share on other sites

  • 0

если к примеру была бы иная структура, типа:

<div class="menu">

<p>

<ul>

<li><a href="#">Ссылка 1</a></li>

<li><a href="#">Ссылка 2</a></li>

<li><a href="#">Ссылка 3</a></li>

</ul>

</p>

</div>

 

Неа. Не была бы :)

 

 

между .menu ul li и .menu li разницы нет никакой вообще, т.к. <li> без <ul> не встретится никогда.

 

<li> может встретиться в <ol> :). И минимальная (на последнюю единичку), но всё же разница в специфичности.

 

 

<p> как и <ul> - блочные элементы, кто-то мешает блочный в блочный вставлять?

 

Блочные и строчные были в HTML4, и это было ошибкой. В HTML5 есть потоковые, фразовые, интерактивные и т.п., но вообще у каждого своя Content model. Случай с <p> - самый явный пример, почему делить элементы в HTML на блочные и строчные плохо.

Edited by SelenIT
  • Like 1
Link to comment
Share on other sites

  • 0

 

Вкладывать <ul> в <p> не надо, rus, зачем ты так?

да собственно хотел какой-нибудь пример привести, а что?

<p> как и <ul> - блочные элементы, кто-то мешает блочный в блочный вставлять?

 

Никто не мешает! Но мне ЛИЧНО сдаётся, что это всё равно что писать верблюд,  верблюд жует колючку. Вместо верблюд жуёт колючку. :unsure: И тот и тот блочный и у обоих свойства. Что такого в теги <p> чего нет в <ul>? Что касаемо моего примера мне важно знать как в моем примере происходит наследование.? А потом уже смотреть на приоритетность и т.д.  Я отдельно задавал свойства .menu ul и menu il Дык может их объеденить в menu ul ii?

Link to comment
Share on other sites

  • 0

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

Ок. Вот такой пример тогда что бы все соотв. стандартам:

<div class="menu"><p><a href="#">Ссылка 1</a></p><div><a href="#">Ссылка 1</a></div></div>
.menu a {...style... // для всех тегов a}.menu p a {...style... // для a который в p}.menu div a {...style... // для a который в div}
Link to comment
Share on other sites

  • 0
вы просто в одном случае обращаетесь к солдату напрямую, а в другом через сержанта.
.  Не знаю... Вот как я мыслю.. Если мы пишем .menu ui li и задаём бекграунд в css... У нас получится что .menu  с бекграундом, ui с ним же и все последующие li с ним же?  То есть бакгроунд  у трёх тегов и у остальных li из этого списка....?  Или я ошибаюсь?
Link to comment
Share on other sites

  • 0
Если мы пишем .menu ui li и задаём бекграунд в css...
.menu ul li {background;silver;}

 серый фон у всех li, которые являются потомками ul, который является потомком любого элемента с классом menu

.menu,ul,li {  background;silver;}

Серый фон у всех элементов  классом menu, у всех элементов ul, у всех элементов li.

http://htmlbook.ru/samcss/selektory-tegov - начните с изучения этой темы и далее по-порядку.

Link to comment
Share on other sites

  • 0

я вам привел пример на основе обращения между рядовыми и офицерами в армии - для вашего понимания.

по вашему все что прапорщик через сержанта передал солдату, сержанту на пару делать с ним?

Link to comment
Share on other sites

  • 0

т.е. в данном случае это просто не семантично?

Дело не в семантичности. Спека напрямую запрещает вкладывать что-то в абзацы помимо строк.

Тег <p> является самозакрывающимся. Т.е. для некоторых доктайпов закрытие его </p> не является обязательным. И он закроется сразу, как встретит что-то, что не является строкой.

http://clip2net.com/s/iXKlHz

http://jsfiddle.net/fainz777/LaL569wc/

  • Like 1
Link to comment
Share on other sites

  • 0
для некоторых доктайпов закрытие его не является обязательным

Точнее, для любого HTML (1-5).

 

В X(HT)ML нет неявного закрытия по построению языка, но работает это только при полноценном XML-парсинге (application/xhtml+xml и т.п.). При text/html де-факто всё равно будет неявное закрытие.

  • Like 1
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