Ответы пользователя по тегу HTML
  • В чем лучше указывать ширину и высоту блоков?

    @alexalexes
    Зависит от назначения блоков.
    Точные размеры, да, возможно, примените пиксели, а может и сантиметры или дюймы.
    Относительные размеры понадобятся - возьмете проценты.
    Растягивать относительно содержимого - вообще будет auto.
    Адаптивно будете работать - еще куча альтернативных размеров появится в медиа-запросах.
    Ответ написан
    Комментировать
  • Как добавить текст к value при отправке?

    @alexalexes
    Добавляете еще одно скрытое поле с id="field_name_hidden", видимому полю присваиваете id="field_name_showed". Добавляете форме свой обработчик события onsubmit.
    <form .... onsubmit="my_submit(e)">
    ...
    <label>Имя</label>
    <input id="field_name_showed" type="text"  value=""> <!-- Поле, которое видит пользователь -->
    <input id="field_name_hidden" type="hidden"  value=""> <!-- Скрытое поле для отправки -->

    function my_submit(e)
    {
      e.preventDefault(); // останавливаете выполнение сабмита
      document.getElementById("field_name_hidden").value = document.getElementById("field_name_showed").value + " (добавленный текст)"; // добавляете в скрытое поле формы имя и что хотели еще.
     e.target.submit(); // перезапускаете сабмит формы
    }

    На стороне сервера перехватываете значение поля field_name_hidden.
    Ответ написан
    Комментировать
  • При переносе скрипта из .html файла в .js он перестает работать. Почему?

    @alexalexes
    DOM еще не доступен, когда скрипт пытается работать с его элементами.
    Два пути решения:
    а) Перенести подключение js файла после тега body.
    б) Изменить работу скрипта так, чтобы работа с DOM началась после загрузки DOM-дерева.
    Ответ написан
    1 комментарий
  • Как верстать правильно если на компьютерах стоит разный зум в настройках windows?

    @alexalexes
    Вам нужно определиться, какую цель вы преследуете при выборе свойства font-size.
    1. Физический размер элемента не должен отличаться или малозависим от настроек браузера устройства.
    Решение: используем физические величины: mm, cm, in.
    2. Размер элемента должен быть всегда столько-то пикселей. Используем px.
    3. Размер шрифта должен адаптироваться под возможности комфортного отображения на устройстве.
    Используем pt, em, %. В этом случае тестируете разные режимы адаптивности сайта: у пользователя может отличаться размер экрана, плотность пикселей, он может крутить масштаб скажем, от 60% до 150%.
    На разработчика ложится это обязанность, чтобы сайт выглядел приемлемо, в разумных изменениях настроек отображения.
    Могу путать величины CSS, но такие цели точно есть, и они взаимоисключающие.
    Ответ написан
    1 комментарий
  • Нужна помощь с таблицой VUE?

    @alexalexes
    Вы сформируйте структуру данных так, чтобы ее можно было удобно обходить.
    Например, так:
    [
      {
        header_title: "Название некоторого длительного процесса",
        date_begin: , // начало процесса, вычисляется предварительной пробежкой по всем заявкам, поиск минимума
       date_end: , //  конец процесса, вычисляется предварительной пробежкой по всем заявкам, поиск максимума
    appls: [
                 {title: "ЗАЯВКА", date_begin, date_end},
                 {title: "ЗАЯВКА", date_begin, date_end},
        ]
      }
    ]

    И вообще, отпадет вопрос как рисовать таблицу (двумя вложенными v-for).
    Ответ написан
  • Как сделать чтобы iframe подстраивался под адаптивный html внутри него?

    @alexalexes
    iframe - самый древний у дубовый тег по части адаптивности.
    Им можно управлять, задавая конкретные значения ширины и высоты, запрашивая состояние скроллбаров.
    var iframe = document.getElementById('fileUploadIframe');
     iframe.width = iframe.contentWindow.document.body.scrollWidh + "px";
     iframe.height = iframe.contentWindow.document.body.scrollHeight + "px";

    Когда корректировать эти параметры? Нужно смотреть случаи, когда контент Iframe меняется и вешать выполнение этих строк на соответствующие обработчики событий.
    Ответ написан
    Комментировать
  • Как перекрасить таблицу?

    @alexalexes
    У таблицы есть класс white_border, если он используется только на этом элементе, то можете использовать такой селектор после всех селекторов, описывающие общие стили таблиц:
    table.white_border,
    table.white_border th,
    table.white_border td
    {
        border-color: ваш цвет;
    }
    Ответ написан
  • Как подключить на одной странице к одному phpmailer-файлу две формы?

    @alexalexes
    Можно. Самое главное, мы не подключаем php-скрипт, а отправляем данные этих форм на обработку этим php-скриптом. Так проще прийти к пониманию, как оно работает.
    Чтобы php-скрипт мог воспринимать данные первой формы, он должен уметь пренебрегать наличием параметра user_car.
    А делается это таким образом:
    строчка:
    $car = $_POST['user_car'];
    исправляется на:
    $car = array_key_exists('user_car', $_POST) ? $_POST['user_car'] : null;

    и другая строчка:
    $mail->Body    = '' .$name . ' хочет перегнать машину ' .$car. '  из ' .$from. ' в ' .$to. '. <br> Вот его номер телефона ' .$phone;

    исправляется на:
    $mail->Body    = $name . ' хочет перегнать '.(is_null($car) ? 'неуточненную машину' : 'машину ' .$car). '  из ' .$from. ' в ' .$to. '. <br> Вот его номер телефона ' .$phone;

    PS:
    Чтобы вам не прислали js-инъекцию на почту, все принимаемые параметры, из которых формируется текст письма, следует экранировать.
    $name = htmlspecialchars($_POST['user_name']);
    $phone = htmlspecialchars($_POST['user_phone']);
    $car = array_key_exists('user_car', $_POST) ?  htmlspecialchars($_POST['user_car']) : null;
    $from = htmlspecialchars($_POST['from']);
    $to = htmlspecialchars($_POST['to']);
    Ответ написан
    Комментировать
  • Как прекрутить редирект к Api Яндекс карт?

    @alexalexes
    Чтобы определить используемый язык клиентской стороны сайта достаточно проанализировать свойства window.navigator.
    Как определить язык браузера пользователя?
    PS:
    header('loacation ') - вы не можете использовать это в JS, это PHP.
    В JS то же поведение вызывается изменением свойства window.location.href
    Ответ написан
    Комментировать
  • Как сделать визуальный эффект на сайте в виде колонок?

    @alexalexes
    Делать правые и левые отступы, ширину элементов кратно размеру колонки.
    Приведенный пример эту идею и воспроизводит, нужно только покопаться в Elements в панели разработчика браузера, чтобы увидеть эту закономерность.
    Ответ написан
    Комментировать
  • Как правильно оформлять блок в ссылку?

    @alexalexes
    Оборачиваете блок в ссылку.
    <a href="какая-то_ссылка">
    <div class="block__element">
        <img src="<?= SITE_TEMPLATE_PATH; ?>/assets/pictures/image.jpg" alt="" class="block__bg">
        <div class="block__title">
             <span class="block__title-name">Жилищная инициатива</span>
             <p>ул. Попова №150</p>
        </div>
    </div>
    </a>

    или так
    <div class="block__element">
        <a href="какая-то_ссылка">
        <img src="<?= SITE_TEMPLATE_PATH; ?>/assets/pictures/image.jpg" alt="" class="block__bg">
        <div class="block__title">
             <span class="block__title-name">Жилищная инициатива</span>
             <p>ул. Попова №150</p>
        </div>
        </a>
    </div>

    Для тега A обязательным является только атрибут href - его-то роботы и будут анализировать, как точку перехода на другую страницу.
    Еще одно применение тега A - якорь на странице.
    Вы пытались изобразить именно это применение, но делается якорь при помощи атрибута name, а не href.
    <div class="block__element">
        <a name="какой-то_якорь"></a>
        <img src="<?= SITE_TEMPLATE_PATH; ?>/assets/pictures/image.jpg" alt="" class="block__bg">
        <div class="block__title">
             <span class="block__title-name">Жилищная инициатива</span>
             <p>ул. Попова №150</p>
        </div>
    </div>

    Чтобы страница прокрутилась именно до этого якоря при переходе на нее, нужно воспользоваться ссылкой вида "адрес_страницы#какой-то_якорь".
    Ответ написан
  • Почему на MacOS криво работает кнопка наверх?

    @alexalexes
    У вас очень тяжелый файл www.annalev.ru/static/bundle/js/bundle.min.js, в котором лежит функция скроллинга, пока он не загрузиться на клиенте полностью, скроллинг не будет работать.
    Решить проблему можно несколькими путями:
    1) Все легковесные функции, которые не зависят от библиотек поместить в отдельный файл, который будет подключаться выше списком, чем тяжеловесные js.
    2) Написать код легковестных функций прямо в документе (или в общем шаблоне страниц, где описывается head или footer, в случае если у вас CMS);
    3) Написать обработчик скроллинга непосредственно в атрибуте onclick.
    PS: Дополнительно, посмотреть, какой функционал можно "выбросить" в подключенных библиотеках.
    Например, на JQuery можно опционально отключать некоторые возможности и скачивать js-файл значительно меньших размеров, чем в полной комплектации.
    Ответ написан
    4 комментария
  • Можно ли задать соотношение сторон изображения?

    @alexalexes
    У меня самый колхозный вариант был: создать png картинку с прозрачным цветом с нужным соотношением сторон (и самых гигантских размеров, каким может быть монитор) и поместить ее в виде img в контейнер на самом глубоком z-значении.
    Пропорции контейнера выравнивались по содержимому и одновременно он мог быть любых не фиксированных стилем размеров.
    Ответ написан
    Комментировать
  • Как избавиться от бага на IOS?

    @alexalexes
    Скорее всего нужен svg формат для гарнитуры шрифта.
    PS: по стопам вопроса Как подключить шрифт для iOS?
    Ответ написан
  • Как называется данная адаптация?

    @alexalexes
    font-size тоже проценты принимает, но вы ужаснетесь, как он будет тупо все масштабировать.
    Вам все-равно придется корректировать частные случаи медиазапросами.
    Ответ написан
    Комментировать
  • Зашифрованный адрес картинки в браузере?

    @alexalexes
    data:image/png;base64

    Это не адрес, это ресурс самой картинки в формате base64.
    Если вы пытаетесь найти гипотетические файлы каптчи, то будьте уверены, что их нет на ftp, картинки генерируются налету.

    Где этот адрес найти в ручную?

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

    @alexalexes
    Если чисто в теории, то как обычно - JS. Подписываем на событие resize документа функцию, которая будет отслеживать размер контейнера меню и пересчитывать суммарную длину блоков пунктов меню вместе с отступами и прятать/выносить их в/из особого контейнера в конце списка, либо прятать этот контейнер, если все пункты вмещаются в меню.
    Ответ написан
  • Отправка данных в функцию?

    @alexalexes
    В обработчике addItem(id) пробежаться по DOM через дескриптор события event до img и h2, содержащийся в article.
    var article = e.target.parentNode.parentNode;
    var src = article.getElementsByTagName('img')[0].getAttribute('src');
    var title = article.getElementsByTagName('h2')[0].innerHTML;

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

    @alexalexes
    Вот, собственно, решение:
    <input type="button" onclick="calc_table_add_row()" value="Добавить"/>
    <div id="calc_table" class="table"></div>
    <script src="https://code.jquery.com/jquery-3.3.1.js"></script>
    <script>
          // функция для добавления вычисляемой строки
          function calc_table_add_row()
          {
            //Элементы input подписаны на события onkeypress и onblur, что позволяет делать пересчет как при непосредственном изменении значения, так и во время потери фокуса
            $('#calc_table').append(
            '<div class="tr">\
               <div class="td">' + ($('#calc_table>div.tr').length + 1 /* это нумератор строки, добавляется номер от существующего кол-ва строк */) + '</div>\
               <div class="td">\
                 <input type="text" onkeypress="calc_table_recalc_row(event)" onblur="calc_table_recalc_row(event)"/></div>\
               <div class="td"><input type="text" onkeypress="calc_table_recalc_row(event)" onblur="calc_table_recalc_row(event)"/></div>\
               <div class="td"><input type="text" onkeypress="calc_table_recalc_row(event)" onblur="calc_table_recalc_row(event)"/></div>\
               <div class="td"></div>\
               <div class="td"></div>\
             </div>'
            ); 
          }
          // функция-обработчик пересчета значений в строке
          function calc_table_recalc_row(e)
          {
            var cur_input = e.target; // на этом элементе произошло событие (input)
            var cur_td = cur_input.parentNode; // получаем родительский элемент (div.td, в котором нажодится затронутый input)
            var cur_tr = cur_td.parentNode; // получаем родительский элемент (div.tr, в котором нажодится div.td с затронутым input)
            var td_divs = $(cur_tr).find('div.td'); // находим все элементы div.td на данной строке
            try // если возникнет какая-то ошибка, то тихо прекратим вычисления
            {
              var input1 = parseFloat($(td_divs[1]).find('input')[0].value); // получаем значение ячейки 2
              var input2 = parseFloat($(td_divs[2]).find('input')[0].value); // получаем значение ячейки 3
              var input3 = parseFloat($(td_divs[3]).find('input')[0].value); // получаем значение ячейки 4
              if(!isNaN(input1) && !isNaN(input2) && !isNaN(input3)) // все ли значения получились числами вещественными ?
              {
                var result4 = input3 / input2; // считаем результат для ячейки 5
                $(td_divs[4]).html( (result4).toFixed(2) ); // записываем результат в ячейку 5 с округлением до 2 знаков
                $(td_divs[5]).html( (result4 * (input1.toFixed(2) == 10.00 ? 0.1 : 5)).toFixed(2) ); // считаем и записываем результат в ячейку 6 с округлением до 2 знаков
              }
            }
            catch(ex)
            {
            }
          }
    </script>
    Ответ написан
    Комментировать