.mt-5 {
margin-top: 3rem!important;
}
.services{
overflow: hidden;
}
.services .services_img {
position: relative;
float: left;
height: 100px;
margin-right: 50px;
}
.services .services_img:last-child{
margin-right:0;
}
.services {
position: relative;
height: 100px;
dispaly:flex;
flex-flow: row wrap;
/* следующие два свойства как раз настраивают нужное вам отображение по горизонтали и вертикали соответственно */
justify-content: space-between;
align-items: flex-start;
}
T[keyof T]
и передаёшь interface IUser {
name: string;
role: IRole;
}
string | IRole
.type Extractor<T, X> = (entry: T) => X;
const groupBy = <T, X>(
collection: T[],
mapper: Extractor<T, X>
): Map<X, T[]> => collection.reduce((accumulator, entry) => {
const key = mapper(entry);
if (accumulator.has(key)) {
accumulator.get(key)!.push(entry);
return accumulator;
}
accumulator.set(key, [entry]);
return accumulator;
}, new Map<X, T[]>());
(() => {
const gif = 'https://c.tenor.com/dIJjH_qEMpUAAAAC/sully-shock-monsters.gif';
const width = 3;
const space = ' '.repeat(width);
console.log(`%c${space}`, `font-size: 158px; background-image: url(${gif}); background-position: center; background-repeat: no-repeat;`);
})();