Ответы пользователя по тегу HTML
  • Как правильно настроить адаптивное изображение по psd макету?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Подобная проблема бывает в случае, когда в зависимости режима просмотра (ширины окна) меняется соотношение сторон - например, в широкоформатном режиме картинка в формате 2:1, а в портретном 1:1 или да же высота больше, чем ширина.
    Для показа такой адаптивной картинки, в идеале нужно подготовить несколько вариантов картинки, для различных режимов просмотра, и показывать нужную картинку в зависимости от media query в css.
    Ответ написан
    2 комментария
  • Расположение тегов в head html?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    можно так сделать. Нужно поместить в шаблон:
    <head>
        <script id="div-tpl" type="text/html">
            <div>data</div>
        </script>
    </head>

    так как script имеет тип не text/javascript, то выполняться как код он не будет. К тому же, разметка из этого <script> не будет добавлена в DOM. Но к содержимому можно получить доступ по его id ($('#div-tpl')).

    Вот посмотрите, как это использует John Resig (автор jQuery):
    ejohn.org/blog/javascript-micro-templating
    Ответ написан
    Комментировать
  • Как расположить объекты в системе координат XY внутри блока?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    <span class="object" style="left: 20%; top: 45.6%;"></span>

    .object {position: relative;} /* а можно и absolute */

    И дальше в js управлять свойствами left и top. А, вам не нужно менять положение - тем проще.

    Возможно, если много объектов, то перейти на использование canvas.
    Посмотрите на Fabric.js (есть статьи на хабре: один и два)
    Ответ написан
    Комментировать
  • В двух словах, что такое БЭМ?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    БЭМ - это такая методология вёрстки от Яндекса. Она подразумевает разбиение страниц на отдельные смысловые блоки (комментарий, пост, заголовок, футер, форма, инпут и т.п.). Каждый блок может состоять из других блоков. Основная идея - как можно больше повысить возможность повторного использования уже написанных блоков, для чего используются модификаторы. Плюс, БЭМ подразумевает отказ от каскадных стилей, потому что они препятствуют повторному использованию.
    Например, на странице есть два разных заголовка (например, отдельно в статье, и отдельно во врезке). Как все привыкли делать это? есть код заголовка:
    <h1 class="header">Заголовок</h1>
    И мы ставим эти заголовки в текст статьи и во врезки:
    <article class="article">
        <h1 class="header">Заголовок</h1>
        <p>Текст текст текст</p>
    </article>
    <aside class="incut">
        <h1 class="header">Заголовок</h1>
        <p>Текст текст текст</p>
    </aside>

    Тогда обычно мы используем каскад, чтобы стилизовать заголовок во врезке:
    .header {font-size: 2em; padding-bottom: 1.5em;}
    .incut .header {text-decoration: italic;}

    Всё хорошо, но теперь мы не можем просто перенести эти стили заголовка во врезке в другое место, потому что эти стили привязаны именно ко врезке (классу incut). Плюс, что ещё хуже, если к элементу привязано несколько различных стилей, образующихся подобными каскадными правилами, то перенести такой внешний вид в другое место становится очень трудоёмко. А также, из-за большей специфичности каскадных стилей, их сложнее "перебить" новым стилем.
    БЭМ предлагает отказаться от каскадных стилей и создавать отдельные стили-модификаторы:
    <article class="b-article">
        <h1 class="b-article__header">Заголовок</h1>
        <p>Текст текст текст</p>
    </article>
    <aside class="b-article b-article__incut">
        <h1 class="b-article__header b-article__header_incut">Заголовок</h1>
        <p>Текст текст текст</p>
    </aside>


    .b-article__header {font-size: 2em; padding-bottom: 1.5em;}
    .b-article__header_incut {text-decoration: italic;}


    Чем больше проект, тем выгоднее использование подобной методологии. На маленьких и средних проектах БЭМ может быть избыточен. Хотя вот была статья habrahabr.ru/company/yandex/blog/234905 про использование в маленьких проектах.

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

    Ну вот. Получилось не в двух словах, но менее подробно качественно описать БЭМ не получится, имхо.
    Ответ написан
    Комментировать
  • Проиндексируется ли то, что напечатано через js?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Ни гугл, ни яндекс не умеют индексировать страницы, которые показываются javascript-ом, по крайней мере, автоматически.
    Но и гугл, и яндекс этому можно научить.
    Для того, чтобы поисковики умели индексировать ajax-страницы, нужно особенным образом подготовить сайт.
    Например, у вас есть сайт www.example.com. И вы делаете несколько страниц, подгружаемых через ajax, например, у вас вот такие странички:
    www.example.com/#!first
    www.example.com/#!second
    www.example.com/#!third

    (важно добавить восклицательный знак!)
    После этого необходимо подготовить на сервере скрипт, который будет выдавать тот же контент, что и ajax-версия (иначе могут быть проблемы).
    Нужно сделать доступными следующие страницы
    www.example.com/?_escaped_fragment_=first
    www.example.com/?_escaped_fragment_=second
    www.example.com/?_escaped_fragment_=third

    И тогда поисковик сумеет проиндексировать ваш сайт. А ваш javascript никто не будет выполнять, вдруг вы там биткойны майните. (хотя были разговоры, что гугл выполняет скрипты для проверки чго-то там).
    Вот статья про это в гугле, а вот в яндексе.
    Вот статья про то, как всё это можно настроить.
    Ответ написан
    1 комментарий
  • Как сделать так, чтобы ссылка плавала по странице, перемещалась, и её можно было перемещать самому?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Посмотрите Greenshock draggable демку. Физики (столкновений) тут тоже нет.
    Также посмотрите на Box2d with DOM.
    Вам нужно именно на HTML? Или на canvas тоже подойдёт? Потому как для canvas есть Box2d.js (например, гляньте вот эту демку. Тут на WebGL, но такое есть и для canvas).
    Если не подойдёт, то придётся делать самому - определять столкновения и передавать импульс второму объекту.
    Ответ написан
    1 комментарий
  • Как создать кнопку для сайта, при нажатии которой изображение автоматически загружается/сохраняется на компьютер пользователя?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Именно сразу сохранить на диск не получится. Но можно сделать обычную ссылку, после нажатия на которую автоматически начнётся обычное скачивание файла штатными средствами браузера, не зависимо от того, какой тип файла (хоть html). Для этого нужно в заголовки ответа добавить заголовок Content-Disposition: attachment. Добавить этот заголовок можно через php-скрипт (как указал dzedzinskiy), можно через настройку веб-сервера. Во втором случае удобнее расположить все файлы для скачивания в отдельную папку, специально для этого предназначенную, и повесить в настройках веб-сервера форсированно отдавать файлы из папки (если апач, то можно в .htaccess этой папки указать).
    Ответ написан
    Комментировать
  • Как заставить планшетный браузер учитывать min-width?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Вы ставите мета-тег viewport? Неправильно его использование может привести к некоторым искажениям размеров сайта.
    Почитайте про него в этой статье. И вот эту тоже.
    Ответ написан
    Комментировать
  • Как запустить выполнение JS скрипта с нажатия кнопки?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Попробуйте вместо AmCharts.ready(function() {
    написать
    MyFunction = function() {
    и в конце убрать круглую скобку перед последней точкой-с-запятой (она парная с той, что мы удалили в вызове ready)
    Ответ написан
    4 комментария
  • Изображение 5000х5000 pix, как сделать из него универсальный фон?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Попробуйте BigVideo.js
    Библиотека для размещения фонового видео, но умеет и картинки размещать.
    Есть и обзор на хабре.
    Ответ написан
    Комментировать