Яндекс.Метрика

Дизайн-журнал №1. Актуальная информация для дизайнеров, веб дизайнеров, программистов и разработчиков сайтов.

Создание стилей для посещенных ссылок с использованием SVG

9 марта 2018 | Опубликовано в css | Нет комментариев »

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

Хотя ссылки HTML и ограничены четырьмя свойствами, для элементов SVG есть интересное исключение: заполнение и подчеркивание могут изменять цвет после посещения. Это дало нам идею поэкспериментировать с ссылками в списке для чтения о веб-разработке, чтобы добавить удобства пользователям, визуально отметив, что уже было прочитано ранее.

Ссылки с элементами SVG

Основа разметки списков для чтения — это группа элементов нумерованного списка. В конце каждой ссылки добавлен небольшой элемент SVG:

<ol class="goals">
    <li><a href="/865/HTML"><img src="star-cave.jpg" alt>
        HTML Reading List
<svg viewBox="0 0 50 50"><polygon points="4,30 14,40 45,12 41,9 14,34 8,27"/></svg>
    </a>
    <li><a href="/919/CSS"><img src="milky-way-arch.jpg" alt>
        CSS Reading List
<svg viewBox="0 0 50 50"><polygon points="4,30 14,40 45,12 41,9 14,34 8,27"/></svg>
    </a>
</ol>

С помощью кода CSS ссылки располагаются одна над другой и объединяются линией:

ol.goals {
    list-style-type: none;
    margin-bottom: 2rem;
}
ol.goals li {
    position: relative;
    margin-top: 1.6rem;
}
ol.goals a img {
    vertical-align: middle;
    width: 75px;
    height: 75px;
    margin-right: 1rem;
    border: 1px solid transparent;
    border-radius: 50%;
    background: #333;
}
ol.goals a {
    text-decoration: none;
    z-index: 3;
    position: relative;
}
ol.goals li:after {
    content: " ";
    position: absolute;
    height: 1.6rem;
    width: 3px;
    background: #888;
    left: 36px;
    top: 75px;
    z-index: 1
}

Дополнительный код CSS задает расположение элементов SVG и заполняет их белым цветом, таким же, как цвет фона веб-страницы:

ol.goals a svg {
    position: absolute;
    right: 0;
    width: 3rem;
    height: 3rem;
}
ol.goals a svg polygon {
    fill: white;
}

Обратите внимание, нельзя использовать заполнение или прозрачный цвет или подобную запись, например, rgba(0,0,0,0), если вам нужно, чтобы цвет элемента изменялся при посещении ссылки, по соображениям безопасности, подробнее о которых можно прочитать здесь.

При посещении ссылки текст в ней становится серым, а элемент SVG заполняется зеленым цветом:

ol.goals a:visited { color: #ccc; }
ol.goals a:visited svg polygon { fill: green; }

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

Без использования SVG

 

Хотя, на наш взгляд, элементы SVG дают самые широкие возможности для творчества при оформлении посещенных ссылок, можно использовать вариант этого приема и визуально отметить посещенную ссылку с помощью символов Unicode. Разметка будет следующей:

 

<ol class="goals">
    <li><a href="/865/HTML"><img src="/assets/images/icons/milky-way-cave.jpg" alt>
        HTML Reading List
        <span></span>
    </a>
    <li><a href="/919/CSS"><img src="/assets/images/icons/mobius-arch.jpg" alt>
        CSS Reading List
        <span></span>
    </a>
</ol>

Элемент span содержит символ Unicode, который показывает посещенность ссылки. Нужный код CSS, вероятно, полностью понятен:

ol.goals a span {
    position: absolute;
    right: 0;
    font-size: 3rem;
    color: #fff;
}
ol.goals a:visited span {
    color: green;
}

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

Два других интересных подхода к заданию стилей посещенным ссылкам включают способ Stelian Firez с использованием режимов смешивания и использование хранилища localstorage для отслеживания нажатых ссылок, предложенный Joel Califa.

Автор урока Dudley Storey

Перевод — Дежурка

Смотрите также:




Оставить ответ


8 − шесть =

Вставить изображение