Каморка Геткурсовода 💻 | Канал Максима Елисеева
2.37K subscribers
194 photos
18 videos
10 files
107 links
Остались вопросы? Пишите — @Isagaya

Этот уютный канал посвещён фишкам и нестандартным решениям по дизайнам, интерфейсам и функционалам платформы от Куратора школы Магии Геткурса — Максима Елисеева.

Мой второй канал обо всём - https://t.me/closetmax ;)
Download Telegram
Каморка Геткурсовода 💻 | Канал Максима Елисеева
Поделюсь с вами лёгкой кастомизацией, которую вы сможете без проблем повторить и приукрасить стандартную форму Геткурса. А именно добавлением значков полям форм 😉 P.S. Телега немного перепутала порядок скриншотов, но я думаю вы поймете 😁 UPD: Поправил в…
This media is not supported in your browser
VIEW IN TELEGRAM
Немного пошаманил и показываю, как можно добавить некоторые возможности при стилизации и разнообразить некоторыми эффектами предыдущую лёгкую кастомизацию.

Сперва следует применить все наработки из этого поста, затем будем творить магию 😮

Для начала отключим у Геткурсовских инпутов их выделение при фокусе (делается это на основе псевдокласса :focus-visible) и допишем в имеющийся CSS такое правило:

.field-content input:focus-visible {
border: none;
outline: none;
}

И теперь мы можем во всей красе использовать ещё один мало известный псевдокласс :focus-within, который позволяет стилизовать элемент, если внутри него произошел фокус или же сам элемент был взят в фокус. Звучит сложно, да, но на деле отталкиваясь от этого мы можем присвоить стили всему, что лежит внутри этого родительского элемента, например нашему псевдоэлементу :after, а так же стилизовать при этом input.

Добавляем вот такой CSS:

.field-content:focus-within input {
border: 1px solid red;
box-shadow: 0 0 5px red;
}

.field-content:focus-within::after {
color: red;
}

И получаем красивый, а так же стильный эффект на наших полях для ввода! 😉

#лёгкая_кастомизация #полезная_фишка
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Предыдущая лёгкая кастомизация с полями формы вам определённо понравилась, поэтому я продолжу эту рубрику на канале ☺️

В этот раз я поделюсь с вами кастомизацией эффекта при наведении на мой любимый блок карточек (да-да, видели бы вы, сколько я издевался над ними в своих уроках в Магии Геткурса). Конкретно этот блок называется "Картинка - подзаголовок - заголовок - текст". При наведении на карточки получился интересный эффект преобразования формы картинки. В стили блока был прописан следующий CSS:

.lt-tsr-content .image-wrapper {
display: flex;
justify-content: center;
align-items: center;
transition: 0.5s;
}

.lt-tsr-content .image {
transition: 0.5s;
}

.lt-tsr-content:hover .image {
border-radius: 50%;
width: 200px;
height: 200px;
}

Благодаря этому мы получим вполне крутой эффект, который превосходно смотрится даже на стандартном блоке без всякой дополнительной кастомизации, который уже не стыдно показать 😉

P.S. для тех, кто в теме: обнаружил забавный факт, что если убрать галочку из Стилей "Гибкая вёрстка", то на image-wrapper появятся флексы, а с image-card уберутся ненужные абсолютные позиционирования с паддингом в размере 75%, что меня всегда сильно смущал. То есть flex ставится боксу с картинкой при отключении "Гибкой вёрстки". Л — логика 😆

#лёгкая_кастомизация #полезная_фишка
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Без JS в современной web-разработке никуда 🙂

Поделюсь с вами очень простым, но безумно функциональным методом плавного открытия блока по кнопке. Буду использовать не нативный JS, а библиотеку JQuery, которую поддерживает Геткурс.

Для начала я создал блок, в котором разместил кнопку, и блок обычного текста. Самому тексту я присвоил класс text-block, а в кнопке поставил действие "Вызов JavaScript", которым, я уверен, мало кто пользуется.

В появившемся окне ниже я вставляю следующий код, который взаимодействует с классом text-block и применяю метод .slideToggle(), который помогает плавно открывать и закрывать блок:

$('.text-block').slideToggle();

А чтобы наш текстовый блок изначально не показывался на странице, зайдем в Стили блока и в "Подробных настройках" вставим следующий CSS:

.text-block {
display: none;
}

Благодаря таким простым действиям мы получили плавную "раскрывашку" текста по клику на кнопку и достаточно быстро нестандартно и интересно кастомизировали страницу. А если добавить нужные по вашему дизайну стили, будет ещё круче 😎

#лёгкая_кастомизация #полезная_фишка
Please open Telegram to view this post
VIEW IN TELEGRAM
Делать разработку сложнее — не мой вариант. Если это утверждение подходит и для вас, то я думаю вам понравится то, что я нашел на просторах великого и могучего интернета.

Речь пойдет о сервисе enjoycss.com который может генерировать целые, уже застилизованные шаблоны. У сервиса есть встроенный мощный редактор, который тоже приятно радует своими возможностями. Сервис поможет застилизовать блоки, инпуты, кнопки, сгенерировать текст, бекграунд, тени и многое другое. После того, как всё сделали, можно запросить выдачу кода и по смыслу подставить в Геткурс к своим блокам к нужным классам.

Надеюсь, будет полезно тем, кто пока боится писать код самостоятельно, а красоту наводить хочется 😎

P.S. Пригодится знание английского!
P.P.S. Или же воспользоваться автопереводом страницы 😁

#полезная_фишка
Please open Telegram to view this post
VIEW IN TELEGRAM
Сделал интересную декоративную фишку для кнопки формы, и хочу поделиться ею с вами.

Бывает такая ситуация, что наш интернет барахлит, либо происходит слишком долгое ожидание от сервера самого ГК, и когда пользователь кликает на кнопку Оплатить/Записаться и т.д., то возможно длительное ожидание, в ходе которого пользователь не до конца понимает, формируется его заказ или нет. Да, Геткурс с недавних пор сделал значок загрузки на самой кнопке, но я предлагаю ещё больше разнообразить и показать пользователю, что его заказ формируется, и ему следует немного подождать, чтобы не было соблазна тыкнуть на кнопку формы ещё раз (и убить все процессы или задвоить заказ).

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

Порядок установки:
1. Поставьте вашему блоку с формой любой класс. У меня этот класс my-form
2. Поставьте скрипт в блок JavaScript под вашу форму:

$(function() {
let myForm = document.querySelector('.my-form'); // Здесь поменять класс на класс вашего блока
let formBtn = myForm.querySelector('.btn');

formBtn.addEventListener('click', function() {
this.innerHTML = ' Формируем заказ...';
this.style.backgroundColor = '#a0cfa0';
});
})

Обратите внимание, что если ваш класс у формы будет другим, то в вам в скрипте нужно поставить свой класс вместо .my-form 😎

Пользуйтесь 😊

#полезная_фишка
Please open Telegram to view this post
VIEW IN TELEGRAM
Проводите марафоны? Есть открытые уроки для всех зарегистрировавшихся? 😏

Тогда наверняка у вас есть красный значок уведомлений, который появляется каждый день, и там скапливается от 100 до 1000 а то и больше. И всё из-за открытых марафонов/уроков/вебинаров, где люди оставляют свою отметку, особенно если потом вам нужно всё это проверить и долго, нудно, утомительно протыкивать кнопку "Принять".

Поделюсь с вами небольшим лайфхаком, как сэкономить себе кучу времени, чтобы почистить ленту ответов. Всё благодаря кнопочке "Принять всё", которую я для вас подготовил. Она принимает все ответы, которые есть на текущей страницу ответов. Т.е. если у вас 8 страниц ответов, то по одному нажатию кнопки, вся текущая страница будет принята. Итого останется нажать её ещё 7 раз, т.к. ГК автоматически подтянет следующую страницу.

Устанавливать кнопку следует в Настройки аккаунта, в раздел "Счётчики и скрипты для BODY":

<script>
$(function() {
if(window.location.href.indexOf('/teach/control/answers/unanswered') > -1) {
$('.container').append(`
<button class="btn btn-success accept-all" style="position: fixed; top: 20px; right: 20px;">Принять всё</button>
`);

$(function() {
var acceptBtns = document.querySelectorAll('.btn[value="accepted"]');

$('.accept-all').on('click', function() {
acceptBtns.forEach(e => e.click());
});
});
}
})
</script>

Кнопочка появится в вашей Ленте ответов справа сверху, примерно через 10 минут (зависит от загруженности сервера ГК, на котором располагается ваш проект) ✔️

#лайфхак #полезная_фишка
Please open Telegram to view this post
VIEW IN TELEGRAM
Многим был интересен механизм работы "Читать далее". В этом посте я раскрою одну из его механик работы. Экспериментировать я буду на своём любимом блоке "Карточек".

Если вы хотите разметить много текста в описании вашего продукта в карточке, то логичнее не делать "портянку", а придерживаться единого ритма текстового контента, например, показывать лишь 3 строчки текста, чтобы всё остальное было скрыто. Но как так сделать? 🧐

Демонстрирую один из возможных вариантов:
1) Ставим блок карточек (см. скриншот)
2) Делаем описание карточки с подобной внутренней разметкой:

<p>... Очень много вашего текста...</p>
<p class="readmore"><a style="font-weight: bold;">Читать далее...</a></p>

3) Вставляем стили в Стили блока в "Подробные настройки":

.lt-tsr-content .description p {
text-overflow: ellipsis;
overflow: hidden;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
}

.lt-tsr-content .description p.opened {
-webkit-line-clamp: initial;
}

.lt-tsr-content .description p.changed a {
font-size: 0;
}

.lt-tsr-content .description p.changed a:before {
content: 'Скрыть';
font-size: 16px;
}

4) В самом низу страницы или под блок с карточками ставим блок с JS-кодом:

$(function() {
let readBtns = document.querySelectorAll('.readmore');

readBtns.forEach(el => {
el.addEventListener('click', function() {
this.classList.toggle('changed');
this.previousElementSibling.classList.toggle('opened');
})
})
})

И наслаждаемся чудесным механизмом "Читать далее", который безумно сильно сокращает полотна текста на карточках, а так же делает эстетически приятный однородный вид элементов 😉

#полезная_фишка #лёгкая_кастомизация
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Хотите чтобы в вашем проекте регистрировались только с почты определённого домена? Можно устроить!

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

Делюсь пошаговым планом эвакуации 😱 действий:
1) Вам нужно поставить обычную форму на страницу (поле имейла должно быть не скрыто)
2) Поставить CSS-класс блоку с формой form в "Стилях" блока
3) В самый верх страницы поставить следующий CSS в отдельный блок "CSS-код":

.form [data-item-name="emailField"] {
position: relative;
}

.form [data-item-name="emailField"] .field-content:before {
content: '';
position: absolute;
width: 10px;
height: 10px;
background: #333;
border-radius: 50%;
right: 20px;
top: 50%;
transform: translateY(-50%);
}

.form [data-item-name="emailField"].valid .field-content:before {
background: #0f0;
box-shadow: 0 0 5px #0f0,
0 0 10px #0f0,
0 0 20px #0f0;
}

.form [data-item-name="emailField"].invalid .field-content:before {
background: #f00;
box-shadow: 0 0 5px #f00,
0 0 10px #f00,
0 0 20px #f00;
}

4) Поставить JS-код в отдельный блок в самый низ страницы, либо под самой формой:

$(function() {
function validate() {
let emailInput = document.querySelector('.form [data-item-name="emailField"]');
let innerInput = document.querySelector('.form [data-item-name="emailField"] input').value;
let formButton = document.querySelector('.form button');
const pattern = /@gmail.com|@yandex.ru/;

if (innerInput.match(pattern)) {
emailInput.classList.add('valid');
emailInput.classList.remove('invalid');
formButton.disabled = false;
} else {
emailInput.classList.add('invalid');
emailInput.classList.remove('valid');
formButton.disabled = true;
}

if (innerInput == "") {
emailInput.classList.remove('valid');
emailInput.classList.remove('invalid');
formButton.disabled = true;
}
};

$('.form [data-item-name="emailField"] input').on('keyup',function() {
validate();
});

validate();
})

В данный момент скрипт настроен таким образом, что будет считать валидным строку имейла, если в ней присутствует @gmail.com или @yandex.ru. Эта настройка хранится в переменной pattern, вы не пропустите отдельное выделение данного паттерна в скрипте, когда будете ставить его на Геткурс. Вы можете изменить этот паттерн, например, вы хотите добавить так же @mail.ru, то паттерн будет выглядеть уже вот так /@gmail.com|@yandex.ru|@mail.ru/

Обратите внимание, все новые значения доменов перечисляйте через знак прямого слэша ( | ).

#полезная_фишка
Выходные, время работы над своими ошибками и переосмыслению ситуаций. Вот и я на выходных нашел для вас полезный сервис, который помогает выявлять ошибки в CSS-коде онлайн, если вы не понимаете, где у вас затык, и пересмотрели глазами всё вдоль и поперёк 😂

CSS Lint поможет вам найти ошибки в вашем CSS-коде (а так же травмирует ваши чувства, как утверждает сам сервис 😄), и покажет, что и где было не так. На скриншоте я привёл пример своего кривого CSS, и линтер вывел все имеющиеся ошибки в таблицу, так же подсветив строки, в которых нашел проблему. Где-то не закрыты скобки, о чём он тоже сообщает и ругается, а так же неправильное написание некоторых свойств и их значений.

Будет полезно для тех, кому не хочется ставить сторонние специализированные программы по редактору кода 😎

#полезная_фишка
Please open Telegram to view this post
VIEW IN TELEGRAM