• Как в Owl Carousel 2 задать отступ в rem?

    @ImagineTables
    .owl-item
    {
        margin-right: 0.625rem !important;
    }


    !important потому, что он пихает опцию в атрибут style.
    Ответ написан
    Комментировать
  • Как имитировать клик по кнопке в момент переключения табов?

    @ImagineTables
    Дисклеймер: не уверен, что правильно понял проблему, но попытка не пытка. Попробуйте первый раз инициализировать контролы внутри бутстраповских табов (т.е., в данном случае, делать вызов .slick()) из события shown.bs.tab (ну и запоминать, что инициализация состоялась, чтобы при повторном выборе таба её не делать повторно, либо unslick'ать всё на парное событие hidden.bs.tab).

    Событие shown.bs.tab генерирует контрол, который переключает табы. Т.е.

    $('button[role="tab"]')
    	.on('shown.bs.tab', function (e) { … } );


    Из e достаёте таб (см. бутстраповскую документацию на событие), и для его содержимого уже делаете инициализацию.
    Ответ написан
    Комментировать
  • MIME тип CSS при попытке добавить stylesheet в head через скрипт. Как решить проблему?

    @ImagineTables
    >В задумке подгружать стили ориентируясь на операционную систему.

    Оффтопик по отношению к этому конкретному вопросу, но, возможно, стоит рассмотреть переезд из браузера в ОС-специфичные webview-приложения и вынос разметки/стилей в ресурсы. По крайней мере, обычно обозначенная в цитате дорога приводит именно к этому )) А от сервера оставить только веб-АПИ.
    Ответ написан
  • Как выбрать «опорные точки» перехода ширины экрана для стилей страниц сайта?

    @ImagineTables
    Как уже было сказано выше,

    1. Брякпоинты из любимого фреймворка (чем стандартнее, тем лучше), плюс
    2. Точечные фиксы для конкретных кусков, ломающиеся так далеко от брейкпоинтов (посередине, например), что на них не натянуть.
    Ответ написан
    1 комментарий
  • Взаимодействие с другими классами и блоками можно ли так?

    @ImagineTables
    Декларативно (на pure CSS) можно сделать что-то типа такого:

    body:has(.first-block:hover) .second-block
    {
        background: red;
    }


    И неважно, где эти блоки и как связаны. :hover можно заменить на другой псевдокласс, обозначающий взаимодействие с юзером, например :active или :focus-visible.

    Но для кликов лучше прибегнуть к императивному скрипту (используется jQuery):

    $('.first-block').on('click', () => $('.second-block').addClass('red');


    И, само собой, CSS:

    .red
    {
        background: red;
    }
    Ответ написан
    Комментировать
  • Как эффективно перейти на c++ при опыте работе с php?

    @ImagineTables
    Этот язык меня самого вгоняет в тоску, хотя я пишу на нём много лет.

    Лучше всего определиться с предметной областью, а потом уже спрашивать совета. WinAPI это одно. Qt-мультиплатформа — другое. Веб-сервера — третье.

    Если Qt лезет в вашу предметную область, используйте Qt. Не то, что Qt хорошая библиотека, но она больше всего похожа на человеческую (из того, что есть).

    И помните, что не всё, чем гордятся плюсовики, это правильные вещи. По типичному соотношению «качество кода / самоуверенность автора» это самый ужасный ЯП.

    Так что, лучше всего начните с парадигмы «Си с классами».
    Ответ написан
    Комментировать
  • В чём ошибка js?

    @ImagineTables
    1. Я делаю…
    2. Я ожидаю…
    3. Вместо этого я получаю…

    У вас 1 пункт из 3.
    Ответ написан
    Комментировать
  • Как сделать подобную анимацию в JavaScript?

    @ImagineTables
    Не сильно долго думая:

    1. Рендерим чем-то типа https://github.com/niklasvh/html2canvas.

    2. Выводим картинку в верхнем слое.

    3. Снизу мгновенно меняем тему (через body.light).

    4. При помощи mask-image делаем для картинки из п. 2 радиальные градиенты с несколькими частично пересекающимися кругами (как в макете). Изначально значения альфа-канала во всех опорных точках должно быть 1.0

    5. Запускаем transition к таким значениям альфа-канала, чтобы был эффект распространения прозрачности по кругам от центра наружу. Круги при анимации начинают пересекаться, что даёт искомый эффект интерференции.

    6. Чтобы transition сработал с градиентной заливкой, нужно задать градиент кастомными свойствами, а переход делать для них, как показано тут: https://stackoverflow.com/a/63848864/14400772
    Ответ написан
    Комментировать
  • Как добиться срабатывания transition для checkbox?

    @ImagineTables
    для маркера checkbox навешен transition для плавного появления


    Это плохой UX, не надо так делать. Ощущаться будет как замедленная реакция интерфейса на нажатие.

    Но если приспичило, можно:

    Первый вариант
    1. Описать галку в начале файла:

    <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="template">
    	<defs>
    		<symbol id="checkmark" class="checkmark" viewBox="0 0 16 16">
    			<path fill="currentColor" … />
    		</symbol>
    	</defs>
    </svg>


    2. Вставить в кнопку:
    <svg width="32" height="32"><use href="#checkmark"></use></svg>


    3. Анимировать прозрачность.

    Второй вариант

    Если хочется сохранить растровое изображение, используйте его как маску (clip), а фон заливайте сплошным цветом. Если использовать кастомные свойства, ими можно анимировать хоть градиенты:

    @property --my-color-1
    {
    	syntax: '<color>';
    	initial-value: #000;
    	inherits: false;
    }
    Ответ написан
    Комментировать
  • Как преобразовать HTML в exe?

    @ImagineTables
    1. Выучить C++ за 21 день.
    2. Скачать Chromium Embedded Framework, скомпилировать, обеспечить загрузку HTML из ресурсов
    Ответ написан
    Комментировать
  • Как заблокировать на странице div id с изменяющимся параметром?

    @ImagineTables
    div:has(> a[href^="/help/"])


    Уж лучше div:has(img[src*="domain.com"]). И за специфичность при резке баннеров я бы переживать не стал.

    P.S. Прелесть uBO в автосписках и пикере. Если писать руками, я предпочитаю обычный CSS в плагине Stylus:

    div:has(img[src*="domain.com"])
    {
        display: none;
    }


    В нём же можно указать область видимости правила (например, «Только для заданного домена»).
    Ответ написан
    Комментировать
  • Как удалить в Visual Studio code вертикальные пробелы?

    @ImagineTables
    В каком скоупе? По всему файлу, по выделенному куску, конкретно одну строку?

    Если одну строку — Shift + Del (с порчей буфера), Ctrl + Shift + L (без порчи буфера).

    Если редактируемый блок, то это, возможно, автоформат. Я, наоборот, заколебался искать, где отключается удаление вертикальных пробелов, правда, не в HTML, а в CSS. Вставишь из буфера что-нибудь, и все вертикальные отбивки удалились.
    Ответ написан
    Комментировать
  • Как сделать так, чтобы если div в области видимости окна устройства, срабатывала анимация написания текста?

    @ImagineTables
    Во-первых. Для определения видимости есть специальный API. Он страшен, как жизнь простого программиста, но это, всё-таки, стандарт. Вот небольшая обёртка, которую я написал для себя:

    // Starts observing visibility of the given element. On change,
    // the callback is called with Boolean visibility as argument.
    System.attachOnVisibilityChangedHandler = function (element, callback, visiblePart = 0.5)
    {
    	const options =
    	{
    		root: null,
    		threshold: [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1],
    	};
    
    	const observer = new IntersectionObserver((entries, observer) =>
    	{
    		entries.forEach(entry =>
    		{
    			callback(entry.target, entry.intersectionRatio >= visiblePart);
    		});
    	}, options);
    
    	observer.observe(element);
    }


    Во-вторых. Он тоже даёт ложноположительные срабатывания (я думаю, в этом ваша проблема). Это by design. Поэтому надо проверять предыдущее состояние, чтобы понять, изменилось ли оно:

    // For all elements, marked with 'autoplay' and 'autoplay-once' classes, adds 'start-autoplaying' class when visible first time.
    // For all elements, marked with 'autoplay' only, adds 'start-autoplaying' class every time, when visible, and removes it, when not.
    function autoplayAnyWhenVisible()
    {
    	$('.autoplay').each(function ()
    	{
    		const startAutoplayingClass = 'start-autoplaying';
    		const visiblePart = $(this).data('visible-part') ?? 0.5;
    
    		const onElementVisibilityChanged = function (element, isVisible)
    		{
    			const autoplayOnce = $(element).hasClass('autoplay-once');
    			const wasVisible = $(element).data('is-visible');
    
    			if (isVisible && !wasVisible)
    			{
    				$(element)
    					.addClass(startAutoplayingClass)
    					.data('is-visible', true);
    			}
    
    			if (autoplayOnce)
    				return;
    
    			if (!isVisible && wasVisible)
    			{
    				$(element)
    					.removeClass(startAutoplayingClass)
    					.data('is-visible', false);
    			}
    		};
    
    		System.attachOnVisibilityChangedHandler(this, onElementVisibilityChanged, visiblePart);
    	});
    }


    С этим кодом просто маркируете элементы при помощи класса autoplay (плюс autoplay-once если надо проигрывать анимацию только один раз), указываете долю видимости, и при реальном показе/сокрытии будет добавляться/убираться класс start-autoplaying (куда и засовываете анимацию написания текста):

    <div class="… autoplay autoplay-once" data-is-visible="false" data-visible-part="0.3">
    Ответ написан
  • Как реализована анимация SVG элементов (персонажей) в web app?

    @ImagineTables
    Если анимацию должен создать непрограммист-аниматор на основе векторной графики (может, ещё и нарисовать векторную графику самому), то у него и надо спрашивать, каким инструментом он пользуется и во что вебообразное он может экспортировать свою анимацию.

    Насколько я знаю, сейчас упомянутый выше Lottie это как раз один из стандартов для описания анимации.

    Если подходить к анимированию со стороны кода, то сам я прописываю анимации тупо в CSS.
    Ответ написан
    Комментировать