Правило @supports в CSS - это условное групповое правило, которое позволяет применять блок стилей только в том случае, если определенное условие истинно.
Оно проверяет, поддерживает ли браузер определенное свойство CSS , прежде чем применять стили внутри блока.
В нашем случае стили внутри блока @supports будут применены только в том случае, если браузер поддерживает свойство display: grid . Если условие не выполняется, стили внутри блока будут проигнорированы.
@CCODE | CSS⚡️
Оно проверяет, поддерживает ли браузер определенное свойство CSS , прежде чем применять стили внутри блока.
В нашем случае стили внутри блока @supports будут применены только в том случае, если браузер поддерживает свойство display: grid . Если условие не выполняется, стили внутри блока будут проигнорированы.
@CCODE | CSS
Please open Telegram to view this post
VIEW IN TELEGRAM
✍14❤2👍2🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍5
#Задача
Напишите функцию isUnique(str), которая принимает строку и возвращает true, если все символы в строке являются уникальными (не повторяются), и false в противном случае. При проверке на уникальность не учитывайте пробелы.
Ответ👆
Объяснение👇
1. Создается объект charMap для хранения уникальных символов.
2. Проходим по каждому символу в строке str с помощью цикла for...of
3. Для каждого символа проверяем, есть ли он уже в объекте charMap. Если есть, то символ повторяется, и функция возвращает false.
4. Если символ не найден в объекте charMap, добавляем его в объект с использованием символа в качестве ключа и true в качестве значения.
5. После прохода по всем символам строки, если все символы уникальны, объект charMap будет содержать только уникальные символы, и функция возвращает true.
@CCODE | JS⚡️
Напишите функцию isUnique(str), которая принимает строку и возвращает true, если все символы в строке являются уникальными (не повторяются), и false в противном случае. При проверке на уникальность не учитывайте пробелы.
Ответ👆
Объяснение👇
2. Проходим по каждому символу в строке str с помощью цикла for...of
3. Для каждого символа проверяем, есть ли он уже в объекте charMap. Если есть, то символ повторяется, и функция возвращает false.
4. Если символ не найден в объекте charMap, добавляем его в объект с использованием символа в качестве ключа и true в качестве значения.
5. После прохода по всем символам строки, если все символы уникальны, объект charMap будет содержать только уникальные символы, и функция возвращает true.
@CCODE | JS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
This media is not supported in your browser
VIEW IN TELEGRAM
Свойство counter-increment в CSS
Используется для увеличения значения счетчика при отображении элементов списка или других элементов счетчика
@CCODE | CSS⚡️
Используется для увеличения значения счетчика при отображении элементов списка или других элементов счетчика
.todo-list {
counter-reset: counter;
}
.todo-item:before {
counter-increment: counter;
content: counter(counter);
}@CCODE | CSS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21👏1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥5
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Адаптивная сетка в несколько строчек кода с помощью grid
CSS:
HTML:
@CCODE | CSS⚡️
CSS:
.wrapper {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 20px;
}HTML:
<div class="wrapper">
<div class="box">1</div>
<div class="box">2</div>
<div class="box">3</div>
<div class="box">4</div>
</div>
@CCODE | CSS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍28❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Псевдокласс ::selection в CSS
Позволяет стилизовать выделенный текст на странице
Позволяет стилизовать выделенный текст на странице
.title {
font-size: 64px;
font-weight: bold;
text-transform: uppercase;
letter-spacing: 0.05em;
}
.title::selection {
background-color: rgb(0, 250, 229);
color: rgb(141, 2, 255);
}👍19
#Задача
Напишите функцию, которая принимает две строки и возвращает true, если строки являются анаграммами (содержат одни и те же символы в разном порядке), и false в противном случае. При проверке анаграммы регистр символов не учитывается, а также игнорируются пробелы.
Ответ 👆
Объяснение👇
1. Приводим строки к нижнему регистру с помощью метода toLoweCase()
2. Удаляем проблемы из строк с помощью replace(/\s/g, '')
3. После этого мы преобразуем строки в массив символов с помощью split('').
4. Делаем сортировку массива с символами и объединяем обратно с помощью метода join('');
Затем мы сравниваем отсортированные строки и возвращаем true, если они равны, и false в противном случае.
@CCODE | JS⚡️
Напишите функцию, которая принимает две строки и возвращает true, если строки являются анаграммами (содержат одни и те же символы в разном порядке), и false в противном случае. При проверке анаграммы регистр символов не учитывается, а также игнорируются пробелы.
Ответ 👆
Объяснение👇
2. Удаляем проблемы из строк с помощью replace(/\s/g, '')
3. После этого мы преобразуем строки в массив символов с помощью split('').
4. Делаем сортировку массива с символами и объединяем обратно с помощью метода join('');
Затем мы сравниваем отсортированные строки и возвращаем true, если они равны, и false в противном случае.
@CCODE | JS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
#Практика
Создаем простое приложение для поиска информации на wikipedia
JS:
@CCODE | JS⚡️
Создаем простое приложение для поиска информации на wikipedia
JS:
const form = document.querySelector('.form');
const inputValue = document.querySelector('.input');
const result = document.querySelector('.result');
form.addEventListener('submit', (e) => {
e.preventDefault();
if (inputValue.value.trim() !== '') {
searchWiki(inputValue.value);
}
});
function searchWiki(value) {
const url = `https://ru.wikipedia.org/w/api.php?action=query&list=search&prop=info&inprop=url&utf8=&format=json&origin=*&srlimit=50&srsearch=${encodeURIComponent(
value,
)}`;
fetch(url)
.then((response) => response.json())
.then((data) => {
displayResult(data.query.search);
});
}
function displayResult(results) {
result.innerHTML = `Кол-во найденных статей: ${results.length}`;
const container = document.querySelector('.query-container');
container.innerHTML = '';
results.forEach((result) => {
const element = document.createElement('div');
element.classList.add('result-item');
element.innerHTML = `
<div class="title-query">${result.title}</div>
<div class="desc-query">${result.snippet}</div>
<a class="item-link" href="https://ru.wikipedia.org/?curid=${result.pageid}" target="_blank">Читать больше</a>
`;
container.appendChild(element);
});
inputValue.value = '';
}@CCODE | JS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Псевдокласс :user-invalid
Позволяет сделать удобную стилизацию валидации нативными средствами CSS
@CCODE | CSS⚡️
Позволяет сделать удобную стилизацию валидации нативными средствами CSS
@CCODE | CSS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
CSS свойство field-sizing
Позволяет манипулировать поведением полей формы при заполнении
При значение field-sizing: content; - отключит стандартное поведение и позволит подстраивать размер полей формы в зависимости от контента
field-sizing: fixed; сохранит текущее поведение, и поле ввода формы не будет изменяться в размерах
Поддержка браузерами на данный момент составляет 46.45%
@CCODE | CSS ⚡️
Позволяет манипулировать поведением полей формы при заполнении
При значение field-sizing: content; - отключит стандартное поведение и позволит подстраивать размер полей формы в зависимости от контента
field-sizing: fixed; сохранит текущее поведение, и поле ввода формы не будет изменяться в размерах
Поддержка браузерами на данный момент составляет 46.45%
@CCODE | CSS ⚡️
👍17
This media is not supported in your browser
VIEW IN TELEGRAM
Псевдокласс is() в CSS
Позволяет вам группировать несколько селектор в один, что упрощает написание CSS стилей
Поддержка браузерами на данный момент составляет 97.68%
@CCODE | CSS⚡️
Позволяет вам группировать несколько селектор в один, что упрощает написание CSS стилей
.cart__number:is(:hover, :focus) {
outline: 1px solid var(--accent);
color: var(--accent);
}Поддержка браузерами на данный момент составляет 97.68%
@CCODE | CSS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21❤3✍1
#Задача
Напишите функцию которая принимает целое число и преобразует его в римское число
Ответ 👆
Объяснение 👇
1. Мы создаем объект, который служит словарем для соответствия между римскими и арабскими цифрами. Ключи объекта — это римские цифры, а значения — соответствующие им арабские числа.
2. Следующий шаг — использование метода . Метод преобразует объект в массив массивов, где каждый внутренний массив содержит два элемента: ключ (римскую цифру) и значение (соответствующее ей число). Например, элемент .
3. Метод вызывается на этом массиве и используется для аккумуляции строки, представляющей римское число, то есть . Этот метод принимает два аргумента: начальное значение аккумулятора (в данном случае пустую строку ) и функцию, которая выполнится для каждого элемента массива. Функция обратного вызова принимает два параметра: , аккумулятор, который в начале является пустой строкой, и текущий элемент массива , где это ключ (римская цифра), а — значение (число).
4. В теле функции обратного вызова мы используем для добавления римской цифры к строке аккумулятора. вычисляет, сколько раз текущее римское число помещается в оставшуюся часть числа . Метод повторяет римскую цифру соответствующее количество раз.
5. Затем мы обновляем значение , применяя остаток от деления . Это оставляет часть , которая еще не была преобразована в римскую цифру.
6. После выполнения всех итераций , возвращается итоговая строка , которая является римским представлением изначального числа .
7. Функция возвращает , законченную строку с римским представлением числа.
@CCODE | JS⚡️
Напишите функцию которая принимает целое число и преобразует его в римское число
Ответ 👆
Объяснение 👇
1. Мы создаем объект
intRomanMap2. Следующий шаг — использование метода
Object.entries(intRomanMap).reduce(...)Object.entries()intRomanMap['M', 1000]3. Метод
reduce()romanNumber''acc[char, val]charval4. В теле функции обратного вызова мы используем
char.repeat(Math.floor(number / val))Math.floor(number / val)numberrepeat5. Затем мы обновляем значение
numbernumber % valnumber6. После выполнения всех итераций
reduceromanNumbernumber7. Функция
intToRomanromanNumber@CCODE | JS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8✍2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Каррирование в JavaScript — это преобразования функции, принимающей несколько аргументов, в последовательность функций, каждая из которых принимает один аргумент.
Суть каррирования заключается в том, что когда функция принимает несколько аргументов, вы можете вызвать её, передав только часть аргументов. В ответ функция возвращает новую функцию, которая ожидает оставшиеся аргументы.
Пример:
В примере выше, первая функция
В тоже время Каррированная функция
Мы так же можем реализовать Каррирование более элегантно с помощью рекурсии, позволяя каррировать функцию с любым количеством аргументов:
Эта версия функции
@CCODE | JS⚡️
Суть каррирования заключается в том, что когда функция принимает несколько аргументов, вы можете вызвать её, передав только часть аргументов. В ответ функция возвращает новую функцию, которая ожидает оставшиеся аргументы.
Пример:
function sum(a, b, c) {
return a + b + c;
}
// Некаррированная функция, вызывается с тремя аргументами сразу:
console.log(sum(1, 2, 3)); // Выведет 6
// Каррированная версия той же функции:
function currySum(a) {
return function(b) {
return function(c) {
return a + b + c;
};
};
}
// Каррированная функция вызывается с одним аргументом три раза:
const curriedSum = currySum(1);
const addTwo = curriedSum(2);
const result = addTwo(3);
console.log(result); // Выведет 6В примере выше, первая функция
sum принимает все аргументы сразу.В тоже время Каррированная функция
currySum, принимает первый аргумент и возвращает новую функцию, которая ожидает второй аргумент, и так далее.Мы так же можем реализовать Каррирование более элегантно с помощью рекурсии, позволяя каррировать функцию с любым количеством аргументов:
function curry(func) {
return function curried(...args) {
if (args.length >= func.length) {
return func.apply(this, args);
} else {
return function(...args2) {
return curried.apply(this, args.concat(args2));
}
}
};
}
const curriedSum = curry(sum);
console.log(curriedSum(1)(2)(3)); // Выведет 6Эта версия функции
curry принимает исходную функцию sum и возвращает каррированную версию, которой можно передавать аргументы один за другим или группами, до тех пор пока не будет достаточно аргументов (в нашем случае их 3), чтобы вызвать исходную функцию. Когда все аргументы собраны, вызывается исходная функция sum с этими аргументами.@CCODE | JS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥5✍4
This media is not supported in your browser
VIEW IN TELEGRAM
🎯 Задача
Напишите функцию, которая принимает массив товаров и возвращает объект, где ключами являются категории товаров, а значениями - массивы товаров, относящихся к соответствующей категории.
Решение смотри 👆
@CCODE | JS⚡️
Напишите функцию, которая принимает массив товаров и возвращает объект, где ключами являются категории товаров, а значениями - массивы товаров, относящихся к соответствующей категории.
Решение смотри 👆
@CCODE | JS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤1
#Задача
Дан массив строк, где каждая строка содержит слово. Написать функцию, которая сгруппирует анаграммы вместе. Анаграммами считаются слова, составленные из одного и того же количества одинаковых букв, но, возможно, в разном порядке. Функция должна вернуть массив групп анаграмм, где каждая группа представляет собой массив слов. Порядок групп и слов внутри группы не важен.
Пример:
Входные данные:
Выходные данные:
Решение 👆
Объяснение 👇
1. Создаем пустой объект , где каждый ключ - это отсортированная строка символов слова, а значение - массив слов-анаграмм этого ключа.
2. Перебираем все слова во входном массиве. Для каждого слова:
- Разделяем слово на буквы с помощью ,
- Сортируем полученный массив букв,
- Объединяем отсортированный массив букв обратно в строку с помощью . Эта строка служит ключом.
3. Проверяем, существует ли уже такой ключ в объекте . Если нет, создаем пустой массив по этому ключу.
4. Добавляем текущее слово в массив по ключу анаграммы.
5. В конце функции возвращаем массив, сгруппированный с помощью , который содержит все значения объекта , то есть наши группы анаграмм.
@CCODE | JS⚡️
Дан массив строк, где каждая строка содержит слово. Написать функцию, которая сгруппирует анаграммы вместе. Анаграммами считаются слова, составленные из одного и того же количества одинаковых букв, но, возможно, в разном порядке. Функция должна вернуть массив групп анаграмм, где каждая группа представляет собой массив слов. Порядок групп и слов внутри группы не важен.
Пример:
Входные данные:
["ток", "окт", "свет", "тест", "твес", "кот"]Выходные данные:
[["ток", "окт", "кот"], ["свет", "твес"], ["тест"]]Решение 👆
Объяснение 👇
groups2. Перебираем все слова во входном массиве. Для каждого слова:
- Разделяем слово на буквы с помощью
split('')- Сортируем полученный массив букв,
- Объединяем отсортированный массив букв обратно в строку с помощью
join('')3. Проверяем, существует ли уже такой ключ в объекте
groups4. Добавляем текущее слово в массив по ключу анаграммы.
5. В конце функции возвращаем массив, сгруппированный с помощью
Object.values(groups)groups@CCODE | JS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤2🔥1