Size: a a a

HTML/CSS — русскоговорящее сообщество

2020 November 06

YS

Yaroslav Sh. in HTML/CSS — русскоговорящее сообщество
vlad3k
Да, в этом случае придется поменять в двух местах. Смена класса оч редкая процедура
так же ты не учёл ссылки на другой дочерний элемент внутри первого дочернего элемента но с другим именем, тебе снова прийдётся писать внутри полное название класса (в моём код ответе хорошо видно это)
источник

IN

Igor N in HTML/CSS — русскоговорящее сообщество
Yaroslav Sh.
так же ты не учёл ссылки на другой дочерний элемент внутри первого дочернего элемента но с другим именем, тебе снова прийдётся писать внутри полное название класса (в моём код ответе хорошо видно это)
В чём-то ты прав. Но всё же читаемость в css важнее, это не js, всё же. Тут не нужны сложные вычисления
источник

v

vlad3k in HTML/CSS — русскоговорящее сообщество
Yaroslav Sh.
так же ты не учёл ссылки на другой дочерний элемент внутри первого дочернего элемента но с другим именем, тебе снова прийдётся писать внутри полное название класса (в моём код ответе хорошо видно это)
Может быть, я что-то сильно не вникал. Тебе виднее)
источник

YS

Yaroslav Sh. in HTML/CSS — русскоговорящее сообщество
Igor N
В чём-то ты прав. Но всё же читаемость в css важнее, это не js, всё же. Тут не нужны сложные вычисления
назвать переменную this сложным вычеслением это сильно. там ещё миксины есть, это что тогда? вообще взрыв?
источник

IN

Igor N in HTML/CSS — русскоговорящее сообщество
Yaroslav Sh.
назвать переменную this сложным вычеслением это сильно. там ещё миксины есть, это что тогда? вообще взрыв?
миксины это немного другое. В твоём случае заменять название класса переменной — оверхэд
источник

YS

Yaroslav Sh. in HTML/CSS — русскоговорящее сообщество
Igor N
миксины это немного другое. В твоём случае заменять название класса переменной — оверхэд
пусть будет по твоему, тебе виднее
источник

YS

Yaroslav Sh. in HTML/CSS — русскоговорящее сообщество
Igor N
миксины это немного другое. В твоём случае заменять название класса переменной — оверхэд
.block
  .block_elem1
  .block_elem2
 .block_elem3

нужно при ховере на block сделать  смену стилей для дочерних элементов, но для каждого по свои.
без использования this ты будешь писать так же как при чистом css

.block {
   width: ...
   bg: ...;
    &:hover .block_elem1 {...}
    &:hover .block_elem2 {...}
     &:hover .block_elem3 {...}
}

при использовании sass ты можешь написать это так
.block {
   width: ...
   bg: ...;

  $this: &;
  &:hover {
      #{$this}_elem1 {....}
     #{$this}_elem2 {....}
      #{$this}_elem3 {....}
 }
}

при смене названия класса в твоём случае всё рухнет, конечно если верстать лендинги или парустраничные проекты то это не пугает, но не когда что-то крупное и ты хочешь добиться уверенной модульности элементов, смена тега, смена названия блока тебя не будет пугать при грамотной стилизации, всего то добавив $this
источник

YS

Yaroslav Sh. in HTML/CSS — русскоговорящее сообщество
и если внимательно посмотреть, то первый код длинее т.к. нужно писать полное название класса, во втором случае ты добавляешь только строчку $this и всё, дальшее используешь её как переменную
источник

IN

Igor N in HTML/CSS — русскоговорящее сообщество
Yaroslav Sh.
.block
  .block_elem1
  .block_elem2
 .block_elem3

нужно при ховере на block сделать  смену стилей для дочерних элементов, но для каждого по свои.
без использования this ты будешь писать так же как при чистом css

.block {
   width: ...
   bg: ...;
    &:hover .block_elem1 {...}
    &:hover .block_elem2 {...}
     &:hover .block_elem3 {...}
}

при использовании sass ты можешь написать это так
.block {
   width: ...
   bg: ...;

  $this: &;
  &:hover {
      #{$this}_elem1 {....}
     #{$this}_elem2 {....}
      #{$this}_elem3 {....}
 }
}

при смене названия класса в твоём случае всё рухнет, конечно если верстать лендинги или парустраничные проекты то это не пугает, но не когда что-то крупное и ты хочешь добиться уверенной модульности элементов, смена тега, смена названия блока тебя не будет пугать при грамотной стилизации, всего то добавив $this
Для большого проекта и "уверенной модульности" используется js и что-нибудь вроде styled-components или подобного. css не для таких вычислений, там должно быть максимально понятно. Чтобы другой разработчик, придя в проект, понял, что за код тут.
источник

YS

Yaroslav Sh. in HTML/CSS — русскоговорящее сообщество
Igor N
Для большого проекта и "уверенной модульности" используется js и что-нибудь вроде styled-components или подобного. css не для таких вычислений, там должно быть максимально понятно. Чтобы другой разработчик, придя в проект, понял, что за код тут.
не обязательно styled-components, по чему ты думаешь что в крупных проектах только на styled-components? что мешает писать каждому компоненту отдельный файл sass? а не напрямую стили в js?
источник

v

vlad3k in HTML/CSS — русскоговорящее сообщество
Yaroslav Sh.
.block
  .block_elem1
  .block_elem2
 .block_elem3

нужно при ховере на block сделать  смену стилей для дочерних элементов, но для каждого по свои.
без использования this ты будешь писать так же как при чистом css

.block {
   width: ...
   bg: ...;
    &:hover .block_elem1 {...}
    &:hover .block_elem2 {...}
     &:hover .block_elem3 {...}
}

при использовании sass ты можешь написать это так
.block {
   width: ...
   bg: ...;

  $this: &;
  &:hover {
      #{$this}_elem1 {....}
     #{$this}_elem2 {....}
      #{$this}_elem3 {....}
 }
}

при смене названия класса в твоём случае всё рухнет, конечно если верстать лендинги или парустраничные проекты то это не пугает, но не когда что-то крупное и ты хочешь добиться уверенной модульности элементов, смена тега, смена названия блока тебя не будет пугать при грамотной стилизации, всего то добавив $this
Я просто не помню, чтобы я часто менял классы блока. И то это происходит, если я необдуманно назвал, то при ревью я его могу поменять.
И это при рефакторинге может случиться.
Вот эта статья вроде о том, что ты спрашивал: https://css-tricks.com/snippets/sass/use-sass-variable-selector/
источник

IN

Igor N in HTML/CSS — русскоговорящее сообщество
Yaroslav Sh.
не обязательно styled-components, по чему ты думаешь что в крупных проектах только на styled-components? что мешает писать каждому компоненту отдельный файл sass? а не напрямую стили в js?
Не напрямую в js, я про вычисления эти. styled-components просто как вариант привёл. И да, если у тебя такая огромная вложенность в sass, то это точно не компонентный подход.
источник

YS

Yaroslav Sh. in HTML/CSS — русскоговорящее сообщество
Igor N
Не напрямую в js, я про вычисления эти. styled-components просто как вариант привёл. И да, если у тебя такая огромная вложенность в sass, то это точно не компонентный подход.
3 вложенности это уже огромная?
источник

YS

Yaroslav Sh. in HTML/CSS — русскоговорящее сообщество
Igor N
Не напрямую в js, я про вычисления эти. styled-components просто как вариант привёл. И да, если у тебя такая огромная вложенность в sass, то это точно не компонентный подход.
styled-components пишет стили напрямую в js, ты их в js файле пишешь
источник

YS

Yaroslav Sh. in HTML/CSS — русскоговорящее сообщество
vlad3k
Я просто не помню, чтобы я часто менял классы блока. И то это происходит, если я необдуманно назвал, то при ревью я его могу поменять.
И это при рефакторинге может случиться.
Вот эта статья вроде о том, что ты спрашивал: https://css-tricks.com/snippets/sass/use-sass-variable-selector/
да, спасибо
источник

YS

Yaroslav Sh. in HTML/CSS — русскоговорящее сообщество
такая маленькая плюшка как $this столько бугурта подняла, хотя в sass есть вещи намного сложнее, теже мапы и прочее, я уже боюсь что про это скажут "ну это вообще js чистый, зачем в стилях писать"
источник

Кm

Кирилл mrDoode in HTML/CSS — русскоговорящее сообщество
На что влияет сложность scss кроме усложнения чтения программистом и временем компиляции?
источник

YS

Yaroslav Sh. in HTML/CSS — русскоговорящее сообщество
Кирилл mrDoode
На что влияет сложность scss кроме усложнения чтения программистом и временем компиляции?
открываем доку и видим примеры
источник

YS

Yaroslav Sh. in HTML/CSS — русскоговорящее сообщество
пример справа читабильнее, лучше буду писать дольше
источник

v

vlad3k in HTML/CSS — русскоговорящее сообщество
Yaroslav Sh.
открываем доку и видим примеры
Недавно на них сетку делал)
источник