• Как сверстать этот элемент?

    mizutsune
    @mizutsune
    Frontend Developer
    В этом элементе нет ничего сложного. Карточка, внутри иконка, заголовок и текст с описанием.



    В песочнице в качестве иконок используются Inline SVG. Разумеется их лучше заменить тегами <img /> с путями до иконок, атрибутом alt и другими нужными атрибутами.
    Ответ написан
    3 комментария
  • Как сделать анимацию с кнопками?

    mizutsune
    @mizutsune
    Frontend Developer
    Как вариант можете попробовать такой плагин Vanilla-JS-Magic-Line-Navigation.

    Можно конечно и на CSS сделать, но функционал будет сильно урезан и вообще, сама реализация скорее всего будет не слишком норм.
    Ответ написан
    1 комментарий
  • Как сделать так, чтобы не обновлялась страница при отправки формы с помощью ajax?

    KorniloFF
    @KorniloFF Куратор тега JavaScript
    Работаю по font-end / JS
    $('[data-submit]').on('submit', function (e) {
            e.preventDefault();
            // ... тут обрабатываем и валидируем
            this.form.submit();
        })
    Ответ написан
    Комментировать
  • Почему теряется высота у одного из flex блоков, если ему задать position:absolute?

    @AntowaKartowa
    Все очень просто. У тебя флекбокс ячейка остается той же высоты как ты и ожидаешь. Но рамка цветовая у тебя установлена не на флексбокс блок, а на блок который становиться абсолютным. И его размеры никак не привязаны к родительскому флексбок блоку. Достаточно просто добавить about__card min-height: 100% и все.
    Ответ написан
    Комментировать
  • Могу ли менять стили другого элемента при наведении одного элемента?

    VanDerBorsh
    @VanDerBorsh
    Люблю помогать людям, и делиться знаниями
    Полностью рабочий вариант на Javascript.
    Сохраните код как HTML и откройте в браузере.

    Читайте комментарии в коде.
    Первый вариант

    <div class="certificate">
        <div class="certificate__body">
          <h2 class="certificate__title">Сертификат ученика всем, кто дойдет до конца!</h2>
          <p class="certificate__text">Успешно справившись со всеми заданиями, по итогам обучения Вы получите сертификат участника.</p>
          
          <!-- В кнопку добавлены два регистратора событий указателя. (onmouseover и onmouseout)-->
          <button class="btn" onmouseover="bigImage();" onmouseout="smallImage();">Подробнее</button>
        </div>
        <div class="certificate__image">
        <!-- Изображению добавлен id для обращения к нему-->
          <img id="certificate__image" src="https://hsto.org/r/w120/webt/62/8f/43/628f43b33f1d9027652674.jpeg" alt="">
        </div>
      </div>
    
    
      <script type="text/javascript">
    
        //Берем наше изображение по ИД
        let myImage = document.getElementById('certificate__image');
        
        //Увеличивает (запускается событием onmouseover)
        function bigImage(){
            myImage.style.width = "502px";
            myImage.style.height= "363.54px";
        };
    
        //Уменьшает  (запускается событием onmouseout)
        function smallImage(){
            myImage.style.width = "250px";
            myImage.style.height= "130px";
        };
    
      </script>




    Второй вариант, с переключением класса стиля. через
    element.classList.toggle('имя стиля');

    Второй вариант

    <div class="certificate">
        <div class="certificate__body">
          <h2 class="certificate__title">Сертификат ученика всем, кто дойдет до конца!</h2>
          <p class="certificate__text">Успешно справившись со всеми заданиями, по итогам обучения Вы получите сертификат участника.</p>
          
          <!-- В кнопку добавлены два регистратора событий указателя. (onmouseover и onmouseout)-->
          <button class="btn" onmouseover="myImage.classList.toggle('large');" onmouseout="myImage.classList.toggle('large');">Подробнее</button>
        </div>
        <div class="certificate__image">
        <!-- Изображению добавлен id для обращения к нему-->
          <img id="certificate__image" src="https://hsto.org/r/w120/webt/62/8f/43/628f43b33f1d9027652674.jpeg" alt="">
        </div>
      </div>
    
    <style>
        /* Это класс увеличивающий изображение */
        .large{
            width: 502px;
            height: 363.54px;
        }
    </style>
    
    <script type="text/javascript">
        //Берем наше изображение по ИД
        let myImage = document.getElementById('certificate__image');
    </script>

    Ответ написан
    Комментировать
  • Могу ли менять стили другого элемента при наведении одного элемента?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Чтобы сработал ваш селектор, разметка должны быть примерно такой

    <div class="certificate">
      <div class="certificate__body">
        <h2 class="certificate__title">Сертификат ученика всем, кто дойдет до конца!</h2>
        <p class="certificate__text">Успешно справившись со всеми заданиями</p>
        <button class="btn">Подробнее</button>
        <div class="certificate__image">
          <img src="./img/certificate.png" alt="">
        </div>
      </div>
      <!--<div class="certificate__image">
        <img src="./img/certificate.png" alt="">
      </div>-->
    </div>


    С текущей разметкой вам поможет только javascript. Слушайте mouseenter/mouseleave на кнопке и добавляйте/удаляйте класс на картинке.
    Ответ написан
    Комментировать
  • Не до конца правильно работает добавление текста на страницу, как исправить?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Если вам надо заменить содержимое нескольких элементов с одинаковым классом, то и выбирать надо не один элемент, а несколько. Соответственно и замену надо производить циклом.
    const today = String((new Date()).getDate()).padStart(2, '0');
    
    const dayStartElements = document.querySelectorAll(".js-text");
    dayStartElements.forEach((el) => { el.innerText = `${dd}` });
    Ответ написан
    1 комментарий
  • Почему-то не работает отправка формы, почему?

    Immortal_pony
    @Immortal_pony Куратор тега PHP
    Sendmail на сервере настроен? Если нет или не знаешь, что это такое, то явно пропиши параметры SMTP в своём php-файле

    $mail->isSMTP(); //Send using SMTP
    $mail->Host = 'smtp.example.com';  //Set the SMTP server to send through
    $mail->SMTPAuth = true;  //Enable SMTP authentication
    $mail->Username  = 'user@example.com'; //SMTP username
    $mail->Password  = 'secret';  //SMTP password
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;  //Enable implicit TLS encryption
    $mail->Port = 465; //TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS`


    Кстати, именно так и по умолчанию и было сделано в документации к библиотеке, который ты пользуешься, в разделе Simple Example
    Ответ написан
  • Как определить при помощи JS браузер пользователя и его ip?

    SPART4K
    @SPART4K
    Middle Front-end Developer (Vue.js/Nuxt.js)
    navigator.userAgent
    Информацию о браузере - устройствe и тп

    fetch('https://api.ipify.org/').then(
      r => r.text()
    ).then(console.log);

    ip
    Ответ написан
    Комментировать
  • Как такое сверстать а потом рендерить? Это таблица?

    Да, это таблица. Сверстать можно по разному - grid, flex, table. Как Вам больше нравится
    Ответ написан
    1 комментарий
  • Как сделать на JS чтобы скрипт срабатывал только на определенной ширине экрана?

    mizutsune
    @mizutsune
    Frontend Developer
    Как вариант можно использовать window.matchMedia.

    Пример:

    const slider = new Slider();
    const breakpoint = window.matchMedia("(min-width: 1200px)");
    
    if (breakpoint.matches) {
       slider.init();
    }


    Или:

    const slider = new Slider();
    const breakpoint = window.matchMedia("(max-width: 1200px)");
    
    const breakpointChecker = () => {
       if (breakpoint.matches) {
          slider.init();
       } else {
          slider.destroy();
       }
    };
    
    breakpoint.addEventListener("change", breakpointChecker);
    breakpointChecker();


    У нормальных слайдеров имеются методы init() и destroy() или аналогичные методы для включения и отключения слайдера. Так вот, используя эти методы в связке с matchMedia(), можно добиться желаемого результата.

    Альтернативный вариант.

    Можно использовать window.innerWidth или element.clientWidth или window.outerWidth в связке с условным оператором if.

    Пример:

    // если ширина окна больше или равна 1200px,
    // выполняем инициализацию слайдера
    
    if(window.innerWidth >= 1200) {
       slider.init();
    }


    Однако данная проверка будет работать только при загрузке страницы и если нужно включать/отключать слайдер при ресайзе, то в таком случае потребуется использование обработчика с событием resize + с каким-нибудь флагом или с функцией debounce, чтобы не допускать вызова функций при каждом изменении размера окна.
    Ответ написан
    Комментировать
  • Как сделать на JS чтобы скрипт срабатывал только на определенной ширине экрана?

    @pjery3
    На любом более менее адекватном слайдере есть метод инициализации и удаления слайдера. Условием window.innerWidth задавайте когда удобно
    Ответ написан
    Комментировать
  • Как сделать на JS чтобы скрипт срабатывал только на определенной ширине экрана?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Есть скрипт слайдера

    Здорово!

    нужно сделать так, чтобы он срабатывал только на определенной ширине

    Определить необходимую ширину в условие > выполнить "срабатывание".

    Window.innerWidth
    Element.clientWidth

    как это сделать на чистом javascript

    В целом, можно и на грязном...
    Ответ написан
    Комментировать
  • Можно ли одновременно использовать flexbox и grid на одной странице?

    Думаю они и созданы для того чтоб их использовать там, где не справляются остальные инструменты.
    Ответ написан
    Комментировать
  • Можно ли одновременно использовать flexbox и grid на одной странице?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Можно и нужно. Grid создали не для того, чтобы заменить Flex. Это 2 разных метода построения лейаута, если грубо:

    - Grid = 2D (расположение элементов по 2м осям одновременно, по горизонтали и по вертикали)
    - Flex = 1D (расположение элементов только по 1й оси, горизонтали или вертикали)

    Еще грубее - flex хорош для "инлайна", выравнивая элементов в одной строке или колонке, как правило это конкретно контент-элементы, а grid - хорош для контейнеров и более общих элементов (карточек и тд). То есть, гридом задали общую структуру и лейаут, флексами внутри блоков расставили контент-элементы.
    Ответ написан
    2 комментария
  • Как найти работу?

    @denisromanenko
    Бросай учить PHP, следующим шагом после хорошего изучения JS по learn.javascript.ru берись за React, вакансий больше, поле для изучения меньше.
    Ответ написан
    Комментировать
  • Как найти работу?

    Starina_js
    @Starina_js
    full-stack web dev
    А есть какое-то портфолио? Если нет, то сложнее, нужно обязательно делать. Про опыт будут сразу спрашивать, а только потом уточнять знания.
    Нужно получать опыт: допустим придумать свой проект и реализовать, посмотреть на фриланс биржах задания и попытаться сделать для себя, может знакомы какие подкинут работку с версткой. Потом это все оформить грамотно.

    Продолжать учиться и лучше выбрать одно направление.
    Раз вы погрузились в верстку, в веб-фронтенд, ну значит копайте дальше туда — изучайте javascript, изучайте библиотеки, npm, node.js , git , базу по терминалу (linux), чуть можно пройтись по бекенду и базам данных (чтобы хоть понимать зачем это все)

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

    Возможно стоит на первом этапе рассмотреть местные веб-агентства, веб-студии, что работают на техподдержке проектов, кому нужны верстальщики. Часто нужны свободные руки — что-то подверстать, подкрутить, подделать.

    Для фронтенда есть карта компетенций — https://roadmap.sh/frontend , почитайте, по-гуглите что изучать.

    В теории можно поискать на фриланс биржах мелкие проекты по верстке, пытаться забирать в работу, но не стоит заказчиков вводить в заблуждение по поводу опыта, как есть пишите. Заказчики тоже все понимают :)

    А к главному вопросу "как найти работу", буду кэпом — искать её и предлагать свои услуги.
    • В соц сетях опубликуйте свое резюме, портфолио, чем вы можете быть полезны, с просьбой посоветовать себя кому-нибудь.
    • Составить резюме на hh.ru , career.habr.com , superjob . Предварительно посмотрите на ютуб ролики на эту тему, много подсказок найдете.
    • В телеграмме, в вк поищите группы / каналы где выкладывают вакансии — публикуйтесь там, предлагайте себя.
    • На фриланс биржах оформите свое портфолио, откликайтесь на задачи — делайте. Посмотрите у меня в профиле , был вопрос на эту тему, я давал ссылки на фриланс биржи.
    • Откликайтесь на вакансии, на задачи, предлагайте себя, продавайте себя)


    В идеале ментора себе бы подыскать, на обучение да и карьерного)
    Ответ написан
    Комментировать
  • Как найти работу?

    mipfikus
    @mipfikus
    Вообще я не знаю, но
    Можешь, только твой первый клиент тебя скорее всего возненавидит. Ты будешь страдать - однозначно. Но кмк без боли нет прогресса.
    Бери любой заказ "сделать сайт" знакомым, соседям, листовки хоть раздавай. И делай, что говорят, чего хотят. По мере продвижения этого сайта ты сам поймешь чего тебе реально надо подучить и чего не надо. Учиться, учиться, учиться, и работать. И деньги первые получишь. Работай сам на себя. Конец.
    Ответ написан
    Комментировать
  • Как задать background на header footer и все секции внутри контейнера?

    @ValarMorqulis
    Обернуть все нужные секции, хедер и футер в див.
    В стилях задать max-width, padding и margin как у контейнера и добавить background с градиентом...
    Ответ написан
    Комментировать