Задать вопрос
  • Как определить символ мягкого переноса слова?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    codepen.io/cleric/pen/xsdfv
    Обычный поиск с помощью RegExp результат не даст — будут найдены все слова.

    Для получения результата применяем цикл с exec, найденный текст превращаем в объект Range, у которого можно найти все области с помощью getClientRects. Дальше просто — если количество областей 2 и больше, мы нашли перенесённое слово.

    Первоначальная реализация была доработана при активном содействии @iiil, за что всяческие ему благодарности:)
    Ответ написан
    5 комментариев
  • Как установить флаг в таком условии?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Информацию об объекте лучше хранить в нём же самом. Для этого используем data() (это не совсем одно и то же, что dataset). То есть все найденные позиции мы сохранили data('position', 'найденное_значение'). Цикл по уже когда-то найденной коллекции LI.

    Куда же сохранить флаг об изменении элемента?)) Я думаю, вы уже догадались — например, data('changed', true).

    var li = block.find('li'); //Нашли только 1 раз
    
    $(window).on('scroll', function (e) {
    	var scrollTop = $window.scrollTop(); //Вычислили только 1 раз
    
    	li.each(function () {
    		var $item = $(this);
    
    		if($item.data('position') >= scrollTop){
    			$item.addClass('active');
    		} else {
    			$item.removeClass('active');
    		}
    	});
    });

    Вы производите много абсолютно лишних действий:
    — постоянно определяете прокрутку (надо только 1 раз)
    — постоянно находите LI в цикле (надо только 1 раз)
    — в каждой итерации пробегаете по всем найденным LI, меняя класс им всем (итого на круг выходит LI в квадрате)
    Ответ написан
    6 комментариев
  • WYSIWYG какие классы задает редактор для текста?

    DeLaVega
    @DeLaVega
    Верстаю, фронтэндю =)
    Вы наверное не поверите, НО - визвиг редакторов Много... И каждый из них ведёт себя по разному. И как правило они на тэги не накидывают классы, но а чтобы проверить это вам нужно установить визвиг редактор и тестить...
    Ответ написан
    Комментировать
  • Как лучше: больше html или больше css ?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    С точки зрения производительности - меньше классов, быстрее будет обсчитываться результат. Почему? потому что меньше селекторов и выше их специфичность - быстрее стили найдут свое место в DOM.

    С точки зрения производительности труда - объединение классов для элемента и возникновение множественного дублирования стилей увеличивают издержки на поддержку. Для решения проблем с дублированием можно применить препроцессоры стилей.

    С точки зрения здравого смысла следует соблюдать баланс. Скажем скрытие элементов удобно делать через добавление/удаление класса с элемента. В этом случае класс будет иметь только одно css свойство, но зато будет очень удобно скрывать элементы из JS например. С другой стороны, наличие таких вещей как классы хелперы (pull-left/pull-right/clearfix), которые можно в любой момент применить к элементу и не менять стили это удобно, но становится сложнее поддерживать верстку, это сказывается на производительности и т.д. В этом ключе стоит это все заключать в более специфичные классы для конкретных элементов. Хотя тут есть масса случаев когда можно и так жить.

    Можно выносить какие-то общие вещи в базовый класс и добавлять специфичные стили по мере необходимости при помощи дополнительных стилей. Например в случае с кнопками удобно иметь класс .btn и несколько классов определяющих их размер и цвет, типа .btn-small, .btn-large, .btn-orange и т.д. Но в любом случае вы должны руководствоваться здравым смыслом.

    Ну и да, используйте препроцессоры стилей. И да, никогда не используйте инлайн-стили для верстки.
    Ответ написан
    2 комментария
  • Как запретить автозакрытие подменю?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Для этого нужно:
    — либо корректировать шаблон (например, проставлением класса в нужном пункте меню)
    — либо разбирать адресную строку на клиенте

    Поскольку ясно, что ваш вопрос лежит во второй части ответа, то нужно иметь чёткое соответствие между частью адресной строки и элементом (атрибут или содержание). В вашем случае вы будете опираться на часть пути после /category/. Не забудьте только про decodeURIComponent().

    А дальше вы проходите первый уровень меню в поисках того, кто содержат строку. Правда для проверки нужно или содержание привести к виду ссылки (дефисы вместо пробелов) или наоборот, что с учётом возможных родных дефисов будет затруднительно.

    Нашли, проделали манипуляции (класс воткнули).
    Ответ написан
  • Как сделать такой бэкграунд для текста?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Аха. Вот эти ребята. Я делаю уличную магию. Особую. Хотите взглянуть?
    Ответ написан
    Комментировать
  • Как изменить фон выпадающего списка select'а, то есть фон option?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Для обычных невыделенных option всё просто
    option{
    	color:#fff;
    	background:#369;
    }

    Но вас ведь интересует, как изменить подсветку выделенного option? Ответ — штатными средствами никак, только подставляя вместо них эмуляцию с помощью библиотек вроде этой или этой.
    Ответ написан
    2 комментария
  • WiFi по паспорту?

    vvpoloskin
    @vvpoloskin
    Инженер связи
    Вообще-то там речь идет про операторов универсальных услуг связи. Навряд ли ваша точка на рынке принадлежит такому оператору. Но если начальство настаивает, есть два человеческих варианта релизации:
    1) Технический - вы настраиваете на своей точке хотспот таким образом, чтобы при подключении нового клиента ему нужно было ввести в браузере свой номер телефона, на который затем придет одноразовый пароль.
    2) Экономический - вы приглашаете какого-нибудь существующего провайдера, который за денежку поставит wi-fi точку от вашего имени, и уже у провайдера каким-то образом хранятся данные

    Кстати, в этом документе ничего не говорится о том, что вы должны хранить. Там идет речь о идентификации пользователя, так что номера телефона вполне достаточно.

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

    P.S. Если сильно кому-то надо, могу заморочиться и написать статью, как это реализовать технически. Только будет это не очень быстро, если только кто-то не даст финансового ускорителя)
    Ответ написан
    1 комментарий
  • Почему разработчик не может адаптировать сайт на 100% функционала?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Вы — типичный заложник отсутствия чётко описанных сценариев. Почему я так думаю?

    1. Почему вы хотите увеличивать масштаб главной страницы?
    2. Почему этого должен захотеть пользователь?
    3. На каких устройствах это может потребоваться?
    4. Почему на этих устройствах не предусмотрено другое построение интерфейса, дабы не утруждать пользователя ненужным действием?

    Это я только часть вопросов про масштаб задал. И по каждому вашему пункту можно расписать.
    Увы — это беда многих проектов. Да что там многих — подавляющего большинства.

    — Здравствуйте, вы делаете сайты?
    — Конечно, вам что нужно? Сайт-визитка, каталог или промо-сайт?
    — Ну я не знаю... Хочется круто...
    — Бюджет такого сайта у нас начинается от 300 000 рублей.
    — Дороговато... Но была не была, давайте!
    — В течение часа менеджер вышлет вам ТЗ и смету.
    Ответ написан
    4 комментария
  • Стоит ли рассказывать хабру-сообществу о своём проекте - кружок робототехники Информатикум?

    sim3x
    @sim3x
    Да, только не надо упоминать слово стартап
    Ответ написан
    Комментировать
  • На что "опираться" при выборке элемента в JS?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    А можно так:
    <button class="xxx__action" data-action="close">action</button>
    <button class="xxx__action" data-close="">action</button>

    $('[data-action=close]').on('click', ...);
    $('[data-close]').on('click', ...);


    И это будет немного кошернее.
    Ответ написан
    8 комментариев
  • Как правильно использовать bootstrap?

    cyber-jet
    @cyber-jet
    Начнём с вопроса "филосовского" - используют, значит да, нужно. Уже давно наблюдается тенденция отхода от стандартного вау-эффетка от первого посещения, работающего разве что как вирус. На первый план вышел контент, который на самом деле и является уникальным для каждого сайта, и юзибилити, всё остальное по сути детали не столь важные.

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

    По поводу расширения - проанализируйте, эти все разрешения выбраны не случайно, и в 99,99% случаев этих ступеней вполне достаточно.
    Ответ написан
    Комментировать
  • Необходимо ли оптимизировать самописные табы на JQuery?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    1. Независимо от сложности приложения, которое вы пишете, нужно помнить, что операции поиска элементов очень дорогостоящие. Нашли один раз свои элементы (в данном случае по классу) и запомнили. А дальше уже с помощью eq(), filter() из них выбираете нужные. И неважно — простая или сложная структура в документе, сложные или не очень действия предусмотрены функционалом. Привычка — второе Я.

    2. Искать лучше не по всему документу, а внутри некоего контейнера — так быстрее и правильнее. В данном случае неактуально.

    3. Для функциональности лучше использовать data-атрибуты. А классы вы можете менять, как перчатки.

    4. При использовании addEventListener писать в обработчике return false не имеет никакого смысла.

    5. Вы написали 3 обработчика, хотя в реальности нужен один.

    6. Вы сначала находите элементы, а потом навешиваете обработчик на событие click, а правильнее отслеживать событие в документе и обрабатывать его. К тому же, в этом случае не придётся ждать формирования DOM.

    7. Ожидание формирования DOM можно делать через $() вместо $(document).ready().

    Итого ваш скрипт (для простоты я не сохраняю результат поиска вкладок, поскольку не знаю остальных действий):

    $(document).on('click', '.about menu li', function(e){
    	$(this).addClass('about-current').siblings('about-current').removeClass('about-current');
    });
    
    $(function () {
    	$(.about menu li).eq(0).trigger('click');
    });
    Ответ написан
    1 комментарий
  • Частое использование important это нормально?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Скажем так — каждое появление !important в коде требует объяснения. Ещё раз повторю — каждое.

    Использование любого повышения приоритета в проектах, будь то !important или атрибут style (что даёт одинаковое повышение), или сразу оба (ахтунг!), или id (меньше по силе, чем любое из предыдущих) — всё это требует объяснений. Почему?

    А вот почему — есть плагины и модули от сторонних разработчиков и любое повышение приоритета сужает поле для манёвра. И это ладно, если селекторы у вас уникальные, но я же натыкаюсь вот на такое:

    #content li{
    	list-style: none !important;
    }


    И за такие фокусы надо отрубать руки. Да. Или лишать премии. Но лучше отрубать. Шучу. Только одну.
    Ответ написан
    Комментировать
  • Как добавлять класс блоку в зависимости от url?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Есть ещё такая штука — псевдокласс :target. То есть если в адресе хэш совпадает с id (для автоматической прокрутки к которому он также предназначен), то блок можно оформить по-другому.
    Ответ написан
    2 комментария
  • Как перекодировать координаты в адрес на гугл мапс?

    0neS
    @0neS
    че?
    Ответ написан
    Комментировать