Unlimited Wordpress themes, plugins, graphics & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Web Design
  2. HTML5
Webdesign

Совет: меняем поведение относительных URL с помощью тега base

by
Length:ShortLanguages:
This post is part of a series called Strange and Unusual HTML.
Quick Tip: Remember to Style Your ALT Text
Introducing the HTML5 “Menu” and “Menuitem” Elements

Russian (Pусский) translation by Stanislav Protasevich (you can also view the original English article)

HTML тег <base> - относительно малоизвестный тег, который не так давно стал частью HTML5. Он позволяет делать следующее:

  1. указать любой URL в качестве базы для относительных URL.
  2. указать цель по-умолчанию для ссылок.

Основы

Элемент <base> указывается в секции <head>, и указать можно только один такой элемент на страницу. Указывать его в документе нужно как можно раньше, так как его действие распространяется с места его указания. У него есть два возможных атрибута: href и target. Вы можете использовать как один из них, так и оба сразу.

Пример 1: ярлык для зарузки ресурсов

Скажем, ваш сайт хранит изображения и CSS в директории под названием “assets”. Вы можете задать тег <base> следующим образом:

Это позволит вам загружать изображения и CSS следующим образом:

Ссылка на style.css будет преобразована в http://www.myepicsite.com/assets/style.css, а image01.png будет загружен из http://www.myepicsite.com/assets/image01.png.

Пример 2: внутренние ссылки со страницы

Что, если у вас есть домен верхнего уровня, с которого производится переадресация на http://thisrocks.com/app/, а все внутренние ссылки должны содержать сегмент app.

Вы можете указать базовый URL следующим образом:

Таким образом, всякий раз, когда вам нужно было бы сослаться с одной внутренней страницы на другую, вы могли бы использовать:

Такая ссылка будет ссылаться на http://thisrocks.com/app/anotherpage.htm

Пример 3: цель ссылки по-умолчанию

С помощью <base> также можно указать цель по-умолчанию для всех ссылок на странице. Если вы укажете:

то каждая ссылка, у которой явно не задан атрибут target будет открываться в новом окне. Атрибут target можно использовать как вместе с атрибутом href, так и без него.

Эта возможность вероятно будет полезна для содержимого, загружаемого из iframe, таким образом, что у вас будет возможность открывать все ссылки на странице в соответствующем iframe.

Недостатки

Хотя базовый URL может быть и полезен, но его недостатком является то, что однажды его задав, он будет действовать везде. Его можно использовать только одним образом, и он будет действовать на все URL на странице. Если вы не хотите использовать базовый URL, заданный посредством <base>, его нужно особым образом переопределить.

Если вы использовали базовый URL, чтобы упростить подключение ресурсов, а после решили использовать его для ссылок на внутренние страницы, у вас возникнут проблемы (например, с такой ссылкой: <a href="page.html">Страница</a>).

Это из-за того, что базовый URL теперь http://www.myepicsite.com/assets/, и ваши пользователи будут направлены на адрес http://www.myepicsite.com/assets/page.html.

В таком случае вам нужно будет переопределить базовый URL для этой ссылки, указав полный URL на страницу, то есть <a href="http://www.myepicsite.com/page.html">Страница</a>.

Якоря

При использовании <base> вы можете столкнуться с проблемой ссылок на внутристраничные якоря.

Обычно ссылка вида <a href="#top">Наверх</a> оставит вас на текущей странице, но перенесет к элементу с id="top", то есть она будет ссылаться на http://thisrocks.com/app/article.html#top.

Но если вы используете тег <base> с заданным атрибутом href, то вы будете перенаправлены на базовый URL с добавленным к адресу сегментом #top, то есть http://thisrocks.com/app/#top.

В этом случае также необходимо переопределить умолчания, заданные тегом <base>, указав страницу, к которой относится ваш якорь, то есть <a href="article.html#top">Наверх</a>

Где уместен тег <base>

Тег <base> лучше всего использовать в случае, когда у вас есть полный контроль над всеми используемыми URL, то есть, если вы знаете, что у вас будет возможность переопределить умолчания так, как вам это нужно. Если вы разрабатываете шаблон для CMS, где есть много неизвестных переменных, то, вероятно, тегом <base> лучше не пользоваться.

Но если вы разрабатываете статичный HTML сайт, то тег <base> может быть очень полезен. И это еще более справедливо, если вы используете шаблонзатор вроде Jade или Handlebars, который позволит вам использовать вставки вроде <a href="{url}#top">Наверх</a>, так что если вам потребуется переопределить умолчания, то это будет несложно.

If you have a good idea what your project's content will be, and its use of URLs and links is fully under your control, you might find the <base> tag saves you a lot of time.

Если вы точно знаете, каким будет содержимое вашего проекта, и все ссылки и URL под вашим полным контролем, то тег <base> может сэкономить вам время.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.