• Как растянуть ссылки по ширине блока без отступов по краям (принцип работы justify в text-align)?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    В этой статье перечислено несколько способов решения данной проблемы - на любой вкус. Только CSS и никакого JS.
    Ответ написан
    Комментировать
  • Как одновременно анимировать несколько свойств jquery?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    Для решения этой задачи в jQuery есть метод animate. Для одного элемента задаются сразу несколько изменяемых свойств, для разных элементов анимация по умолчанию производится одновременно.
    Ответ написан
    Комментировать
  • Возможно ли с помощью javascript выполнять вычисления на графическом процессоре?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    Только, если ты напишешь свой собственный интерпретатор js. В существующих реализациях js такой возможности нет.
    Ответ написан
    Комментировать
  • Как реализовать цикличный алгоритм расчета даты в php?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    Посмотри на функцию getdate - возвращаемые элементы wday и mday помогут решить задачу.
    Ответ написан
    Комментировать
  • Как исправить верстку ie 8 и padding ?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    Вообще-то IE8 поддерживает box-sizing: htmlbook.ru/css/box-sizing
    Ответ написан
    Комментировать
  • Как поменять прозрачность во вложенном div или img?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    Никак не сделать. Opacity влияет на все вложенные элементы. Так что прозрачность вложенных div / img можно только увеличить, но уменьшить невозможно. В простых случаях прозрачность внешнего div'а можно эмулировать без opacity - с помощью png, или rgba(). В более сложных - придётся использовать наложение слоёв (position, z-index).
    Ответ написан
    Комментировать
  • Адаптивные модальные окна, лучшее решение. Какое оно?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    arcticlab.ru/arcticmodal - маленькая css и правильная обработка прокрутки. Вариант, предложенный @pchelovek, прокрутку вообще игнорирует.
    Ответ написан
    6 комментариев
  • Как найти последовательность тегов в html-документе?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    Проще всего это сделать с помощью регулярных выражений. Например, вот так:
    $val=preg_replace('#<p[^>]*>\s*((?:<img\s[^>]+>\s*){2,})</p[^>]*>#is', '<div>$1</div>', $val);

    Если же это не обязательно <p>, а любой тег, то:
    $val=preg_replace('#<([[:alpha:]]+)(?:\s[^>]*)?>\s*((?:<img\s[^>]+>\s*){2,})</\g{1}(?:\s[^>]*)?>#is', '<div>$2</div>', $val);
    Ответ написан
    2 комментария
  • Пишу html/css/js песочницу для будущих курсов по веб- разработки. Как с помощью JQuery связать div и iframe?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    Содержимое не испаряется, а переносится. DOM-элемент не может быть одновременно в нескольких местах. Потому, когда ты делаешь append, происходит перемещение элемента из старого места в новое. Это не имеет никакого отношения к событию click.

    Сначала элемент необходимо клонировать (для чего в jQuery есть метод clone), а уже созданный клонированием новый элемент вставлять.

    И возьми за правило явно объявлять все локальные переменные посредством слова var - чтобы не выискивать потом по несколько часов причины непонятных глюков.
    Ответ написан
  • Как стилизовать стрелочки тегов select и input[type="number"]?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    jqyery chosen, jquery select2 и т.д. Плагинов для стилизации полей ввода море - на любой вкус.
    Ответ написан
    2 комментария
  • Как сделать редирект после регистрации (php) ?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    После всей обработки регистрации, но до вывода чего-либо в браузер необходимо добавить код:

    header('Location: /account/settings');
    exit;
    Ответ написан
    Комментировать
  • Как собрать многоуровневый массив?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    Зачем такие сложности? Всё делается намного проще - без рекурсий и проверок множества дополнительных условий:

    $input = 'Шла Саша по шоссе и сосала сушку';
    
    $inp_arr = preg_split('#[[:space:]]+#s', trim($input)); // Список обрабатываемых слов
    $current = array(); // Список уже обработанных слов
    $result  = array(implode(' ', $inp_arr)); // Добавляем в результат исходную фразу
    while (count($inp_arr) > 1) { // Пока в списке обрабатываемых не менее 2 слов
      $head = array(); // Голова списка обрабатываемых слов
      $tail = $inp_arr; // Хвост списка обрабатываемых слов
      while (count($tail) > 1) { // Пока в хвосте не менее 2 слов
        $head[]   = array_shift($tail); // Перенос первого слова хвоста в конец головы
        // Добавляем комбинацию в результат
        $result[] = array_merge($current, array(implode(' ', $head), implode(' ', $tail)));
      }
      $current[] = array_shift($inp_arr); // Перенос первого слова обрабатываемых в уже обработанные
    }
    
    var_export($result);


    Вариант, который перебирает все комбинации, всё же удобнее сделать рекурсивным, но алгоритмически он проще, т.к. не надо заботиться о том, чтобы в $current было по одному слову:

    $input="Шла Саша по шоссе и сосала сушку";
    $result=generate(preg_split('#[[:space:]]+#s', trim($input)));
    var_export($result);
     
    function generate($inp){
      $out=array(implode(' ', $inp));
      $head=array();
      while(count($inp)>1){
        $head[]=array_shift($inp);
        foreach(generate($inp) as $val){
          $out[]=array_merge(array(implode(' ', $head)), (array)$val);
        }
      }
      return $out;
    }

    Если нужно сортировать по длинам строк, то достаточно изменить порядок обработки: предыдущий вариант начинает перебор с пустой головы и длинного хвоста, а надо с длиной головы и пустого хвоста:

    function generate($inp){
      $out=array(implode(' ', $inp));
      $tail=array();
      while(count($inp)>1){
        array_unshift($tail, array_pop($inp));
        foreach(generate($tail) as $val){
          $out[]=array_merge(array(implode(' ', $inp)), (array)$val);
        }
      }
      return $out;
    }

    Если же нужно отсортировать результат по длинам строк независимо от того, в какой позиции эта строка находится, то проще всего - как и сказал @Fesor - использовать отдельную сортировку результата. Например, вот так:

    usort($result, function($val_1, $val_2){
      // Получение кол-ва слов в строках сравниваемых вариантов
      $len_1=array_map(function($data){ return count(preg_split('#[[:space:]]+#s', $data)); }, (array)$val_1);
      $len_2=array_map(function($data){ return count(preg_split('#[[:space:]]+#s', $data)); }, (array)$val_2);
    
      // Массивы кол-ва слов, отсортированные по убыванию
      $sort_len_1=$len_1;
      $sort_len_2=$len_2;
      rsort($sort_len_1);
      rsort($sort_len_2);
    
      // Проверяем, что два варианта имеют разное кол-во слов в строках
      for($i=0; $i<count($sort_len_1); $i++){
        if($sort_len_1[$i]!=$sort_len_2[$i]){
          return $sort_len_2[$i]-$sort_len_1[$i];
        }
      }
    
      // К данному моменту варианты по длинам строк уже отсортированы
      // Этот цикл сортирует варианты с одинаковыми длинами по местоположению длинных строк
      // Если такая сортировка не требуется - удалить цикл
      for($i=0; $i<count($len_1); $i++){
        if($len_1[$i]!=$len_2[$i]){
          return $len_2[$i]-$len_1[$i];
        }
      }
    
      return 0;
    });
    Ответ написан
  • Поиск в тексте ссылки на файл для последующей замены html-кодом?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    Например, вот так:

    preg_match_all('#^[ \t]*(\S+\.mp3)([ \t]+(\S.*))?\s*$#im', $inp, $result);

    Ограничение: имя mp3-файла не должно содержать пробелов
    Ответ написан
    1 комментарий
  • Какой грид посоветуете php mysql?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    И в чём проблема? JQuery + PHP + 2-4 часа для написания собственного велосипеда. Тривиальная задача, присутствующая в любом учебнике.

    Не хочешь думать - ставь Yii: там утилита gii автоматом сгенерирует тебе CRUD-интерфейс, решающий данную задачу.
    Ответ написан
    Комментировать
  • Как на jquery запретить всплывать событие scroll?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    event.stopPropagation() отключает другие пользовательские обработчики, повешенные на данное событие, но не влияет на всплытие. Всплытие события запрещается вызовом event.preventDefault(). Часто оба запрета используются одновременно:

    event.preventDefault();
    event.stopPropagation();
    Ответ написан
  • Как отобразить прогессбар для каждого загружаемого файла?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    Прежде чем задавать подобные вопросы, советую хотя бы посмотреть демо-примеры. Там есть демки с прогресс-барами для каждого файла.
    Ответ написан
    1 комментарий
  • Как скопировать текст из переменной в буфер обмена Google Chrome?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    Нажать F12 - откроется панель разработчика. Там перейти на вкладку Console (js-консоль).
    Ввести команду console.log(имя переменной);
    Отобразившееся содержимое переменной выделить мышкой и скопировать в буфер обмена стандартным образом (Ctrl+C, или из меню по правой кнопке мыши).

    Ещё лучше - непосредственно в js-коде вставить команду console.log(имя переменной); - тогда содержимое переменной автоматически выведется в вышеуказанную консоль.

    Если же нужно программно работать с буфером обмена, то можно установить, например, плагин jQuery zClip: habrahabr.ru/post/159879
    Ответ написан
    Комментировать
  • Как реализовать не стандартные (обрезанные) границы в блоке,за которым имеется цветной фон?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    В HTML есть тег LEGEND, как раз и обеспечивающий вывод заголовка вместо части рамки.

    А если серьёзно, то задача элементарно решается посредством презренной табличной вёрстки - достаточно вспомнить об атрибутах colspan и rowspan. Например, так:

    <table style="border: none; border-collapse: collapse; width: 800px;">
      <tr>
        <td colspan="2" rowspan="2" style="padding-right: 10px; font-size: 200%; white-space: nowrap;">
          Здесь будет заголовок
        </td>
        <td style="width: 100%;  font-size: 0px;"></td>
      </tr>
      <tr>
        <td style="border-top: 1px solid #000000; border-right: 1px solid #000000; font-size: 0px;"></td>
      </tr>
      <tr>
        <td style="width: 10px; font-size: 0px;"></td>
        <td colspan="2" style="border-right: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; padding: 10px;">
          А здесь будет контент
        </td>
      </tr>
     </table>


    А вот та же самая, идея, но в блочной вёрстке:

    <div style="width: 800px;">
      <div style="display: table-cell; height: 25px; font-size: 20px; padding: 0px 10px 0px 0px; white-space: nowrap;">
        Здесь будет заголовок
      </div>
      <div style="display: table-cell; width: 100%; height: 25px; vertical-align: top;">
        <div style="margin-top: 12px; height: 12px; border-top: 1px solid #000000; border-right: 1px solid #000000;"></div>
      </div>
      <div style="margin-left: 10px; padding: 10px; border-right: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; padding: 10px;">
        А здесь будет контент
      </div>
    </div>


    При использовании :after можно ещё упростить: codepen.io/anon/pen/kDLiA
    Ответ написан
    2 комментария
  • Как организовать базу данных?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    Применительно к структуре таблиц, предложенной sayber: добавь в questions поле count типа int со значением по умолчанию 0, а на таблицу answers (должна быть InnoDB) повесь триггеры:

    DELIMITER $$
    
    CREATE DEFINER = 'root'@'%' TRIGGER answers_after_insert
    AFTER INSERT ON answers FOR EACH ROW
    BEGIN
      UPDATE questions
      SET questions.count = questions.count + 1
      WHERE questions.question_id = NEW.question_id;
    END
    
    $$
    
    CREATE DEFINER = 'root'@'%' TRIGGER answers_after_delete
    AFTER DELETE ON answers FOR EACH ROW
    BEGIN
      UPDATE questions
      SET questions.count = questions.count - 1
      WHERE questions.question_id = old.question_id;
    END
    
    $$
    
    DELIMITER;


    В этом случае поле questions.count автоматически будет содержать точное кол-во ответов на вопрос и фильтрация/сортировка по кол-ву ответов становится тривиальной.
    Ответ написан
    Комментировать
  • Можно ли использовать WordPress или нужно писать свой движок?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    WordPress хорош только для тех случаев, когда вся структура данных укладывается в стандартную иерархию (страницы, посты, категории, метки, произвольные поля, таксономия и т.д.). Т.е. когда самописных SQL-запросов вообще не требуется.

    Если же необходимо большое кол-во сложных запросов, то лучше брать не CMS, а фреймворк (например, Yii). Сложность написания сайта не намного больше (для всех стандартных вещей существуют готовые модули), зато получаешь полный контроль над запросами к БД.
    Ответ написан
    Комментировать