• Как сверстать отрезок бекграунда кнопки?

    Liatano
    @Liatano
    можно рамкой
    .button::before{
      content:'';
      display:inline-block;
      border-right:10px solid red;
      border-top:10px solid transparent;
      height:0;
      width:0;
    }

    можно картинкой(фоновой или псевдоэлемент, если мутно - заюзать svg),
    можно через новое свойство css clip-path https://webformyself.com/znakomstvo-s-css-svojstvo...
    Ответ написан
    1 комментарий
  • Как отрисовать расписание и адаптировать?

    Liatano
    @Liatano
    Для начала вы бы определились,а как оно будет выглядеть на мобильной версии, как будет выглядеть при переполнении(несколько записей в одной ячейке), а потом уже определяться с версткой.
    ИМХО(да и не только мое), верстать нужно всегда с мобильной версии, с оглядкой на десктопную,а не наоборот. И дело не только в принципе Mobile First от Google, но и в том,что в мобильном варианте элементы идут в порядке потока информации,а на декстопе уже перемешиваются(перескакивают вправо-лево). если делать в обратном порядке, придется идти более сложным путем, т.к. придется менять элементы по вертикали, если изначальный порядок не был правильно угадан.

    Если предугадать высоту ячеек нельзя, то лучший способ-это таблицы. Да и в целом - он самый простой. На мобильной версии либо добавляется скролл, либо творится непотребство в виде задания ячейкам и строкам display:block (вполне ходовой вариант,не стоит бояться). Основная проблема таблиц: в ячейках не совсем одинаково может работать position:absolute.
    Ответ написан
    Комментировать
  • Как на jquery при изменении списка всегда проставлять класс к первому и последнему элементу списка?

    Liatano
    @Liatano
    Нужно сбросить и назначить оба класса,как-то так:
    $(document).on('click', 'a', function () {
        if ($(this).is(".icon-arrow-up")) {
          let line=$(this).closest('.MenuTableRow');
          let tbody=$(this).closest('tbody');
    
          line.prependTo(tbody);
          
          let rows=$('.MenuTableRow',tbody);
          rows.removeClass('row-first').removeClass('row-last');
          rows.first().addClass('row-first');
          rows.last().addClass('row-last');
        }
        if ($(this).is(".icon-arrow-down")) {
          let line=$(this).closest('.MenuTableRow');
          let tbody=$(this).closest('tbody');
          
          line.appendTo('tbody');
          
          let rows=$('.MenuTableRow',tbody);
          rows.removeClass('row-first').removeClass('row-last');
          rows.first().addClass('row-first');
          rows.last().addClass('row-last');
        }
    });
    Ответ написан
    1 комментарий
  • Почему жирность текста в css отличается от жирности текста в макете figma?

    Liatano
    @Liatano
    Для изменения жирности нужно подгрузить шрифт с этой жирностью. Браузер сам, конечно, может некоторым образом симулировать жирность или курсив, но если шрифт не системный для каждой жирности, начертания и их сочетаний нужно подгружать свои файлы. При этом их нужно еще корректно объявлять, например:
    @font-face {
    	font-family: 'Commissioner';
    	src: url('fonts/Commissioner/Commissioner-Regular.eot');
    	src: local('Commissioner Regular'), local('Commissioner-Regular'),
    		url('fonts/Commissioner/Commissioner-Regular.eot?#iefix') format('embedded-opentype'),
    		url('fonts/Commissioner/Commissioner-Regular.woff2') format('woff2'),
    		url('fonts/Commissioner/Commissioner-Regular.woff') format('woff'),
    		url('fonts/Commissioner/Commissioner-Regular.ttf') format('truetype');
    	font-weight: normal;
    	font-style: normal;
    }
    @font-face {
    	font-family: 'Commissioner';
    	src: url('fonts/Commissioner/Commissioner-Medium.eot');
    	src: local('Commissioner Medium'), local('Commissioner-Medium'),
    		url('fonts/Commissioner/Commissioner-Medium.eot?#iefix') format('embedded-opentype'),
    		url('fonts/Commissioner/Commissioner-Medium.woff2') format('woff2'),
    		url('fonts/Commissioner/Commissioner-Medium.woff') format('woff'),
    		url('fonts/Commissioner/Commissioner-Medium.ttf') format('truetype');
    	font-weight: 500;
    	font-style: normal;
    }

    имя у шрифта одно, а вот жирность разная. При этом лучше не забывать о разных браузерах а также о том,что шрифты могут быть в системе пользователя(в этом случае ничего грузиться не будет). В целом, формат .eot - это атавизм для IE, но до сих пор лежит в готовых паках до кучи.
    Ответ написан
    1 комментарий
  • Как правильно сверстать карточку продукта в каталоге?

    Liatano
    @Liatano
    Тут скорее вопрос личного выбора и того,как изначально разрабатывался сайт. теги типа article и figure относятся к семантической верстке стандарта html5 , подробнее можно почитать тут https://htmlacademy.ru/blog/boost/frontend/semantics. Если сайт уже придерживается стратегии использования семантики - этому нужно продолжать следовать.
    Ответ написан
    Комментировать
  • Как вывести дополнительные фото в детальном описании товара?

    Liatano
    @Liatano
    тут сразу несколько ошибок:
    1. по $arResult['MORE_PHOTO'] вы проходитесь при помощи foreach а в итоге переменными не пользуетесь ($key,$img), $arResult[PROPERTIES][MORE_PHOTO][VALUE][0] - всегда берете нулевой элемент,результат очевиден, так что читаем про циклы и учимся ими пользоваться
    2. судя по тому,что хоть что-то отображается,нужно проходиться не по $arResult['MORE_PHOTO'], а по $arResult['PROPERTIES']['MORE_PHOTO']['VALUE']
    3. $arResult[PROPERTIES][MORE_PHOTO][VALUE][0] - у ключей отсутствуют кавычки, но это строки,а не коснстанты, хоть интерпретатор сожрет - так делать нехорошо.
    Ответ написан
    Комментировать
  • Как сделать зависимые поля в JavaScript?

    Liatano
    @Liatano
    Разумнее выглядит использование ключей, на php это будет
    $arCarTypes=[
    	'Toyota'=[
    		'model'=>[
    			'Opa'=>[
    				'year'=>[
    					2011,
    					2012
    				]
    			],
    			'Camry'=>[],
    			'rav4'=>[]
    		],
    	],
    	'Nissan' = [
    		'model'=>[
    			'sprinter'=>[],
    			'skyline'=>[],
    		]
    	]
    ];

    массив можно запаковать в json,если нужен ajax и спокойной перебирать на js
    соответственно с сайта можно передавать поля как
    let data={type:'Toyota',model:'Opa',year:2011};
    Ответ написан
    Комментировать
  • Почему JQuery-событие keyup блокирует возможность ввода в поле input внутри формы?

    Liatano
    @Liatano
    Почему блокирует - не скажу,возможно проблема где-то еще. Но:
    во-первых лучше использовать событие input ( читаем тут https://learn.javascript.ru/events-change-input )
    во-вторых ,что за "className" у формы? наверно опечатка
    в-третьих, не надо делать такие жуткие выборки, в чем принципиальность того,что внутри класса непосредственно находится див, внутри которого лежит список,внутри которого элемент списка и там уже инпут. Это очень плохая практика как для js так и для css. Используйте классы, делайте вложенность в 2-3 уровня, 4-5 - это для дикой конкретизации в очень узком месте.

    в итоге должно получиться что-то типа
    $('.add-portal-user').on('input', 'input', function(){
      sessionStorage.setItem('query-' + this.name, this.value);
    });
    Ответ написан
  • Как скрыть кнопку, а то что в ней показывать?

    Liatano
    @Liatano
    Сбрось стили кнопки:
    border:none;
    background:none;
    Ответ написан
    Комментировать
  • Как сделать кнопку "принять всё"?

    Liatano
    @Liatano
    1. непонятно что за конструкция с чекбоксами и где там рядом с ними кнопки

    2. раз уж используете jquery - то пользуйтесь им и классами, вот это все
    if (e.hasOwnProperty('target') && e.target.localName && (e.target.localName === 'button')) {
    достаточно заменить на
    if($(this).hasClass('item-action-button'))

    3. допустим,существует какая-то общая кнопка,по нажатию на которую собираются все отмеченные чекбоксы и что-то с ними делается:
    let inputs=$('input[type="checkbox"]:checked',services);//находим чекбоксы
    if(inputs.length){
      let data=[];
      let i=0;
      inputs.each(function(){
        data[i]=$(this).val();//собираем данные
      });
      //что-то делаем с данными
    }
    Ответ написан
    Комментировать
  • Как реализовать выбор значения списка из модального окна?

    Liatano
    @Liatano
    Как вариант создать обработчик,который будет регистрироваться в момент открытия модального окна (либо вешать на событие открытия,либо разместить в самой модалке).
    в итоге скрипт будет выглядеть как-то так:

    let elements = document.querySelectorAll('.modal-body li a');//делаем выборку строк,на которых нужна обработка клика
    elements.onclick = function() { //вешаем обработчик
        let id=this.id; //забираем id
        let inp=document.querySelectorAll('.form-group [name="parent_id"]'); //находим инпут
        inp.value=id; //втавляем id  в значение инпута
    };


    есть пара замечаний по верстке:
    • использовать тег <a> не для ссылок - плохая практика, теги нужно использовать по назначению
    • для верстки и скриптов лучше использовать классы либо id, привязка тегам в обоих случаях ведет к проблемам в будущем.
    • для хранения данных(в данном случае id) лучше использовать атрибуты data, которые были придуманы как раз для этого
    Ответ написан
    4 комментария
  • Почему Jquery toggle не работает после ajax?

    Liatano
    @Liatano
    На кнопку навешано 3 обработчика,причем в первом случае есть делегирование - обработчик вешается на страницу и ужа в ней проверяется,не кнопка ли это.В случае аякса кнопка наверняка пересоздается,что убивает вторые 2 обработчика. Нужно везде сделать делегирование,как в первом случае.
    Или я не поняла задачу?
    Ответ написан
    1 комментарий
  • Как такой сделать переход между секциями(html+css+js)?

    Liatano
    @Liatano
    Я для подобной задачи использовала плагин ScrollMagic : https://scrollmagic.io/
    Ответ написан
    Комментировать
  • Как убрать верхний отступ у свойства line-height?

    Liatano
    @Liatano
    задай блоку отрицательный margin-top
    или картинку опусти
    Ответ написан
    Комментировать
  • Как с заданным z-index -1 расположить кнопки?

    Liatano
    @Liatano
    Не используйте z-index для этого блока, только для кнопок и для других блоков, которые должны его перекрывать.
    Почему так:
    когда для внешнего блока прописывается z-index , - для всех других блоков,его окружающих, он вместе со своими внутренностями находится на одном уровне.
    Ответ написан
  • Нарушение порядка запросов страницы, баг браузера или сервера?

    Liatano
    @Liatano
    Может все действительно так. Можно в качестве проверки(или костыля) повесить аякс-запрос для окончательного уточнения сессии.
    Ответ написан
    Комментировать
  • Как подправить скрипт?

    Liatano
    @Liatano
    вешай обработчик через .on('click',function(){}) ,убивай его(.off('click')) после нажтия кнопки и снова вешай при успешной загрузке контента
    Ответ написан
  • Как сделать заполнение формы при нажатии на кнопку?

    Liatano
    @Liatano
    Тут куча вариантов решения,в зависимости от ситуации.
    Я не совсем поняла,каждая кнопка должна заполнить несколько полей?
    Если так,можно завести 3 невидимых инпута или один, но потом его парсить(занчения можно записать через пробел,_ или что-нить другое) функцией на php( split() )
    что бы передать множественные значения в инпут можно воспользоваться атрибутом data:
    <form id="myForm">
    <div class="button" data-some_data_1="x1" data-some_data_2="y1" data-some_data_2="z1">кнопка1</div>
    <div class="button" data-some_data_1="x2" data-some_data_2="y2" data-some_data_2="z2">кнопка2</div>
    <div class="button" data-some_data_1="x3" data-some_data_2="y3" data-some_data_2="z3">кнопка3</div>
    <input name="input" id="input"/>
    <input type="sumit"/>
    </form>

    и к ним мы будем обращаться так:
    $('.button').click(function(){
    var input=$('#input');
    var data1=$(this).data('some_data_1');
    var data2=$(this).data('some_data_2');
    var data3=$(this).data('some_data_3');
    input.attr('value',data1+'_'+data2+'_'+data3);
    $('#myForm').submit()
    })
    Еще проще каждую кнопку представить в качестве <a href="http://habrahabr.ru/post/144104/">кастомизированного радиобаттона</a>
    Ответ написан
    Комментировать
  • Как предотвратить появление новых aside после каждого resize()?

    Liatano
    @Liatano
    Тебе просто нужно поставить флаг
    $(document).ready(function() {
        scriptsToggle();
    	
        $(window).resize(scriptsToggle);
    
    var flag1200=($('body').width() > 1200)?true:false;
    
    function scriptsToggle() {
        if (($('body').width() > 1200)&&!flag1200) {
            $('<aside></aside>')
                .appendTo('#wrapper');
    		flag1200=true;
        } else if (($('body').width() < 1200)&&flag1200){
            $('aside').remove();
    		flag1200=false;
        }
    }
    });
    Ответ написан
    Комментировать
  • Как вывести социальные кнопки по одной в разных местах страницы?

    Liatano
    @Liatano
    Попробуй в тегах поставить различный data-url (во-всяком случае так это работает у yandex-share, только там этот параметр называется немного иначе)
    Ответ написан
    Комментировать