Задать вопрос
  • Как обращаться к определенным элементам на странице в Vue.js?

    delphinpro
    @delphinpro
    frontend developer
    Когда вы пишете на вью, вы должны ориентироваться на состояние данных. Грубо говоря, императивный подход здесь не совсем в тему.
    Вы не должны писать "по клику присвоить класс"
    Вместо этого вы должны делать так
    data() {
      return {
        isShowHelloBlock: false,
      }
    }
    <div :class="{someClass : isShowHelloBlock}">Hello</div>
    <button @click="isShowHelloBlock = true">toggle block</button>


    Изменяя состояние, вы изменяете представление.
    Ответ написан
    2 комментария
  • Как отцентровать такие элементы?

    @vadimMalovaniy
    Просто добавь в span margin: 0 auto
    span{
      display: block;
      margin: 0 auto;
      ...
    }
    Ответ написан
    Комментировать
  • Предлагать ли начинающему фрилансеру свои услуги сразу нескольким заказчикам?

    @Stalinko Куратор тега Фриланс
    PHP'шник и фрилансер до мозга костей
    Предлагать однозначно.

    есть шанс что вас возьмут не в один проект(я знаю это редкость) и тогда что делать, если время ограничено.

    Предложить не значит, что вы уже обязываетесь сделать работу.
    Если времени на всех не хватает, то просто отказываетесь и всё. Говорите, что сейчас заняты на другом проекте. Абсолютно нормальная практика для работающих людей.
    Ответ написан
    Комментировать
  • Стоит ли использовать pug(jade)?

    profesor08
    @profesor08
    Если много повторяющихся элементов, то да, шаблонизатор все гораздо упростит, но есть нюанс, кастомизация повторяющихся элементов в pug не так удобна. Итеррирование не так удобно. Если примешать js код то шаблон превращается в непонятную кашу.

    Теоретически для всего этого можно использовать jsx, но надо будет повозиться.

    Собственно пример. Штампуем компоненты, издеваемся над ними как хотим, в результате получаем html строку, которую можно записать в файл.
    import fs from "fs";
    import React from "react";
    import ReactDOMServer from "react-dom/server";
    
    const Label = () => <div className="label">Label text</div>;
    
    const Text = ({ id }) => <div className="text">Block {id}</div>;
    
    const Block = ({ id }) => {
      return (
        <div className="block">
          <Label />
          <Text id={id} />
        </div>
      );
    };
    
    const Document = () => {
      const blocks = [];
    
      for (let i = 0; i < 10; i++) {
        blocks.push(<Block key={i} id={i} />);
      }
    
      return (
        <html>
          <head>
            <title>Parcel Sandbox</title>
            <meta charSet="UTF-8" />
          </head>
    
          <body>{blocks}</body>
        </html>
      );
    };
    
    const html = ReactDOMServer.renderToStaticMarkup(<Document />);
    
    fs.writeFile("index.html", html);
    Ответ написан
    Комментировать
  • Как оформить текст таким образом?

    @strelok011
    Есть несколько реализаций.
    1 - css gradient для текст. Косяк - работает только в веб-кит браузерах. Пример тут https://cssgradient.io/blog/css-gradient-text/
    2 - более сложные варианты, построенные на clip-path, но более железобетонные. Примеры можно посмотреть тут https://css-tricks.com/how-to-do-knockout-text/
    Ответ написан
    1 комментарий
  • Как сделать треугольник с border?

    Как сделать вот такой треугольник, и чтобы при наведении красился в голубой цвет?


    1) Делаете спрайт из двух SVG-элементов
    2) Задаёте его фоном для элемента
    3) При наведении смещаете

    Результат
    https://codepen.io/hisbvdis/pen/OJLaRMd
    Ответ написан
    Комментировать
  • Стоит ли выполнять такое тестовое задание?

    Anitamsk
    @Anitamsk
    Frontend Dev
    Однозначно нет, я бы даже сказала что это тестовое задание на "лоха". По факту тестовое задание для веб-мастера - это - сверстать одну из страниц корпоративного сайта(не лендинг), и добавить ей логики посадив на нужную CMS. Даже по одной сверстанной(семантически правильной, адаптивной, подготовленной для продвижения) хватает что бы понять насколько долго человек верстает, или находится в вебе. Если вы вываливаете "дивянку", или относитесь к своей работе - ну сделаю не очень, это ведь тестовое - значит это провал.

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

    PS: В свое время сделала по-хитрому) Дали мне такой проект как тестовое задание, я делала его 2 недели, и когда подошло время сдавать его, показала его через teamviewer - работодатель убедился что все норм, попросил его скинуть - я попросила денег. Он офигел от наглости, и в итоге мы договорились о 12 т.р. Но на работу меня так и не взяли)
    Ответ написан
    9 комментариев
  • Каким способом можно сверстать эту конструкцию?

    Get-Web
    @Get-Web Куратор тега CSS
    Front-End Developer
    Глядя на такие ответы хочется плакать. Если на изображении ромбы это не значит что они перевернутые квадраты.
    Это все обычные квадраты, которые можно прижать друг к другу с помощью отрицательных margin и соответственно адаптировать такие блоки не составит никакого труда при помощи медиа запросов:

    Посмотреть на codepen: https://codepen.io/get-web/pen/pozdRjx
    Посмотреть на jsfiddle: https://jsfiddle.net/l2banners/4n1sbc6g/2/

    Ответ написан
    5 комментариев
  • Можно ли зарегистрировать собственный домен?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    spoiler
    Небольшая вводная. Под регистрацией домена обычно подразумевается свой адрес сайта. Но технически так говорить нельзя. В адресе сайта используется доменное имя, например, www.example.com, а словом домен обозначается каждая из частей доменного имени, то есть отдельно www, example и com. Но далее я отвечу на вашем языке.

    Собственный домен зарегистрировать невозможно, потому что домен не выдается в собственность. Его можно только арендовать, при этом формально принадлежать он будет не вам. Тем не менее, вы сможете им пользоваться.
    spoiler
    Если вы хотите считать домен собственным, даже если у вас его могут отобрать при несоблюдении вами условий, то можете считать его своим, как и какую-нибудь арендованную квартиру, которая по всем признакам является вашей, но формально вам не принадлежит.

    Зарегистрировать можно даже бесплатно у соответствующего регистратора, который позволяет это сделать.

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

    P.S. Чтобы лучше понимать тему, почитайте про домены вообще.
    Ответ написан
    Комментировать
  • Как реализовать подчёркивание текста градиентом в 15 px?

    rockfeeler
    @rockfeeler
    Фронтендер, дизайнер, верстальщик-перфекционист
    4 комментария
  • Как немного видоизменить курсор?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Комментировать
  • Как изменить стили через javascript?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    var el = document.querySelector("a[href='/products/962112']"); // в селекторе хардкод... не будет ссылки с таким href - все сломается
    
    // тут был цикл, но я его убрал, ибо один элемент берем
    
    var products = document.getElementsByClassName('product'); // тут коллекция, ее надо перебирать циклом
    for(var i = 0; i < products.length; i++) {
      products[i].style.height = el.style.height;
    }


    UPD: по просьбе origami1024 добавляю вариант с CSSOM
    Во-первых, нам понадобится новый элемент style, чей CSSOM мы будем править, его стоит разместить ниже других стилевых подключений (не важно через style или link), я же просто добавлю в конец head
    Сам CSSOM элемента style доступен через его свойство sheet - извлеку его сразу в переменную:
    const {sheet} = document.head.appendChild(document.createElement('style'));

    Во-вторых, в CSSOM правила пронумерованы с 0. Притом можно заменять существующие правила по их индексу, а можно вставлять новые в конец (индекс при этом так же нужно указывать, а если указать неверно - выкинет эксэпшн). Нам же удобнее обращаться к правилам по селектору, поэтому я сделаю объект для сопоставления селектора с индексом правила и счетчик индексов:
    const rulesIndexesBySelector = {};
    let nextIndex = 0;

    Ну и наконец реализуем вспомогательную функцию для обновления CSSOM правила по его селектору:
    function updateRule(selector, declarations) {
      const rule = `${selector}{${declarations}}`; // полное правило - селектор + декларации в {}
      if(selector in rulesIndexesBySelector) {
        // индекс селектора уже известен, обновим правило
        const index = rulesIndexesBySelector[selector];
        sheet.deleteRule(index); // сначала удалим старое правило освободив индекс и отменив его свойства
        sheet.insertRule(rule, index); // и вставим на его место новое
      } else {
        // новый селектор
        const index = nextIndex++; // важен именно постинкримент, чтоб самый первый получил 0, второй 1 и т.д.
        rulesIndexesBySelector[selector] = index; // запомним на будущее
        sheet.insertRule(rule, index); // и вставим правило в конец
      }
    }

    Пример примитивный, но каждый думаю спокойно расширит его под себя.
    У меня например declarations собираются из vue объекта, который можно мутировать (реактивные стили оО) + добавляются вендорные префиксы, если браузер не знает каких-то свойств (не автопрефиксер конечно, но зато работает по месту)

    Использовать это все теперь можно крайне просто:
    updateRule('.product', 'height: 40px; width: 50px');
    Ответ написан
    5 комментариев
  • Как выполнить JS код после загрузки страницы?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    См. подробнее про загрузку скриптов с async и defer

    // вызовет initialize только когда догрузятся все скрипты defer:
    document.addEventListener('DOMContentLoaded', initialize);
    Ответ написан
    1 комментарий
  • Что поправить для события?

    0xD34F
    @0xD34F Куратор тега JavaScript
    $(document).wheel(

    Такого метода - wheel - нет.

    var item =  $('#time');
    if (e.deltaY > 0) item.scrollLeft += 100;

    Откуда у jquery объекта возьмётся свойство, принадлежащее узлу DOM-дерева? Да ниоткуда. Чтобы изменить значение свойства узла, надо или достать его (узел) из jquery объекта, или воспользоваться предназначенным для этого методом:

    $(document).on('wheel', function(e) {
      $('#time')[0].scrollLeft += e.originalEvent.deltaY > 0 ? 100 : -100;
      // или
      $('#time').get(0).scrollLeft += [ -100, 100 ][+(e.originalEvent.deltaY > 0)];
      // или
      $('#time').prop('scrollLeft', (i, val) => val + 100 * Math.sign(e.originalEvent.deltaY));
    });
    Ответ написан
    Комментировать
  • Как отфильтровать массив по типу данных?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Проверяем, что возвращает оператор typeof:

    const strings = arr.filter(n => typeof n === 'string');
    const numbers = arr.filter(n => typeof n === 'number');
    const booleans = arr.filter(n => typeof n === 'boolean');

    Или, проверяем, что элемент и результат его преобразования в значение интересующего нас типа совпадают:

    const strings = arr.filter(n => n === `${n}`);
    const numbers = arr.filter(n => n === +n); // в отличие от typeof, отбрасывает NaN
    const booleans = arr.filter(n => n === !!n);

    Или, группируем массив по имени типа, а дальше извлекаем чего надо:

    const groupedByType = arr.reduce((acc, n) => {
      const type = n == null ? `${n}` : n.constructor.name.toLowerCase();
      (acc[type] = acc[type] || []).push(n);
      return acc;
    }, {});
    
    const strings = groupedByType.string;
    Ответ написан
    Комментировать
  • Несколько элементов сверху, один снизу на flexbox?

    @BigSmoke
    <div class="wrap">
      <div class="box box-1">1</div>
      <div class="box box-2">2</div>
      <div class="box box-3">3</div>
    </div>


    html, body {
      height: 100%;
      margin: 0;
    }
    
    .wrap {
      display: flex;
      flex-direction: column;
      justify-content: space-between;
      height: 100%;
    }
    
    .box {
      font-size: 20px;
      display: flex;
      justify-content: center;
      align-items: center;
      width: 70px;
      height: 70px;
      background-color: green;
    }
    
    .box-3 {
      margin-top: auto;
    }
    Ответ написан
    Комментировать
  • Как сверстать такой элемент под текстом?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    Ответ написан
    Комментировать
  • Удалить все числа из массива, которые меньше 1?

    @architawr
    "Ok, Google" и все твои проблемы решены
    nums.filter(num => num > 1)
    Ответ написан
    4 комментария