• Fullscreen на мобилке, как сделать?

    @Aksigera
    frontender.info/fullscreen
    Тут полная инфа. Конкретно - нужно добавлять вендорные префиксы:

    var requestFullScreen = el.requestFullscreen || el.mozRequestFullScreen || el.webkitRequestFullScreen;
    var cancelFullScreen = doc.exitFullscreen || doc.mozCancelFullScreen || doc.webkitExitFullscreen;
    Ответ написан
  • Ненужное движение псевдоэлемента в ссылке при наведении?

    @Aksigera
    У вас все в порядке с кодом, просто изображение не масштабируется относительно малого круга. Посмотрите здесь codepen.io/anon/pen/adRLXK

    codepen.io/anon/pen/vLVePw - решение. Используется блок .helper, аналогичный по размерам и позиционированию с .service__link. У ссылки мы забираем position: relative и передаем .helper-у. Таким образом, внутренний абсолютно позиционированный элемент рассчитывает свое положение не от изменяющихся границ ссылки, а от постоянных границ внешнего блока-хелпера
    Ответ написан
    1 комментарий
  • Как сверстать div и картинку так, что бы их суммарная высота равнялась высоте экрана?

    @Aksigera
    Можно использовать flexbox, можно -
    div{ height:calc(100vh-сколькоНужноpx); }
    img{ height:сколькоНужноpx }
    Ответ написан
    Комментировать
  • Как сделать острый угол?

    @Aksigera
    Треугольник отдельно сверстан дивом + :before, можно сделать, используя в :before свойство transform
    .comment {
      position: relative; }
      .comment .block {
        position: relative;
        border: 1px cadetblue solid;
        z-index: 1;
        height: 100px;
        width: 400px;
        border-bottom-left-radius: 10px;
        border-bottom-right-radius: 10px;
        border-top-right-radius: 10px; }
      .comment .block__triangle {
        top: -12px;
        display: block;
        height: 12px;
        width: 20px;
        z-index: 2;
        border-bottom: white 1px solid;
        border-left: solid 1px cadetblue;
        border-top: 0;
        position: absolute; }
      .comment .block__triangle:after {
        top: -15px;
        content: "";
        display: block;
        border-bottom-left-radius: 150px;
        border-left: solid 1px cadetblue;
        border-bottom: 1px solid cadetblue;
        border-top: transparent;
        height: 12px;
        width: 20px; }
    Ответ написан
    Комментировать
  • Пропуски в тексте?

    @Aksigera
    text-align: justify стоит. Выравнивание по краям, сами убедитесь. Вот и появляются пробелы.
    Ответ написан
    Комментировать
  • Код про утечки памяти?

    @Aksigera
    Каждый раз вызов ReplaceThing создает локальную область видимости, для которой существует свой priorThing со своим значением, которое в момент каждого вызова replaceThing, начиная со второго, равно new Array(1000000).join('*').join('*'), т.к. переменная theThing находится в глобальной области видимости. Тут вопрос понимания замыканий: каждый раз при вызове функции определение var создает персональные переменные, которые и хранятся в той области видимости: И как только переменная используется в любом из замыканий, то она попадает в лексическую область видимости, используемую всеми замыканиями в этой области видимости
    PS: замыкания и области видимости синонимичны
    Ответ написан
    2 комментария
  • Как оптимизировать js?

    @Aksigera
    Для таких вещей стоит использовать конструкторы. И для переключения каждого элемента существуют циклы (for, while).
    Переписал пример с использованием конструктора (избавляемся от дублирования кода) и добавил циклы. Что именно делает пример, разбираться не стал - думаю, сами прикрутите.
    function Update(idFirst, idSecond,idThird,someAnotherNumberOfId,howMuchYouWant) {
        update1 = function () {
            var val = +this.value;
            var showFirst = [4].indexOf(val) >= 0;
            var showSecond = [3, 4, 5, 6, 8].indexOf(val) >= 0;
            $(idFirst).toggle(showFirst);
            $(idSecond).toggle(showSecond);
            !showFirst && $(idFirst + ' select').val(1).change();
            !showSecond && $(idSecond + ' select').val(1).change();
        };
    
        update2 = function(){
            var iterations = 5;
            if(howMuchYouWant){
                iterations = howMuchYouWant;
            }
            var idS=[];
            for(var i=0;i<iterations;i++){                    //Создаем массив ИДшников
                idS.push(idFirst+'el'+someAnotherNumberOfId);
                someAnotherNumberOfId+=1;
            }
            console.log(idS);
            var val = +this.value;
            var showFirst = [8].indexOf(val) >= 0;
            for(var i=0;i<iterations;i++){     //Переключаем на каждом .toggle(showFirst)
                $(idS[i]).toggle(showFirst);
                !showFirst && $(idS+' select').val(1).change();
            }
        }
        $(idThird).change(update1).change();
        $(idThird).change(update2).change();
    }
    var firstUpdate= new Update('#f_lr1gr2','#f_lr1grt','#lr1rt',1);
    var secondUpdate= new Update('#f_lr1gr2','#f_lr1grt','#sp1rt',1);
    
    
    firstUpdate();
    secondUpdate();

    Исправил очепятку
    Ответ написан
    Комментировать