Parent class child class css

Css change child css using parent class

This is how I solved it I had to move the white background color from whitebackground class to new class called newwhitebackground class. Then adjust the css accordingly, as in the snippet below: Solution 3: If you’re looking to just change the colors of the cells, you could toggle the class of the and then use CSS selectors on the cells like the following: Solution: Simple answer, NO (ish) However, assuming you want to do this for styling purposes only (and not DOM manipulation) if you look at the logic of what you’re trying to accomplish- you are trying to replace one class with another when you hover.

How to change child classes by changing only the parent class?

Yes it’s possible you just need a css class for the table to do it and a function to toggle this class with your table.

This is how should be your css defined:

And this is the JS function to toggle it in the table:

This is an updated Demo :

function cSwap(cell) < if (cell.className == "t") cell.className = "t2"; else if (cell.className == "t2") cell.className = "t"; >function tableCreate(n) < var body = document.getElementsByTagName('body')[0]; var tbl = document.createElement('table'); tbl.setAttribute('onclick', 'cSwap(event.target)'); for (var i = 0; i < n; i++) < var tr = document.createElement('tr'); for (var j = 0; j < n; j++) < var td = document.createElement('td'); tr.appendChild(td) td.classList.add('t'); >tbl.appendChild(tr); > body.appendChild(tbl); >function changeClors() < var cells = document.getElementsByTagName('td'); for (var i = 0; i < cells.length; i++) < cSwap(cells[i]) >> tableCreate(5);function toggleClass() < var table = document.querySelector("table"); if (table.className !== "myTable") < table.className = "myTable"; >else < table.className = ''; >>

Instead of using the for loop, try toggling the invert class name on the table element. Then adjust the css accordingly, as in the snippet below:

function cSwap(cell) < if (cell.className == "t") cell.className = "t2"; else if (cell.className == "t2") cell.className = "t"; >function tableCreate(n) < var body = document.getElementsByTagName('body')[0]; var tbl = document.createElement('table'); tbl.setAttribute('onclick', 'cSwap(event.target)'); tbl.setAttribute('id', 'myTable'); for (var i = 0; i < n; i++) < var tr = document.createElement('tr'); for (var j = 0; j < n; j++) < var td = document.createElement('td'); tr.appendChild(td) td.classList.add('t'); >tbl.appendChild(tr); > body.appendChild(tbl); >function changeClors() < var table = document.getElementById('myTable'); table.classList.toggle('invert') >tableCreate(5);
td < border: 1px solid black; border-collapse: collapse; padding: 28px; >.t < background: white >.t2 < background: black >.invert .t < background: black >.invert .t2

If you’re looking to just change the colors of the cells, you could toggle the class of the table and then use CSS selectors on the cells like the following:

.table-dark td < background-color: #000; >.table-light td

CSS element>element Selector, The element>element selector is used to select elements with a specific parent. Note: Elements that are not directly a child of the specified parent,

Читайте также:  Html style center page

The closest thing we have to a CSS parent selector

It doesn’t work in all use cases, but it’s really underappreciated, so I thought it would be fun to look at what it is and how it works 🙂 If

Changing class of an child element on hover of parent using CSS

Simple answer, NO (ish)

However, assuming you want to do this for styling purposes only (and not DOM manipulation) if you look at the logic of what you’re trying to accomplish- you are trying to replace one class with another when you hover.

Is this not the same as doing, e.g.:

.parentClass:hover .childClass, .hababa < /* this means that the child class styling matches hababa on hover */ >

The above basically accomplishes the same thing as removing one class in favour of the other- with the exception of not removing any styling rules that the child class has which hababa does not, so arent overwritten.

In which case you will also need a rule to reset these, e.g.:

.parentClass:hover .childClass < /* remove any rules not shared with hababa */ >

Demo Fiddle

Override child class css with parent class css, Your selector was slightly wrong, remove the > so it just reads .wrapper * this will get all children of the wrapper.

Skip Parent Background in Child class while inherit other properties

You could try to change the CSS to the following

.child < font-size: 2rem; text-align: center; >.bluebackground < font-size: 3rem; >.whitebackground < background:white; color:yellow; >.bluebackground, .child

Working example: Stackblitz

Update

There is a dirty way to include the CSS selectors from the app component to the child component.

import < Component, OnInit >from '@angular/core'; @Component(< selector: 'app-test', templateUrl: './test.component.html', styleUrls: ['./test.component.css', '../app.component.css'] // ) export class TestComponent implements OnInit < constructor() < >ngOnInit() < >> 

Now you could use the bluebackground selector in the test component.

BlueBackGround Start 
Here i want background which should skip the parent whitebackground and show blue color same as bluebackground class
BlueBackGround End

I’ve modified your Stackblitz

Update: encapsulation

You could set the encapsulation to ViewEncapsulation.None in the app.component and rename the child selector to bluebackground in the child as well. Try the following

import < Component, ViewEncapsulation >from '@angular/core'; @Component(< selector: 'my-app', templateUrl: './app.component.html', styleUrls: [ './app.component.css' ], encapsulation: ViewEncapsulation.None // ) export class AppComponent
import < Component, OnInit >from '@angular/core'; @Component(< selector: 'app-test', templateUrl: './test.component.html', styleUrls: ['./test.component.css'] >) export class TestComponent implements OnInit < constructor() < >ngOnInit() < >> 
/* overwrite/introduce values to the `bluebackground` specific to test component */ .bluebackground < font-size: 2rem; text-align: center; >.whitebackground
BlueBackGround Start 
BlueBackGround End

Working example: Stackblitz

 
Here i want background which should skip the parent whitebackground and show blue color same as mainbackground class
Blue Background End

Working Demo

Thanks to Michael D for his inputs.

I had to move the white background color from whitebackground class to new class called newwhitebackground class.

BlueBackGround Start 
BlueBackGround End
.child < font-size: 2rem; text-align: center; background:transparent; >.whitebackground < color:yellow; >.newwhitebackground

Here is the stackblitz https://stackblitz.com/edit/angular-ivy-pyhqwr

Is there a CSS parent selector?, Changing parent element based on child element can currently only happen when we have an element inside

Источник

Перечисление селекторов

Пишем сразу несколько селекторов, к которым будут применяться стили.

Время чтения: меньше 5 мин

Кратко

Скопировать ссылку "Кратко" Скопировано

При помощи перечисления нескольких селекторов через запятую можно избежать дублирования кода.

🤖 Если у нескольких элементов есть определённые повторяющиеся стили, то вполне допустимо вынести эти стили в отдельный блок и в качестве селектора указать несколько классов (или тегов, или идентификаторов), перечислив их через запятую.

Пример

Скопировать ссылку "Пример" Скопировано

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

   

Только хорошие новости

Учёные научились выращивать зубы

Группа специалистов впервые сумела вырастить настоящий зуб .

div class="wrapper"> h1 class="main-title">Только хорошие новостиh1> h2 class="title">Учёные научились выращивать зубыh2> p class="text">Группа специалистов впервые сумела вырастить настоящий зуб . p> div>

Задаём общие стили для заголовков. Ниже создаём одинаковые декоративные подчёркивания при помощи псевдоэлементов.

 .main-title,.title  position: relative; display: inline-block; color: #ffffff; font-weight: 500;> .main-title::before,.title::before  content: ""; position: absolute; bottom: -5px; left: 0; width: 100%; height: 3px; border-radius: 3px; background-color: #FFFFFF; z-index: -1;> .main-title, .title  position: relative; display: inline-block; color: #ffffff; font-weight: 500; > .main-title::before, .title::before  content: ""; position: absolute; bottom: -5px; left: 0; width: 100%; height: 3px; border-radius: 3px; background-color: #FFFFFF; z-index: -1; >      

Как понять

Скопировать ссылку "Как понять" Скопировано

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

Как пишется

Скопировать ссылку "Как пишется" Скопировано

Указывается один селектор, после него ставится запятая, через пробел указывается второй селектор и так далее.

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

Селекторами может быть не только селектор по классу, но и селектор по тегу или по идентификатору, или даже их комбинация.

Подсказки

Скопировать ссылку "Подсказки" Скопировано

💡 Если стили у перечисляемых блоков не отличаются ничем, то это причина пересмотреть разметку и задать одинаковым по стилям элементам одинаковый класс.

💡 Если перечисляете через запятую составные селекторы, то нужно указывать их полностью.

На практике

Скопировать ссылку "На практике" Скопировано

Алёна Батицкая советует

Скопировать ссылку "Алёна Батицкая советует" Скопировано

🛠 Начинающие разработчики часто допускают ошибку при перечислении селекторов: по их логике первая часть составного селектора не требует повторения и её можно указать один раз в начале, а затем перечислить через запятую несколько «вторых» частей составного селектора.

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

Вот так неверно:

 .parent-class .child-class,.another-class,.one-another-class  /* Стили */> .parent-class .child-class, .another-class, .one-another-class  /* Стили */ >      

А вот так верно! Все три перечисленных селектора являются вложенными:

 .parent-class .child-class,.parent-class .another-class,.parent-class .one-another-class  /* Стили */> .parent-class .child-class, .parent-class .another-class, .parent-class .one-another-class  /* Стили */ >      

По факту, перечисление через запятую — просто удобный способ сокращения кода, что вписывается в рамки принципа DRY.

🛠 Не злоупотребляйте перечислением селекторов через запятую. Особенно составных. Если в стилях слишком много перечислений селекторов, присмотритесь к одной из методологий написания CSS — например, БЭМ 😎

Источник

Оцените статью