5/18: list-style-type не наследуется

Для решения нужно задать
.block2 ul {
list-style-type: square;
}
Тут все работает, кружочки меняются на квадратики.

А зачем здесь нужно ul, если list-style-type наследуется? (Я проверила в стандарте CSS.)
Пишем
.block2 {
list-style-type: square;
}
Кружочки возвращаются!
Что здесь не так?

Мой браузер Firefox, chromium ведет себя так же.

Дело в том, что list-style-type наследуется только элементами с типом отображения list-item, то есть li, ol, ul.

А вот, например color наследуется абсолютно всеми:

Так что ul обязателен, потому что .block2 - это класс от дива, который не относится к list-item. Вот если бы было ul class=“block2”, то все бы получилось.

2 лайка

То есть для того, чтобы продемонстрировать, что list-style-type наследуется, нужен вложенный список, например

'<ul>
 <li>            
  <ul>      
   <li>blabla</li>       
   <li>blabla</li>     
  </ul>
 </li>
 <li class="demo-inherit">   
  <ul>  
   <li>blabla</li>   
   <li>blabla</li>  
  </ul> 
</li>   
</ul>`

И определить
.demo-inherit { list-style-type: square; }

Можно об этом как-то сообщить создателям курса?

Не обязательно вложенный. list-style-type может наследоваться, если это просто упорядоченный или неупорядоченный список.

<ol class="demo-inherit">
  <li>Раз</li>
  <li>Два</li>
</ol>

<ul class="demo-inherit">
  <li>Раз</li>
  <li>Два</li>
</ul>

Не знаю, можете написать им в поддержку. А что именно вы хотите сообщить? Ведь все вроде бы работает как надо :slight_smile:

1 лайк

Мне кажется, пример в курсе демонстрирует само свойство, но не его наследование.
Как вы думаете?

Возможно. А может они просто хотели, что б мы изучили стандарт CSS вдоль и поперек))

Проверила код, который написала выше.
Все равно не наследуется!
Там, где стоит class="demo-inherit", делает квадратики, а уровнем ниже — кружочки.
Почему?

Какой код у вас?

Как в 3-ем комментарии, естественно, вставлено в <html> и <body>.

`

list-style-type наследуется, если вы задаете его для ul. Ваш класс написан для li.

1 лайк

Проверила, не работает.
Верхний уровень маркируется квадратиками, а следующий — кружочками (пустыми), как раньше.

Полный вариант используемого кода, пожалуйста. И html, и css.

`<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="utf-8">
    <title>Тест наследования</title>
 </head>
<body>
    <ul class="demo-inherit">
        <li>
            <ul>         
            <li>blabla</li>       
            <li>blabla</li>     
            </ul>
         </li>
         <li>   
            <ul>  
                <li>blabla</li>   
                <li>blabla</li>  
            </ul> 
         </li>   
    </ul>
</body>
`

CSS:
.demo-inherit { list-style-type: square; }

По умолчанию для всех ul маркерами являются кружочки. С помощью класса, который вы задали, вы изменяете маркеры на квадратики только у списка с этим классом. Хотите поменять все - задайте свойство list-style-type просто для ul.

Я хочу поменять не все, а только вложенные в элемент с class="demo-inherit".
Я хочу видеть наследование свойства list-style-type.
Получается, если задать это свойство для <ul class="demo-inherit">, оно наследуется только элементами <li> первого уровня, а потом это наследование прерывается. То есть это какое-то другое наследование?
Для сравнения, если задать свойства шрифта .divу, то эти свойства унаследуют элементы любых уровней вложенности.

Напишите так тогда:
.demo-inherit ul {
list-style-type: square;
}

Тогда это не наследование, а задание свойства с помощью селектора — всем элементам ul внутри элемента класса "demo-inherit". И верхнему элементу ul нужно задавать это свойство отдельно.

Ну, правильно. Задаете для ul, а маркеры у li появляются…
Моих слов уже не хватает тут. Пусть еще кто-нибудь попытается донести мысль, если захочет.

Я задаю для ul верхнего уровня. Маркеры появляются у его детей li. Теперь внутри этих li есть вложенные ul. И они у своих родителей li маркеры не наследуют.