Summary: Learning about CSS Specificity and JavaScript ES6 features.
Calculating CSS Specificity Value
Why is that our first attempt at changing the color and font-weight failed? As we learned, it was because simply using the class name by itself had a lower specificity value and was trumped by the other selector which targeted the unordered list with the ID value. The important words in that sentence were class and ID. CSS applies vastly different specificity weights to classes and IDs. In fact, an ID has infinitely more specificity value! That is, no amount of classes alone can outweigh an ID.
In otherwords:
- If the element has inline styling, that automatically1 wins (1,0,0,0 points)
- For each ID value, apply 0,1,0,0 points
- For each class value (or pseudo-class or attribute selector), apply 0,0,1,0 points
- For each element reference, apply 0,0,0,1 point
You can generally read the values as if they were just a number, like 1,0,0,0 is “1000”, and so clearly wins over a specificity of 0,1,0,0 or “100”. The commas are there to remind us that this isn’t really a “base 10” system, in that you could technically have a specificity value of like 0,1,13,4 – and that “13” doesn’t spill over like a base 10 system would.
JavaScript ES6
JavaScript ES6 (also known as ECMAScript2015 or ECMAScript6) is the sixth edition of JavaScript introduced in June 2015.
ECMAScript (European Computer Manufacturers Association Script) is the standard specification of JavaScript to ensure compatibility in all browsers and environments.
Declaration With let Keyword
The let
keyword creates block-scoped variables, which means they are only accessible within a particular block of code. For example,
{
// block of code
// declare variable with let
let name = "Peter";
// can be accessed here
console.log(name); // Peter
}
// can't be accessed here
console.log(name);
Declaration With const Keyword
The const
keyword creates constant variables that cannot be changed after declaration. For example,
// declare variable with const
const fruit = "Apple";
console.log(fruit);
// reassign fruit
// this code causes an error
fruit = "Banana";
console.log(fruit);
JavaScript Template Literals
The template literal makes it easier to include variables inside a string.
const firstName = "Jack";
const lastName = "Sparrow";
console.log(`Hello ${firstName} ${lastName}`);
// Output: Hello Jack Sparrow
JavaScript Arrow Function
ES6 introduces a new way to write function and function expressions using =>
called the arrow function.
// function expression using arrow function
let product = (x, y) => x * y;
result = product(5, 10);
console.log(result); // 50
JavaScript Destructuring
The destructuring syntax makes it easier to extract values from arrays or objects into individual variables.
const hospital = {
doctors: 23,
patients: 44,
};
// use ES6 destructuring syntax
let { doctors, patients } = hospital;
console.log(doctors); // 23
console.log(patients); // 44
Spread Operator
You can use the spread operator ...
to unpack an array or object. For example,
let numArr = [1, 2, 3];
// without spread operator
console.log([numArr, 4, 5]); // [[1, 2, 3], 4, 5]
// with spread operator
console.log([...numArr, 4, 5]); // [1, 2, 3, 4, 5]
Leave a Reply