Задать вопрос
  • Почему не отображается background в scss?

    bootd
    @bootd Куратор тега CSS
    Гугли и ты откроешь врата знаний!
    Для начала посмотреть в браузер, на селектор и скорей всего увидеть, что свойство записано не верно! Или я на столько отстал от жизни.

    Ибо я что-то не припомню возможности такой записи как center (center / cover) no-repeat;

    Правильно писать так:
    baclground: url('../../img/bg.jpg') center / cover no-repeat;
    Ответ написан
    Комментировать
  • Почему вылетает куча ошибок после запуска окна на Node.js?

    bootd
    @bootd
    Гугли и ты откроешь врата знаний!
    в файлике main.js на 27 строке ошибка, что переменная App не найдено. Ошибка в js. Приложите код
    Ответ написан
  • Не может найти id в DOM! extensions?

    bootd
    @bootd
    Гугли и ты откроешь врата знаний!
    Возможно в названии id вы допустили русский символ, такое бывает.
    Возможно что-то не так с разметкой. Происпектируйте элемент, точно ли его видит браузер.

    P.S. Вы точно показали весь код который у вас используется или точно ли вы скопировали свой код для вставки сюда? Ибо всё вроде как правильно
    Ответ написан
  • Как в компоненте вывести загруженные данные?

    bootd
    @bootd
    Гугли и ты откроешь врата знаний!
    // store
    export const state = () => ({
    	functions: []
    });
    
    export const actions = {
      async loadFunction({ commit }) {
        try {
          const plans = await Parse.Cloud.run('getFunction', {}, {});
          commit('setFunction', plans);
        } catch (error) {
          commit('setFunction', null);
          return null;
        }
      },
    };
    
    export const mutations = {
    	setFunction: (state, payload) => {
    		state.functions = payload;
    	}
    }


    // Ваш копонент, где вы отображаете TItem
    <template>
    	<div>
    		<TItem
              v-for="(item, index) in functions"
              :key="index"
              :tplan="item"
              @delete="deleteItem(index)"
            />
    	</div>
    </template>
    
    <script>
    import { mapState } from 'vuex'
    
    export default {
    	//....
    	computed: {
    		...mapState([
    			'functions'
    		])
    	}
    	//...
    }
    </script>
    Ответ написан
    Комментировать
  • Как сделать перехватчик(interceptor) в axios на react?

    bootd
    @bootd
    Гугли и ты откроешь врата знаний!
    // ./services/api.js
    import axios from 'axios';
    
    // Проверим в самом начале, есть ли токен в хранилище
    const JWTToken = localStorage.getItem('jwt');
    
    // Создать инстанс axios
    const api = axios.create({
      baseURL: `${BASE_URL}/api`;
    });
    
    function apiSetHeader (name, value) {
      if (value) {
        api.defaults.headers[name] = value;
      }
    };
    
    // Если токен есть, то добавим заголовок к запросам
    if (JWTToken) {
      apiSetHeader('Authorization', `Bearer ${JWTToken}`);
    }
    
    api.interceptors.request.use(config => {
      // Если пользователь делает запрос и у него нет заголовка с токеном, то...
      if (!config.defaults.headers['Authorization']) {
        // Тут пишем редирект если не авторизован
      }
    
      return config;
    }, error => {
      return Promise.reject(error);
    });
    
    export default api;
    
    export apiSetHeader


    // ./services/sign-in.js
    
    import api, { apiSetHeader } from './api'
    
    export const authorize = async (username, password) => {
      try {
        const { data } = await api.post('/clients/token/', {
          username,
          password
        });
      
        localStorage.setItem('jwt', data.access);
        apiSetHeader('Authorization', `Bearer ${data.access}`);
      } catch (error) {
        console.log(error);
      }
    };


    Ну, примерно так, если ничего не напутал. Писал на коленке. Могут быть синтаксические ошибки))
    В целом, я показал суть, вы же, можете переписать это под себя и свои нужны.
    Ответ написан
    1 комментарий
  • Перебор массива внутри Ассоциативный многомерного?

    bootd
    @bootd
    Гугли и ты откроешь врата знаний!
    Если я ничего не попутал, то так. Писал на коленке
    let template = '';
    
    data.forEach(item => {
      template += `<div class="name">${item .name}</div>`;
    
      let brands = '';
    
      item.brands.forEach(brand => {
        brands += `${brand .name}, `;
      });
    
      template += `<div class="brands">${brands}</div>`;
    });
    
    $('.category_brands').html(template);
    Ответ написан
  • Вопрос для программиста, помощь в выборе?

    bootd
    @bootd
    Гугли и ты откроешь врата знаний!
    Если ты хочешь в будущем стабильно получать зп от 100к спустя 3-4 года обучения и имея при этом хороший пул знаний и опыта, тогда идти по 2му варианту.

    Если ты хочешь в будущем стабильно получать зп до 40-50к спустя 3-4 года работы, тогда вариант 1.

    Битриксоиды получают достаточно хорошо у нас в РФ, но хорошо научиться писать на битриксе довольно сложно, особенно в одиночку.

    Лично моё мнение:
    Бегать из одной веб студии в другую в надежде, что работа станет интереснее, следуя по пути 2 не самая лучшая затея на будущее. Потому как везде будут "тупые" клиенты, с "тупыми" задачами. Либо, ты сможешь однажды воплощать свои идеи в более крупной компании, которых будет много на твоём пути и ты найдёшь ту, в которую будешь приходить как домой. Это если коротко и по делу.

    Так же может случиться так, что ты потратил много лет на 1 CMS, весь другой мир бекенда шагнул далеко вперёд, а битрикс всё где-то там сзади, с его вечным говнокодом и маркетингом. Поэтому, вариант 2 самый лучший. Работа интереснее и проекты интереснее, и простора для развития бесконечность.

    Я не скажу, что битрикс ужасен. Он выполняет свою работу, но сравнивать CMS и фреймворки, и их базу комьюнити, и возможность личностного роста.... Боюсь фреймворки побеждают
    Ответ написан
  • Возможно ли сократить данный JS код?

    bootd
    @bootd
    Гугли и ты откроешь врата знаний!
    // Дать нужным полям 1 класс
    const fields = Array.from(document.querySelectorAll('.data-field'));
    
    fields.forEach(field => {	
    	field.value = escape(field.value);
    });
    Ответ написан
    2 комментария
  • Как проверять данные prompt?

    bootd
    @bootd
    Гугли и ты откроешь врата знаний!
    Ответ написан
    Комментировать
  • Как сделать отступы и другие элементы в соответствии с макетом Perfect Pixel?

    bootd
    @bootd Куратор тега CSS
    Гугли и ты откроешь врата знаний!
    Нету никаких уроков, нужно просто выставлять отступы так, что бы получилось как в макете. Браузер по своему рендерит макеты и просто брать значения из фигмы и вставлять не достаточно.

    подскажите насколько актуальна сейчас в 2020 и в 2021

    Это всегда актульно, НО!!! Без фанатизма. Нужно максимально стараться привести верстку к макету. Нет нужны и смысла мучить себя 1-2 пикселями. А так же, не забываем про особенности браузеров в отображении тех или иных стандартных тегов. select, button, input и т.п. Поэтому сначала нужно взять либо какой-то reset или normalize.css

    В первую очередь всё зависит от дизайнера. На сколько он любит свою работу и на сколько он профессионален. Мне не попался ещё дизайнер, который нарисует всё на столько ровно и одинаково.
    Чаще всего, дизайнер, рисуя кнопку, не понимает, что это за элемент и какие есть правила его применения в отрасли. На одной странице кнопка выглядит так, на другой так, на 3й так, и т.д. И так со многими повторяющимися элементами.

    Я всегда списываю это и делаю так, что бы получилось одинаково везде. Пока никто никогда не жаловался.

    Следствие чего, не имеет смысла для каждой страницы делать кнопку разной. Достаточно просто привести её к средним значениям.
    Точно так же бывает с сетками. Либо её вообще нет, либо имитация.

    P.S. Это не прописная истина, это мой подход в работе, который выработался за мою долгую практику. Я тоже пытался делать попиксельно, но это лишняя трата времени и своих сил.
    Ответ написан
    Комментировать
  • Как выделить текущий день недели?

    bootd
    @bootd
    Гугли и ты откроешь врата знаний!
    // Создать массив дней
    const days = ['Понедельник', 'Вторник'] // и т.п.
    
    // Получить индекс дня недели
    const cuttentDayIndex = new Date().getDay();
    
    // Получить из массива название дня недели по индексу.
    // Но т.к. дни недели в getDay начинаются с 1, то вторник будет 2, а раз массивы считаются с 0, то вычитаем - 1
    const currentDay = days[cuttentDayIndex - 1];


    Для vue примерно так:
    <template>
    <ul>
      <li :class="{ active:  currentDay === 'Понедельник'}">Понедельник</li>
      <li :class="{ active:  currentDay === 'Вторник'}">Вторник</li>
    </ul>
    </template>
    
    <script>
    data: () => ({
      days: ['Понедельник', 'Вторник'] // и т.п.
    }),
    computed: {
      currentDay () {
        const cuttentDayIndex = new Date().getDay();
    
        return this.days[cuttentDayIndex  - 1]
      }
    }
    </script>
    Ответ написан
    3 комментария
  • Почему у меня в store ничего нет?

    bootd
    @bootd
    Гугли и ты откроешь врата знаний!
    Это
    if (store.copters['copters/copters'].length === 0) {


    заменить на это
    if (store.getters['copters/copters'].length === 0)
    Ответ написан
  • Как сверстать радиусы внутри блока?

    bootd
    @bootd
    Гугли и ты откроешь врата знаний!
    https://jsfiddle.net/dcLhk2pn/

    Дальше сами.
    А так, какая-то дичь. Просто заюзайте фон. Почему многих людей ставит в ступор подобная вещь. Использование фона как картинки не делает вас плохим, это нормальная практика. Либо вы потратите много времени на эту дичь, либо вы просто заюзаете картинку. Ведь их ещё наверняка придётся адаптировать.

    Смысл в этом есть лишь 1 на мой взгляд. Когда эти круги нужно анимировать, тогда да. А просто так, пустая трата времени
    Ответ написан
    Комментировать
  • Vue js как написать директиву для отслеживания размеров экрана?

    bootd
    @bootd
    Гугли и ты откроешь врата знаний!
    используйте лучше готовый модуль. https://github.com/AlexandreBonaventure/vue-mq
    Ответ написан
    Комментировать
  • Какова практика создания мультидоменных сайтов?

    bootd
    @bootd
    Гугли и ты откроешь врата знаний!
    Есть у меня 1 проект, написан на nuxt. У нас для каждого города свой поддомен по типу msk.mysite.ru и т.п.
    Отличия лишь 2, это цены и страница с контактами. Для НН она одна, для остальных доменов другая. Домены реализованы через nginx. Но, т.к. у нас по итогу, на серваке фронт и бек лежат вместе, то поддомен у обоих одинаковый. А значит запрос автоматом запросит нужные данные.

    Если у вас именно разные сборки для разных доменов. То делаете множество билдов для разных доменов. А nginx будет брать нужную и отображать.

    Делать разные сайты очень глупо. В случае, если домен у api один, а фронт живёт сам по себе на другом, достаточно просто посылать заголовок с городом бекенду, который сам должен рулить нужными данными.

    Есть в практике другие сайты, мультиязычные. Использовали i18n для превода интерфейса. Перевод хранится в json файлах, для нужной локали загружается нужный json. Так же, бекенду передаётся в заголовке с запросом текущая локаль, для того, что бы бекенд отдавал контент с нужным переводом.

    Всё просто.
    Ответ написан
    2 комментария
  • Как удалить элемент массива не зная его индекс?

    bootd
    @bootd
    Гугли и ты откроешь врата знаний!
    Как это не знаете его индекс?

    v-for="(button, index) in arr" и сразу появился индекс

    @click="remove(index)"

    И не нужно придумывать странных решений.
    Но если нужно не понятные решения, то на основе active вы можете сделать фильтр массива по свойству, находящимся в active

    computed: {
      newArray () {
        return this.arr.filter(item => item.id === this.active.id)
      }
    }

    Ну или какое-то другое свойство, которое может лежать в active. Суть вы поняли
    Ответ написан
    1 комментарий
  • Как изменить размер блока при hover, чтобы другие блоки не уезжали?

    bootd
    @bootd Куратор тега CSS
    Гугли и ты откроешь врата знаний!
    https://jsfiddle.net/6yp1vmc2/

    или не указывать фикс высоту при ховере, а делать auto. Если контента может быть динамическое кол-во
    Ответ написан
    1 комментарий
  • Как с помощью touch event отследить движение по странице - вверх или вниз?

    bootd
    @bootd
    Гугли и ты откроешь врата знаний!
    https://jsfiddle.net/1ntLcbwx/1/

    let posX = 0;
    let posY = 0;
    
    document.addEventListener('touchmove', event => {
    	const { clientX, clientY } = event.touches[0];
    	
    	if (posY < clientY) {
    		console.log('Вниз')
    	}
    	
    	if (posY > clientY) {
    		console.log('Вверх')
    	}
    	
    	posX = clientX;
    	posY = clientY;
    })
    Ответ написан
    Комментировать
  • Почему не работает justify-content: space-between?

    bootd
    @bootd Куратор тега CSS
    Гугли и ты откроешь врата знаний!
    Наверно, потому что нужно погуглить что такое display: flex
    Ответ написан
    Комментировать