Translate

Поиск по этому блогу

Показаны сообщения с ярлыком index. Показать все сообщения
Показаны сообщения с ярлыком index. Показать все сообщения

пятница, 1 июня 2018 г.

Скрыть / Показать содержимое поля ввода.

Довольно часто бывает необходимость добавить некий функционал полю ввода. Например - срыть / показать пароль пользователю, при вводе данных. Это значительно облегчает введение данных, особенно в случаях неисправности клавиатуры пользователя (западают кнопки, не пропечатываются, или не работает Caps или Shift.В общем, вещь не только привлекательная, но и порой, даже нужная!




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

Без долгих предисловий.

Рассмотрим вариант самого простого функционала - просто показать / скрыть пароль кликом на кнопку:

Вариант 1:самый простой.


Меняется только надпись на кнопке.
В файле HTML ничего особенного. Просто поле ввода пароля и кнопка. Им добавлены идентификаторы - id, для того, чтобы можно было с ними работать при помощи JavaScript.

JavaScript код я не стал выносить в отдельный файл и записал его здесь же.

Здесь мы получаем доступ к полю ввода и кнопке. Сохраняем их в глобальные переменные для того, чтобы каждый раз по клику не получать доступ - что является ресурсно затратной операцией.

На кнопку вешаем событие - click и запускаем функцию.

Внутри функции мы проверяем значение атрибута type у элемента input. Если это password, то мы меняем его на атрибут text, и наоборот.

Заодно и поменяли одержимое (название) кнопки button.

Можно это не делать, если не хотите добавлять достаточно затратную операцию .innerHTML. Для этого достаточно удалить код отмеченный красным.

Ниже полностью код файла index.html

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>

</head>
<body>
 <p>Enter the Password: <input type="password" id="show1"></p>
 <button id="show">Show password</button>

 <script>
  var input = document.getElementById("show1");
  var button = document.getElementById("show");
  button.onclick = show;

  function show () {
   if(input.getAttribute('type') == 'password') {
    input.removeAttribute('type');
    input.setAttribute('type', 'text');
    button.innerHTML='Hide password';

   } else {
    input.removeAttribute('type');
    input.setAttribute('type', 'password');
    button.innerHTML='Show password';

   }
  }
 </script> 
</body>
</html>


Вариант с иконкой.


Смена надписи на кнопке и иконки в любой части кода

Идем на сайт Font Awesome и выбираем понравившиеся иконки.

Подключаем Font Awesome через CDN в нашем хедере.

Добавляем одну иконку на страницу.

Например: <i id="i" class="far fa-eye"></i>

Теперь мы будем менять не только атрибут, но и класс элемента i, поэтому нам нужно добавить элементу идентификатор id

Остальное здесь все почти точно так же.

Ниже полностью код файла index.html


        <!DOCTYPE html>
 <html lang="en">
 <head>
  <meta charset="UTF-8">
  <title>Document</title>
  <!-- Font - Awesome -->
   <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.13/css/all.css" integrity="sha384-DNOHZ68U8hZfKXOrtjWvjxusGo9WQnrNx2sqG0tfsghAvtVlRW3tvkXWZh58N9jp" crossorigin="anonymous">
 </head>
 <body>
  <!-- <i class="far fa-eye-slash"></i> вторая иконка закомментированна-->
  <p>Enter the Password: <input type="password" id="show1"></p>
  <button id="show">Show password</button><i id="i" class="far fa-eye"></i>
  
  <script>
   var button = document.getElementById("show");
   button.onclick = show;
   var input = document.getElementById("show1");
   var icon = document.getElementById("i");
   function show () {
    if(input.getAttribute('type') == 'password') {
     input.removeAttribute('type');
     input.setAttribute('type', 'text');
     button.innerHTML='Hide password';
     icon.className = 'far fa-eye-slash';
    } else {
     input.removeAttribute('type');
     input.setAttribute('type', 'password');
     button.innerHTML='Show password';
     icon.className = 'far fa-eye';
    }
  }
 </script>
 </body>
 </html>



Несомненный плюс этого метода, это то, что иконку можно разместить в любой части сайта. Все примеры, я намеренно привожу без CSS, потому как это добавит вам простор для различных способов стилизации и оформления документа.

В этом коде все будет работать так как показано на картинке, но стоит помнить, что класс мы меняем новым свойством браузера, которое не поддерживается браузером IE < 10 версии.



В таких случаях можно использовать jquery или вариант ниже.

Третий вариант



Смена надписи и иконки внутри кнопки

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

Ниже полностью код файла index.html


 <!DOCTYPE html>
 <html lang="en">
 <head>
  <meta charset="UTF-8">
  <title>Document</title>
  <!-- Font - Awesome -->
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.13/css/all.css" integrity="sha384-DNOHZ68U8hZfKXOrtjWvjxusGo9WQnrNx2sqG0tfsghAvtVlRW3tvkXWZh58N9jp" crossorigin="anonymous">
  <!-- your file js -->
  <script src="main.js" defer></script>
 </head>
 <body>

  <p>Enter the Password: <input type="password" id="show1"></p>
  <button id="show">Show password  <i id="i" class="far fa-eye"></i></button>
  
  <script>
   var button = document.getElementById("show");
   button.onclick = show;
   var input = document.getElementById("show1");
   var icon = document.getElementById("i");
   function show () {
    if(input.getAttribute('type') == 'password') {
     input.removeAttribute('type');
     input.setAttribute('type', 'text');
     button.innerHTML='Hide password  <i id="i" class="far fa-eye-slash">';
    } else {
     input.removeAttribute('type');
     input.setAttribute('type', 'password');
     button.innerHTML='Show password  <i id="i" class="far fa-eye">';
    }
   }
  </script>
 </body>
 </html>





Вариант с подменой вводимых символов.

Приведу такой вариант просто для информации. Если честно, то совершенно не могу представить, где он может пригодиться.

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

То есть. Пользователь вводит, например - vvvvvvvvv, а в поле ввода видит - ZfhEysUFKk.
Точно. как на картинке ниже.



Для этого мы сохраняем то что ввел пользователь в переменную str, а вместо этого в this.value выводим случайный символ, полученный путем генерации случайного числа (от 65 до 122 - потому как это цифровое значение символов в разных регистрах разрешенных для паролей).

Затем, мы из случайного числа генерируем символ - String.fromCharCode(); И уже этот символ выводим в поле ввода присвоив его переменной this.value Здесь приведу сам js скрипт


        var str =  "";  // то что ввел юзер
 document.getElementById("test").onkeypress = function (event) {
  // то что ввел юзер
  // var str = this.value;
  str = str + event.key;
  console.log(str);

  // вывод в инпут случайных символов
  this.value += String.fromCharCode(getRandomInt(65, 122));
  // запрет вывода в инпут того что вводит пользователь 
  return false;
 }
 // функция генерации случайного числа от - до
 function getRandomInt(min, max) {
   return Math.floor(Math.random() * (max - min)) + min;
 }



                                                                                                                                                             

пятница, 12 мая 2017 г.

Как убрать расширение файла из адресной строки

Очень часто бывает необходимо избавиться от расширения файла в адресной строке браузера.
При разработке сайта, даже на локальном сервере, это можно сделать очень просто.
Идем в корневую директорию сайта на локальном сервере и в папке с названием вашего сайта создаем файл .htaccess
В нем указываем домашнюю страницу, то есть ту, которая будет загружаться сразу. Это может быть любой файл, а не обязательно index.html
Например:home.html. В данном случае нам просто нужно добавить в наш .htaccess файл вот такую строчку:

DirectoryIndex home.html Вот и все. Теперь у вас будет вот так:
                                                                                                                                                             

суббота, 9 апреля 2016 г.

Текст CSS. Выравнивание текста, цвет текста, подчеркивание в CSS и прочее.

           Подключение CSS

Для того, чтобы подключить к нашему готовому документы HTML таблице стилей мы идем в Notepad++ и нажимаем «Файл», «Новый»(Ctrl+N) и «Сохранить как». После этого нам будет предложено сохранить новый файл в папке. Для этого, я обычно заранее создаю папку в директории - www. и называю ее style.css . В эту папку сохраняем наш файл выбрав для него любое название, но расширение css. Теперь идем в наш HTML документ и внутри тега  <head>  прописываем следующий код:

<link href= “css/style.csstype=”text/cssrel=”stylesheet”>


Вместо
css/style.css – у вас могут быть любые другие значения и названия, но расширение css- обязательно.
Все остальное тоже без изменения. К одному документу можно подключить несколько файлов и наоборот.

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

Селекторы на основе тегов.

Они имеют такое же название, как и теги. Например:

p {
color: #010101;
}


#header {
color: #010101;
}

.new{
color: #010101;
}

#header – селектор по id. Для того, чтобы он сработал нам нужно в HTML документе прописать идентификатор – id= “header” Его можно задать для любой части документа. Дать ему любое название из латинских букв, но нельзя начинать название с цифр.  Название идентификатора вы можете придумать сами, произвольно.
.new- селектор по классу. Его задают в теле HTML документа, присваивая класс.
<p class= "new4"> -это тег тоже одинарный и его закрывать не требуется, как и  (id) идентификатор.
Бывают случаи,  когда нам нужно задать одинаковые параметры различным участкам текста. В этом случае мы воспользуемся групповым селектором, где они прописываются через запятую. Например:

p, #header, .new{
color: #121212;
}

Селекторы  предок – потомок.

Для того. чтобы в этом легко было разобраться, нужно представить устройство самого HTML документа. Как можно видеть из схемы, но имеет древовидную структуру. Где все элементы, так или иначе, связаны между собой. Например : 

<body>  является потомком <html> , а тот соответственно его родителем. <img> – потомок <а>, а тот в свою очередь <body> и тд. Если вы представите себе это, то вам будет легко добраться для нужного вам тега и изменить только определенную часть документа.
Записываются такие селекторы таким образом:
Родитель и через пробел потомок. Например:

ul li {
color: #434343;
}

Псевдоселекторы.

Они имеют большее отношение к ссылкам в документе. Они отвечают за цвет ссылок в различных ее состояниях Четыре состояния ссылок:( новая, наведение курсора, щелчок, посещенная). Они должны записываться в документе в приведенной ниже последовательности.


1)новая
         a:link{
color: #010101;
            }
2) Посещенная
a:visited{
color: #234353
}

3)Наведение курсором
a:hover{
color: #444543
}

4)Активная – во время щелчка
a:active{
color: #787878;
}
А если просто записать

a:{
color: #787878;
}
То это будет цвет ссылки для ВСЕХ состояний.

Изменить шрифт текста

Для этого существует значение селектора:
 font-family: Tahoma, Verdona;
Значение шрифтов можно задавать разные, но стоит помнить, что не все браузеры могут корректно отображать все шрифты. Для надежности стоит воспользоваться сайтом:
Здесь вы можете выбрать один или даже несколько шрифтов, прописав их через запятую.

Стоит отметить, что все шрифты можно условно разделить на группы :
1) sans-serif – без засечек (
Tahoma, Verdona)
2) serif- с засечками (Times New Roman)
3) monospace – (Lucida Console).С одинаковой длиной всех букв. Этот шрифт в основном используется, для специальных текстов отображающих написание программ и тегов.
Следует запомнить, что в ранних версиях HTML, названия шрифтов, состоящих из двух и  более слов, следует писать в двойных кавычках!

Размер шрифта.

Его указывают с помощью font-size

1) В процентах -100% (по умолчанию). Метод хорош для изменения маштабирования страницы пользователем. Сохраняет все пропорции и часто используется.

2)em – условные единицы (1 em – по умолчанию) Так же как и проценты. 1,1=110%

3) px – в пикселях (по номиналу – 16 px)

4) pt – пункты. Это пришло из типографии. Один пункт = 1/72 дюйма. 10 pt = примерно 3,5 мм.

5) ключевые слова:
   а)  
small - маленький- 80%
   б)  medium - средний – 100%
   в large - большой – 120%
Бывают и такие обозначения - xlarge, xxlarge, xsmall, xxsmal и так далее, но они редко используются.

Курсив в CSS

font-style: italic;
Задать его можно практически любому элементу через простые действия. В нужном месте HTML

<span class= “new1”>bbbbb</span>
Для абзацев:
<p class= “new1”>bbbb</p>


.new{
font-style: italic;
}

Жирность тексту задается еще проще

Стоит только прописать  font-weight:normal ;
 или (bold или значение100-900). Стоит помнить, что более 700(это уже полужирный) современные браузеры не поддерживают, а потому, лучше задавать просто bold.

Декорирование текста.

Атрибут: text-decoration:
Можно задать подчеркивание сверху: overline
Снизу: underline
Зачеркивание текста: line-throught
Пример перечеркивания курсива.

.new{
font-style: italic;
text-decoration: line-throught;
}

Часто бывает необходимо убрать подчеркивание с ссылок, которые подчеркнуты по умолчанию. Сделать это очень просто : text-decoration: none;
Это нужно прописать отдельно для ссылок:

a {
        text-decoration: none;
}

 Выравнивание текста.

О выравнивании заголовка по центру блога, вы можете прочитать в моем посте здесь.Вы уже знаете, что для этого есть text-align:left ; (right; center; justify)
Стоит остановиться на значении
в примере:


.new4 {
        text-align: justify;
}

В этом примере выравнивание абзаца по всей ширине. То есть за счет незаметного увеличения интервала между словами.


Красная строка

text-indent: 35px;
Значение задаем в пикселях , в данном случае.


Межстрочный интервал

Line-height:normal; или 20-30-40px или 2 – коэффициент от текущего, можно задать и дробью – 1,5 (например)


Интервал между словами

word-spacing:
Для коротких слов может потребоваться интервал между буквами
letter-spacing:

Изменения регистра


text-transform:
Значения:
uppercase – все буквы большие;
lowercase – все буквы маленькие;
capitalize – все слова с заглавной буквы;                                                                                                                                                   

вторник, 29 марта 2016 г.

Введение в CSS

        Введение в CSS
В предыдущих курсах вы уже немного познакомились с CSS. В этом и последующих курсах мы разберём его детально.
Напомним, что CSS расшифровывается как «каскадные таблицы стилей». Этот язык отвечает за внешний вид HTML-страницы. Синтаксис языка достаточно прост: он состоит из селекторов и свойств.
С помощью селекторов можно сказать браузеру какие именно элементы мы хотим оформить. Свойства описывают как именно мы хотим оформить эти элементы. То есть селекторы — это снайперский прицел, а свойства — это кисть, рубанок, скальпель и перфоратор.
В курсе (здесь ссылка на курс «Структура HTML – документа» ) Структура HTML-документа были описаны различные способы подключения стилей. В этом курсе мы будем пользоваться редактором CSS.
Пример вначале страницы.
CSS-правила
Весь CSS-код состоит из повторяющихся блоков следующего вида:
селектор {
  свойство1: значение;
  свойство2: значение;
}
Такой блок называется «CSS-правило». Каждое CSS-правило содержит хотя бы один селектор и свойство.
Простейшие селекторы — это селекторы по именам тегов. С их помощью можно задать стили для всех абзацев на странице, для всех ссылок, заголовков первого уровня и так далее. Такие селекторы содержат имя тега без символов < и >. Например:
p {
  /* стили для абзацев */
}

h1 {
  /* стили для заголовков */
}

Продвинутые селекторы
К более сложным селекторам можно отнести селекторы с использованием классов и псевдоклассов.
Класс позволяет объединять разные элементы в смысловые группы и применять к ним одинаковое оформление. Например, можно создать класс «элементы с ошибкой» и задать ему красный цвет текста. Затем можно добавлять этот класс к любому HTML-тегу: абзацу, заголовку, элементу списка и так далее.
Класс тега можно задать с помощью атрибута class, который содержит имя класса (или имена классов через пробел). Пример:
<p class="help"></p>
<p class="help error"></p>
В примере у первого абзаца задан класс help, у второго абзаца заданы классы help и error.
Селектор с использованием класса задаётся так: .имя_класса. Например:
.help { ... }
.error { ... }
Более подробно об использовании селекторов, я расскажу в отдельном посте «Селекторы».
Свойства для оформления текста
В CSS существует огромное количество свойств. Их можно разбить на следующие группы:
•       оформление текста;
•       работа с размерами и отступами;
•       позиционирование элементов;
•       создание сеток;
•       декоративные: цвета, фон, тени;
•       другие.
В этом задании мы познакомимся с несколькими свойствами для оформления текста, а более подробно об этом я расскажу в посте «Оформление текста с помощью CSS». А пока что вы можете посмотреть примеры составления кода !
(ссылка на пост с кодами к «Знакомство с
CSS» пример № 1)

Свойства для задания размеров и отступов
С помощью CSS можно задавать ширину, высоту, внешние и внутренние отступы элементов, минимальную и максимальную ширину и высоту и так далее.
Все свойства, которые так или иначе влияют на размеры и отступы элементов, описываются в так называемой «Блочной модели документа». Помимо свойств для отступов и размеров в блочную модель входят свойства для описания границ и очень важное свойство display, которое определяет тип элемента (блочный, строчный и другие).
В этом примере № 2 мы познакомимся с некоторыми свойствами из блочной модели, а более подробно и полно о них я расскажу в посте «Блочная модель документа».

Позиционирование элементов.
С помощью позиционирования можно очень точно и гибко управлять расположением элементов. Позиционирование применяют для создания сложных «многослойных» интерфейсов, таких как всплывающие окна или галереи, а также для вёрстки мелких декоративных элементов.
Главным свойством для работы с позиционированием является position, которое переключает режимы позиционирования элемента. Ещё четыре свойства: top, right, bottom, left, управляют расположением элемента. И последнее свойство z-index управляет порядком слоёв.
В этом примере № 3 мы изменим стандартный режим позиционирования элемента на абсолютный и поперемещаем элемент.
Более подробно теория и практика позиционирования элементов будет рассмотрена в посте «Позиционирование».

Создание сетки страницы.
Типичный веб-сайт состоит из шапки, главного меню, блока с основным содержанием, боковых колонок, подвала. Эти блоки могут быть расположены друг под другом, в несколько колонок или ещё сложнее. Такое взаимное расположение основных блоков сайта и называют «сеткой» или «раскладкой».
Сетка может быть фиксированной или тянущейся, когда ширина блоков изменяется в зависимости от ширины браузера. Чтобы быстро и легко создавать сетки, нужно хорошо разбираться в блочной модели и позиционировании.
В этом примере № 4 мы создадим простейшую раскладку из двух колонок. А в посте «Сетки» рассмотрим приёмы создания сеток и потренируемся строить более сложные раскладки страниц.

Декоративные свойства.
Чтобы сделать страницу яркой и красивой можно использовать множество свойств: цвет текста, фон, тени, рамки, закругления и многие другие.
Работа с декоративными свойствами будет подробно рассмотрена в серии  «Фоны» и «Оформление текста с помощью CSS».
Пример создания красивых полей и кнопок вы можете увидеть на этом примере №.5

Каскадность
Напомним, что CSS расшифровывается как «каскадные таблицы стилей». Почему именно каскадные?
Всё дело в том, что стили для элемента могут быть определены в нескольких местах: внутри одного файла стилей и в разных файлах стилей.
Браузер находит все CSS-правила, затрагивающие данный элемент, а затем комбинирует их и получает итоговый список свойств для этого элемента. Комбинирование свойств производится по чётким правилам, которые опираются на приоритетность и специфичность.
Название «каскадные» появилось из-за описанного механизма комбинирования стилей из разных CSS-правил.
В этом задании мы скомбинируем стили для одного из абзацев.
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Каскадность</title>
    </head>
    <body>
        <h1>Каскадность и просветление</h1>

        <p>Каскадность — это очень мощный механизм.</p>

        <p class="truth">Веб-разработчик, постигший тайны каскадности, достигает просветления в вёрстке и становится гуру.</p>

        <p>Веб-разработчик, не стремящийся постигнуть каскадность, так и останется подмастерьем.</p>
    </body>
</html>
CSS:
p {
    outline: 2px solid rgba(0, 0, 0, 0.1);
    padding: 10px;
}

.truth {
    background-color: #dff0d8;
   
}

Каскадность. Переопределение стилей .
В предыдущем примере мы с помощью класса добавили ко второму абзацу дополнительные стили. CSS-правило для абзацев и CSS-правило для класса содержали по одному свойству. Когда мы добавили класс ко второму абзацу, в его наборе стилей стало два свойства. Вот так:
p {
  padding: 10px;
}
       +
.truth {
  background-color: #dff0d8;
}
       =
стили второго абзаца {
  padding: 10px;
  background-color: #dff0d8;
}
Свойства в CSS-правилах были разными. А что произойдёт, если в разных CSS-правилах будут совпадающие свойства? Сейчас и проверим.

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Каскадность. Переопределение стилей</title>
    </head>
    <body>
        <h1>Каскадность и просветление</h1>

        <p>Каскадность — это очень мощный механизм.</p>

        <p class="truth">Веб-разработчик, постигший тайны каскадности, достигает просветления в вёрстке и становится гуру.</p>

        <p>Веб-разработчик, не стремящийся постигнуть каскадность, так и останется подмастерьем.</p>
    </body>
</html>
CSS:
p {
    padding: 10px;
    outline: 2px solid rgba(0, 0, 0, 0.1);
    background-color: #dff0d8;
}

.truth {
    background-color: #aaddff;
   
}

Каскадность и приоритеты
Когда в предыдущем задании мы задали цвет фона для правила с классом truth, одно из свойств второго абзаца переопределилось:
p {
  padding: 10px;
  background-color: #dff0d8;
}
       +
.truth {
  background-color: #aaddff;
}
       =
стили второго абзаца {
  padding: 10px;
  background-color: #dff0d8;
  background-color: #aaddff;
}
Когда для одного и того же элемента есть несколько CSS-правил с одинаковыми свойствами, браузер использует понятия приоритетов и специфичности, чтобы выбрать значение свойства из нескольких возможных. Упрощённо, можно сказать что:
1.     CSS-правила в значении атрибута style самые приоритетные,
2.     за ними идёт селектор с id,
3.     затем селектор с классом,
4.     затем селектор с именем тега.
На самом деле, механизм определения приоритетов и специфичности более сложный. Подробно он будет описан в курсе «Наследование и каскадирование». Пока чо можно разобрать на примере № 6

Каскадность. Коктейль из классов
Похоже, вы решили головоломку! Поздравляем!
Для решения нужно было лишь переместить CSS-правило для класса green ниже CSS-правила для класса blue. Когда к одному элементу применяются несколько CSS-правил, то приоритетность этих правил определяется по их селектору. Если селекторы однотипные, как в нашем случае, то тогда более приоритетным является CSS-правило, которое расположено ниже в коде.
Резюмируем. Одному и тому же элементу можно назначать несколько классов. Благодаря механизму каскадности, CSS-правила этих классов будут комбинироваться, а при конфликте свойств будет применяться механизм приоритетов.
Назначение нескольких классов одному элементу — очень гибкий и мощный приём в арсенале веб-разработчика. Он позволяет упрощать и значительно сокращать CSS-код.
Представьте, что на макете очень много блоков с одинаковым фоном, цветом текста и отступами. Вместо того, чтобы всё время повторять CSS-свойства для этих блоков, можно создать один общий класс и использовать его в HTML-коде. А если понадобится изменить внешний вид этих блоков, то нужно будет исправить всего один класс в CSS.
Все это разобрали на примере № 7

Наследование .
Другой важный механизм CSS — это наследование. Он заключается в том, что часть стилей может передаваться от родительского элемента к дочерним (вложенным в него).
Например, все элементы внутри тега body являются дочерними по отношению к нему. Если для body в стилях задать цвет текста красным, то цвет всех остальных элементов тоже станет красным.
Ещё пример: тег ul является родительским по отношению к вложенным в него тегам li. Если задать для ul шрифт курсивом, то и внутри всех li шрифт станет курсивным.
Это хорошо видно из примера № 8
Ненаследуемые свойства.
Наследование работает не для всех свойств. Некоторые свойства применяются только к самому элементу и не переходят к его потомкам.
К таким ненаследуемым свойствам относятся: ширина, высота, отступы, режим позиционирования и другие. Согласитесь, было бы странно задать отступы для body и обнаружить, что у всех вложенных элементов тоже появились отступы.

Более подробно наследование описано в курсе «Наследование и каскадирование» и на примере № 9                                                                     
Теперь можно перейти к  посту "Выравнивание текста, цвет текста, подчеркиваниев CSS и прочее"                                                                                 


Хотите освоить самые современные методы написания React приложений? Надоели простые проекты? Нужны курсы, книги, руководства, индивидуальные занятия по React и не только? Хотите стать разработчиком полного цикла, освоить стек MERN, или вы только начинаете свой путь в программировании, и не знаете с чего начать, то пишите через форму связи, подписывайтесь на мой канал в Телеге, вступайте в группу на Facebook.Пишите мне - kolesnikovy70 почта gmail.com