Программирование на Python и Objective-C в Mac OS

Программирование на Python и Objective-C под Mac OS и для iPhone / iPod Touch

Css кнопка с картинкой: Как создать кнопку с картинкой? — Хабр Q&A

Содержание

Делаем кнопку с картинкой на WPF

В отличие от Windows Forms в WPF кнопка не имеет специального свойства, ответственного за изображение. Но, тем не менее кнопку в WPF также можно украсить изображением.

Как известно, в WPF внешний вид элементов управления описывается при помощи XAML. Ниже приведён пример стандартного описания для кнопки и её внешний вид.

<Button x:Name=»button» Content=»Button» HorizontalAlignment=»Left» Margin=»36,32,0,0″ VerticalAlignment=»Top»/>

<Button x:Name=»button» Content=»Button» HorizontalAlignment=»Left» Margin=»36,32,0,0″ VerticalAlignment=»Top»/>

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

Помести внутрь кнопки элемент StackPanel. В него в свою очередь также поместим элементы Image и TextBlock.

<Button x:Name=»button» HorizontalAlignment=»Left» Margin=»36,32,0,0″ VerticalAlignment=»Top»>
<StackPanel Orientation=»Horizontal»>
<Image Source=»image.png» Margin=»0,0,5,0″ />
<TextBlock Text=»Button»/>
</StackPanel>
</Button>

<Button x:Name=»button» HorizontalAlignment=»Left» Margin=»36,32,0,0″ VerticalAlignment=»Top»>

    <StackPanel Orientation=»Horizontal»>

        <Image Source=»image.png» Margin=»0,0,5,0″ />

        <TextBlock Text=»Button»/>

    </StackPanel>

</Button>

Значение «Horizontal» у атрибута Orientation означает, что содержимое StackPanel будет располагаться по горизонтали слева направо в порядке описания элементов.

Атрибуты Source и Margin задают путь к изображению и внешние отступы соответственно. Атрибут Margin Добавлен для того, чтобы надпись на кнопке, которая была перенесена в TextBlock не «прилипала» к изображению.

На скриншоте показана вышеприведённая разметка в работе.

Нетрудно догадаться, что, если поменять местами объявление элементов Image и TextBlock, изображение будет расположено справа от надписи.

<Button x:Name=»button» HorizontalAlignment=»Left» Margin=»36,32,0,0″ VerticalAlignment=»Top»>
<StackPanel Orientation=»Horizontal»>
<TextBlock Text=»Button»/>
<Image Source=»image.png» Margin=»5,0,0,0″ />
</StackPanel>
</Button>

<Button x:Name=»button» HorizontalAlignment=»Left» Margin=»36,32,0,0″ VerticalAlignment=»Top»>

    <StackPanel Orientation=»Horizontal»>

        <TextBlock Text=»Button»/>

        <Image Source=»image.png» Margin=»5,0,0,0″ />

    </StackPanel>

</Button>

Значение атрибута Margin у Image скорректировано в соответствии с новым расположением элементов.

Ниже показан результат:

Если требуется, чтобы изображение и надпись располагались по вертикали, нужно изменить значение атрибута Orientation у StackPanel на «Vertical». Тогда вложенные элементы будут располагаться в порядке описания сверху вниз.

Пример с расположением значка сверху:

<Button x:Name=»button» HorizontalAlignment=»Left» Margin=»36,32,0,0″ VerticalAlignment=»Top»>
<StackPanel Orientation=»Vertical»>
<Image Source=»image.png» />
<TextBlock Text=»Button»/>
</StackPanel>
</Button>

<Button x:Name=»button» HorizontalAlignment=»Left» Margin=»36,32,0,0″ VerticalAlignment=»Top»>

    <StackPanel Orientation=»Vertical»>

        <Image Source=»image.png» />

        <TextBlock Text=»Button»/>

    </StackPanel>

</Button>

И снизу:

<Button x:Name=»button» HorizontalAlignment=»Left» Margin=»36,32,0,0″ VerticalAlignment=»Top»>
<StackPanel Orientation=» Vertical»>
<TextBlock Text=»Button»/>
<Image Source=»image.png» />
</StackPanel>
</Button>

<Button x:Name=»button» HorizontalAlignment=»Left» Margin=»36,32,0,0″ VerticalAlignment=»Top»>

    <StackPanel Orientation=» Vertical»>

        <TextBlock Text=»Button»/>

        <Image Source=»image.png» />

    </StackPanel>

</Button>

Атрибут Margin у Image в обоих примерах удалён, так как препятствует выравниванию изображения точно по центру кнопки.

Если же нужно, чтобы на кнопке был только значок без надписи StackPanel можно не использовать. Достаточно просто поместить элемент Image непосредственно внутрь кнопки.

<Button x:Name=»button» HorizontalAlignment=»Left» Margin=»36,32,0,0″ VerticalAlignment=»Top»>
<Image Source=»image.png» />
</Button>

<Button x:Name=»button» HorizontalAlignment=»Left» Margin=»36,32,0,0″ VerticalAlignment=»Top»>

    <Image Source=»image.png» />

</Button>

Мы рассмотрели лишь основные способы добавления изображения (значка) для кнопки. WPF имеет богатые возможности, которые не ограничиваются приведёнными примерами. Однако опираясь на основы, можно с лёгкостью создавать и гораздо более сложные решения.

Кнопка наверх

Здравствуйте уважаемые начинающие веб-мастера.

Для реализации кнопки «Наверх» существует много вариантов. Я предложу два наиболее лёгких из них.

Вариант 1

Кнопка с картинкой.

Кнопка с картинкой — самый простой вариант. Давайте посмотрим, как её сделать и реализовать на сайте.

Первым делом идём в Яндекс. Картинки и по запросу «Кнопка наверх» подбираем подходящую картинку.

Так как их там великое множество, то обращаем внимание не только на внешний вид, но и на размер картинки. 100 х 100 пикселей — это предел.

Следующий шаг — создаём из найденной картинки файл.

Делаем снимок экрана (скриншёт), аккуратненько вырезаем из него кнопку, сохраняем и получаем уникальный файл.

Затем будет не лишним доработать картинку, т.е. облегчить до возможных пределов и подогнать размер.

Если вы ещё на пользуетесь ни одним инструментом для этих целей, то рекомендую GIMP.

Как им пользоваться, подробно рассказано в статье Оптимизация изображений

И сразу примите как обязательное правило: На сайт нельзя грузить не оптимизированные изображения.

Даже самая небольшая картинка должна быть по возможности облегчена и подогнана по размерам. Так что простейший фотошоп вам жизненно необходим.

Итак, изображение готово, можно сказать кнопка готова, теперь внедрим её на сайт.

Пример на сайте работающем на WordPress.

Первым делом идём в Записи — Добавить новую и на пустую страницу загружаем готовую картинку. Делается это в режиме редактора Текст.

Затем копируем код картинки, сохраняем его в Блокнот или любой текстовый редактор, который у Вас есть и запись удаляем. Она была нужна только для получения кода.

После этого переходим в файл Подвал (footer.php) и в самом конце, перед </body> вставляем полученный код картинки заключённый в якорную ссылку.

При этом из кода картинки удаляем имеющееся значение класса и прописываем туда своё.

Это нужно для дальнейшей работы со стилями (позиционирование)


<a href="#skrol"><img src="https://starper55plys.ru/wp-content/uploads/2015/04/4.jpg" alt="4" /></a>

Далее переходим в файл Заголовок (header.php) и сразу после <body> вставляем якорь, представляющий из себя div с идентификатором

Теперь картинка привязана к верху страницы. Осталось её спозиционировать внизу страницы.

В коде изображения у нас задан класс, на основании которого создаём селектор и вносим в него свойства позиционирования


.scroll {
position: fixed; /* Позиционируем относительно окна экрана */
right: 50px; /* Отступ от правого края экран */
bottom: 20px; /* Отступ от низа экрана */
border-radius: 3px; /* Закругляем уголки картинки */
box-shadow: rgba(2,0,0,5.5) 0px 1px 3px; /*Добавляем тень снизу */

Добавляем этот код в файл стилей (style.css)

Ну вот и всё. Пример такой кнопки Вы видите в правом нижнем углу страницы.

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

Связано это с тем, что при очередной проверке скорости загрузки сайта оказалось, что эта картинка занимает 0.25 сек. и это происходит в самом начале загрузки страницы.

То-есть прямо влияет на скорость загрузки сайта.

Вариант 2.

Кнопка написанная на HTML + CSS.

Конечно копка без картинки будет смотреться менее эффектно, но для посетителя пришедшего за информацией, это не будет иметь большого значения.

Главное, она будет выполнять свою работу, и не будет влиять на скорость загрузки.

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

Код:

HTML


<button>&uArr;</button>

CSS


.scrol {
width: 40px;
height: 40px;
border-radius: 5px;
color: #4285F4;
font-size: 34px;
background: radial-gradient(#fff 40%, #02A829)
}

Результат:

Вместо текста в кнопке использован спецсимвол html &uArr; (двойная стрелка).

Если поиграть со свойствами gradient (переход цвета) и color (цвет шрифта), а так же добавить box-shadow и text-shadow (тени), то результат сможет украсить любой игровой сайт.

Весь код этой кнопки вставляется так же как у предыдущей, только не забудьте добавить в стили позиционирование.

Желаю творческих успехов.

Кнопка для сайта: виды и способы создания

 

Из этого материала вы узнаете:

Идеальная кнопка для сайта — это когда посетители не отвлекаются на нее, но постоянно нажимают. Хорошая кнопка должна выглядеть естественно и органично, чтобы пользователь не оценивал ее на сознательном уровне, а автоматически следовал указанному призыву.

Практически на любом ресурсе вы найдете больше ссылок, чем кнопок. Кнопки представляют собой изображения, для создания которых необходимо потратить определенные усилия. А ссылку можно сделать за секунду. При этом линки и кнопки решают практически одинаковые задачи. В каких случаях необходимо использовать кнопки, а когда можно обойтись ссылками?

Основные типы кнопок для сайта

Зачем вообще на сайте кнопки? Ответ очевиден: чтобы пользователи по ним кликали! Яркая, заметная и красивая кнопка привлекает внимание намного успешнее, чем маленькая тусклая ссылка. При этом, если интерфейс пестрит различными кнопками, которые ещё и анимированы, он начинает утомлять пользователя, поскольку они конкурируют за его внимание. В результате люди нередко уходят с таких страниц, не понимая, чего от них хотят создатели веб-ресурса.

Поэтому умеренность является золотым правилом во всём, что касается кнопок: каждая страница (точнее, видимая область экрана) не должна содержать более одного-двух таких элементов. Функция кнопки – то, что произойдёт при её нажатии – должна быть интуитивно понятна пользователю.

Объём обычно придают прямоугольным кнопкам. Они оживляют плоский интерфейс, добавляют в него фактурность и глубину, акцентируют пользователя на главных или самых объёмных областях страницы. Желательно показать, что кнопка кликабельна, посредством сочетания оттенков.

[expert]

  • Где используются

В качестве единственного элемента на строке. Такие кнопки призваны показать значимость целевого действия на сайте либо в мобильном приложении и выделиться среди разнообразного контента.

3D-кнопки визуально поднимаются и меняют цвет при клике. Особенно они заметны на контрасте с плоскими кнопками.

2. Плоские кнопки

Они тоже меняют цвет, но не приподнимаются. В отличие от объёмных, такие кнопочки меньше выделяются на фоне контента и не отвлекают внимание от него.

  • Где используются

В диалоговых окошках, где управляющие элементы должны сочетаться с контентом, а также на панелях инструментов внизу (там пользователю проще всего их найти).

3. Переключатель (слайдер)

Предназначен для переключения между двумя или несколькими состояниями.

  • Где используются

Обычно – в качестве кнопки «Вкл / Выкл». Полезны такие кнопки и для управления группой связанных элементов при условии, что эта их функция и принадлежность к данной группе ясно отражены в дизайне интерфейса. К подобным элементам предъявляются ещё два требования:

  • группа содержит три или более кнопок;
  • на каждой из них присутствует пояснительная иконка или текст (либо то и другое).

Иконки уместны там, где пользователь может захотеть отменить свой выбор (к примеру, добавить товару «звёздочку» или снять её), и иными способами это никак не сделать. В приложениях и на сайтах такие кнопки обычно помещают в панель инструментов в качестве переключателя состояний или элемента управления.

4. Контурная кнопка

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

  • Где используются

В качестве призыва к действию они не пойдут, а вот для вторичного контента, который не должен отвлекать внимание от целевой кнопки, будут вполне уместны. Пользователь должен замечать контурные кнопки (если это для него актуально) уже после того, как в его поле зрения попала кнопка CTA, более контрастная и яркая.

5. Плавающая кнопка с выпадающим меню

 

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

  • Где используются

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

Их отличает некоторая приподнятость над остальным интерфейсом, они словно парят над ним. Могут осуществлять морфинг и запуск функций, переносить точку привязки.

[art-slider ids=»4684, 4718, 4937, 5861, 6272″ ttl=»Читайте другие статьи по теме повышение конверсии сайта»]

Выбор типа кнопки для сайта

Стилистика кнопок для сайта определяется их важностью, количеством контента в видимой области экрана и разметкой страницы.

  • Функционал: если кнопка действительно важна, её делают плавающей.
  • Величина: зависит от габаритов контейнера, в котором находится, и от количества слоёв глубины на странице.
  • Html-код: на сайте кнопки разных видов нежелательно смешивать в одном контейнере (кроме случаев, когда нужно выделить важный элемент).

У кнопки есть несколько состояний. Плохо, если при наведении и клике она никак не меняется: тогда непонятно, кнопка ли это вообще, и пользователю приходится нажимать на неё, чтобы выяснить это.

Поэтому для данного элемента интерфейса так важно продумывать визуальное оформление смены состояний.

  • Состояние по умолчанию

В своём обычном состоянии кнопка должна быть похожа на кнопку – это основное требование. В противном случае пользователь будет испытывать недоумение по поводу кликабельности объектов (как, например, в меню настроек Windows 8).

При наведении мыши кнопка должна визуально меняться: тогда пользователь увидит, что это интерактивный объект и что на его действие последует отклик.

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

Кнопка либо приобретает соответствующий вид, либо исчезает вовсе.

У скрытия кнопки с сайта есть свои плюсы:

  • Всё ясно: нет лишних элементов, не относящихся к текущей задаче.
  • Экономия места: пространство экрана можно использовать повторно для разных целей, если своевременно прятать ненужные элементы. Это целесообразно, когда управляющих элементов много. Этому принципу следует, например, Gmail.

Если оставить кнопку на месте и придать ей соответствующий вид, то:

  • Будет показано, что действие возможно, хотя и не в данный момент. Можно разместить подсказку с объяснением, как и когда используется кнопка.
  • Интерфейс предсказуем: пользователь привыкает к определённой схеме размещения управляющих элементов и ищет их только там.

Как сделать кнопку для сайта

1. Простая кнопка для сайта

Простейшая кнопка для сайта реализуется HTML-тегами button и input c определённым типом. У этих тегов отсутствует атрибут href, перекидывающий пользователя на указанную страницу. Но можно снабдить их атрибутом onclick – небольшой вставкой javascript’а, в которой прописывается целевая страница:

<input type=″button″ value=″Нажмите здесь!″ onclick=″location.href=′любая ссылка′″>

2. Кнопка с фоновой картинкой

При наличии рисованных кнопок в макете сайта можно реализовать их с помощью обычной ссылки, заключив в неё файл картинки:

<a href=″любая ссылка″ target=″_blank″><img src=″ссылка на изображение″></a>

Для этого вам потребуется:

  • Нарисовать пиктограмму (своими руками или посредством генератора кнопок для сайта).
  • Загрузить картинку на сервер (например, с помощью файлового менеджера) и прописать ссылку на неё.
  • Указать в CSS-файле все необходимые стили.

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

Пример оформления кнопки на CSS:

В разделе “Панель управления” – “Дизайн” – “Редактор / CSS” напишите код вроде следующего:

.site-button {
background-color: #488bfa;
border: 2px solid #ffffff;
color: #ffffff;
padding: 12px 26px;
border-radius: 10px;
font-size: 17px;
}

И не забудьте про HTML-код кнопки:

<a href=″любая ссылка″ class=″site-button″>Нажмите здесь!</a>

Вероятно, CSS-код показался вам сложным и запутанным, если вы никогда не работали с ним. Но потребуются лишь некоторые настройки: размер шрифта (лучше в пикселях), фоновый цвет в формате HEX (таблица этих цветов легко находится с помощью поисковиков), отступы.

3. Кнопка на сторонний сайт

Иногда нужно отдавать свою готовую кнопку на сайты пользователям, чтобы они могли её установить у себя. Предоставляйте им полный HTML-код, чтобы они могли его скопировать и без проблем вставить на свой сайт. Такую заготовку под кнопку лучше оборачивать тегом textarea.

Особенности распространенных кнопок для сайта

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

Большинство пользователей интернета очень опытны: кнопка с призывом «Купить» не оказывает на них принуждающего действия, и они знают, что при нажатии на неё не произойдёт автоматического списания денег с их карты, а «Положить в корзину» означает не «выбросить в мусорку», а отложить на будущее, чтобы не потерять товар. Поэтому просто не тратьте время, придумывая оригинальные названия для подобных кнопок: продажи от этого не вырастут.

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

Если при клике на кнопку в карточке товара он кладётся в корзину, а после этого пользователя сразу перекидывают на страницу оформления заказа, то целесообразно назвать такую кнопку «Купить». Но в интернет-магазинах обычно не оформляют заказ сразу, а набирают несколько товарных позиций.

Некоторые считают, что формулировка «Добавить в корзину» более конверсионна, чем «Купить»: первая подразумевает процесс выбора товаров, не требующий принимать решение о покупке прямо сейчас. Возможно, в этом есть доля истины. Вопрос в том, какое действие вы считаете конверсионным. Если это добавление продукта в корзину, то именно так и следует называть кнопку (помня о том, что корзины часто бросают, и что отложить товар – ещё не значит купить и оплатить его). Если конверсией считается оформленный и оплаченный заказ, то не стесняйтесь дать кнопке название «Купить».

Кроме того, ярлык «Добавить в корзину» намекает на приобретение нескольких товарных позиций: сначала их нужно найти и положить в корзину, а затем заполнить все поля формы заказа.

Другой вариант – обойтись без глагола и сократить название кнопки до «В корзину». Не все это одобряют: есть мнение, что призыв к действию неэффективен без глагола. Но вы можете выбрать и такую формулировку.

Встречаются на сайтах также кнопки «Заказать», и их использование вполне оправданно, если товар можно не только приобрести сразу (из имеющихся в наличии), но и заказать для последующей покупки (когда он поступит на склад). В этом случае для имеющихся товаров лучше ставить кнопку «Купить», чтобы пользователь осознавал разницу между этими двумя схемами приобретения.

Кстати, для онлайн-сервисов доставки еды лучше всего подходит именно кнопка «Заказать», потому что люди обычно говорят «Давай закажем пиццу», а не «Давай купим пиццу». Впрочем, никто не запрещает использовать на таком сайте или в приложении традиционные кнопки «Положить в корзину» и «Купить».

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

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

Теперь выберем цвет кнопки «Купить» на сайте.

С помощью Гугла или Яндекса можно найти статистику по проведённым А/Б тестам, показывающую, что красные кнопки наименее эффективны, зато зелёные работают прекрасно, оранжевые – тоже неплохо. Но есть и противоположная точка зрения. Поэтому не стоит принимать каждое подобное утверждение на веру и срочно переделывать сайт.

Кроме цвета, экспериментировать и тестировать на целевой аудитории можно и текстуру кнопок. И приходить к выводам, что романтичные юные девушки охотнее кликают по розовым блестящим кнопочкам, кнопки с древесной фактурой повышают продажи натуральных продуктов и стройматериалов, а «железные» – товаров для мужчин.

Это не меньший бред, чем тестировать цвет кнопок на сайте.

Вы действительно считаете, что ваши потенциальные покупатели не кликают на большую синюю кнопку «Купить», контрастную к белому фону, только из-за её цвета, а как только вы перекрасите её в сочный оттенок зелёного, сразу же начнут покупать, потому что ощутят умиротворение, безопасность и доверие?

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

Посетителя интернет-магазина, твёрдо вознамерившегося купить что-либо (а не просто изучить ассортимент, сравнить цены или даже полюбоваться симпатичными моделями, демонстрирующими одежду – в зависимости от ассортимента магазина), ничто не остановит в совершении покупки. Естественно, если его устраивают все условия (стоимость, способы доставки и т. п.), магазин вызывает доверие, а оператор присутствует онлайн и отвечает на все вопросы через встроенный чат.

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

Кнопка красного цвета менее эффективна, если расположить её по соседству с зелёной. Контрасты – это не всегда хорошо и полезно.

Если рядом с насыщенно-красной кнопкой расположена серая с серым же текстом, то эта монохромная кнопка будет однозначно восприниматься как неактивная, отключенная, и мало кто станет кликать на неё.

При этом монохромные серые кнопки (второстепенные – «Быстрый заказ», «Сравнить», «Добавить в избранное») есть во многих магазинах, это довольно популярная ошибка. Вроде бы дизайнеры стремятся всё сделать правильно и обеспечить достаточный контраст между главной целевой кнопкой и вспомогательными элементами, но забывают о пользовательских привычках, сложившихся за много лет работы с операционными системами: всё, что окрашено серым, будь то чекбокс или ссылка, неактивно и некликабельно.

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

При этом цвет кнопки «Купить» (при условии, что она достаточно крупная, отделена отступами от окружающих объектов и контрастна) не столь важен. Аргументы и контраргументы против различных цветов приводились выше.

Поэтому А/Б тестирования интернет-магазинов показывают противоречивые результаты: где-то повышает конверсию красная кнопка, где-то – зелёная. Зачастую секрет заключается не в самой кнопке, не в товаре и даже не в целевой аудитории, а в дизайне всего интерфейса и том контексте, который окружает кнопку на сайте.

2. «Заказ» или «Быстрый заказ»

Это однозначно полезный элемент, который следует включить в дизайн магазина. Однако и здесь есть нюансы.

Кнопка «Купить в один клик» необходима там, где обычно приобретают единственный товар, а не набирают целый список. Или для дорогих товаров.

Для магазинов, где клиенты обычно берут более одной товарной позиции, в этой кнопке нет смысла: если сделать её слишком заметной и она перебьёт главную кнопку «Купить», может уменьшиться сумма среднего чека (потому что клиенты пойдут сразу оформлять заказ и не продолжат класть товары в корзину), а менеджерам придётся тратить больше времени на консультирование покупателей по телефону.

Поэтому так важна грамотная расстановка акцентов на кнопках. Если приоритетность главной целевой кнопки удачно подчёркивается дизайнерскими приёмами, опция быстрого заказа тоже может присутствовать и при этом не ломать сложившуюся схему покупки. Основное внимание посетителя достанется кнопке «Купить».

Ещё одна нередкая проблема кнопок моментального заказа – это то, что данные по таким заказам попадают в отдельный список (а не в общий, как при обычной покупке товаров через корзину) либо вообще приходят только в почту менеджерам. Это, по сути, функционал кнопки «Заказать звонок» для сайта и для шоппинга не подходит.

В чём же причина? В том, что моментальный заказ требует от клиента меньше данных, из-за чего не дотягивает до полноценной покупки и попадает в другую базу или инфоблок либо вообще на электронную почту менеджера. А это усложняет бизнес-процессы магазина, требует дополнительных действий и создаёт риск потери заказов. Устанавливая на сайт кнопку быстрого заказа, проследите, чтобы все подобные заказы попадали в общий список.

Ещё одна распространённая проблема – необходимость каждый раз вбивать своё ФИО и номер телефона при быстром заказе. Данные авторизованных пользователей должны подтягиваться в форму автоматически, чтобы человеку оставалось только подтвердить оформление заказа. Тогда покупка действительно будет быстрой.

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

Целесообразность добавления на сайт кнопки «В корзину» тоже вызывает много вопросов у дизайнеров и веб-мастеров. Ситуация аналогична предыдущей: всё зависит от специфики и ассортимента магазина. Для продуктов, при покупке которых нужно выбрать цвет, размер и другие характеристики, которые невозможно показать в краткой карточке товара на витрине, нет смысла в такой кнопке.

Например, очень странное впечатление будет производить кнопка «Отправить в корзину» в онлайн-магазине одежды: товар кладётся в корзину, но без возможности выбрать для себя нужный размер и расцветку. А если такая опция есть, то без сравнительной таблицы российских и зарубежных размеров и инструкции сложно определить свой размер. Это затрудняет выбор.

Однако в магазинах, торгующих бытовой химией, кнопка «В корзину» весьма уместна: такую продукцию обычно берут сразу, не присматриваясь к характеристикам, стремятся набрать всё нужное поскорее и оформить заказ. Наличие этой кнопки, впрочем, не мешает просмотру всех параметров товара, которые выводятся в карточке: объёма, веса, количества штук, аромата и т. п.

4. Оформление заказа

В корзине тоже имеются целевые кнопки, и их необходимо рассмотреть.

Как правило, в интернет-магазине существуют две разные корзины: главная (интерфейс оформления заказа, иногда в несколько шагов) и маленькая – блок с информацией в правом верхнем углу (количество отобранных товаров).

Крайне нежелательно давать одинаковое название кнопкам, ведущим в главную корзину, и кнопкам в карточках товаров, предназначенным для добавления понравившейся позиции. Это порождает некоторую путаницу. При наличии в товарных карточках на сайте кнопки «В корзину» придумайте другое обозначение для кнопки в малой корзине.

Это соответствует общему принципу: не называть одинаково элементы с разным функционалом и назначением.

Основная корзина проста и понятна с первого взгляда. Из кнопок здесь, если корзина пошаговая, есть только переход на следующий шаг и возврат к предыдущему. Подписи на кнопках должны отражать действие, совершаемое ими. Например, для пятишагового оформления заказа это будут следующие кнопки или ссылки:

Шаг в корзине

Название кнопки

1.

Корзина

Оформить заказ

2.

ФИО, электронная почта, телефон

Укажите адрес доставки

3.

Адрес доставки

Выберите способы доставки и оплаты

4.

Способы оплаты, доставки

Отправить / Завершить заказ

5.

Страница благодарности

Оплата / Перейти к оплате

6.

Страница оплаты (Робокасса и т. п.)

 

Сегодня таких пошаговых корзин практически не создают, но на некоторых ресурсах они ещё остались и продолжают успешно работать.

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

Что касается подписей на кнопках, принцип здесь тот же: какое действие кнопка инициирует, так и называется. Для более абстрактных формулировок вроде «Далее» рядом даются пояснения, куда конкретно попадёт пользователь, кликнув по кнопке.

В одношаговых корзинах целевые кнопки могут быть двух типов: либо «Перейти к оплате», либо, при наличии отдельной промежуточной «Thank you page», «Отправить заказ».

10 моментов, которые нужно учитывать при создании кнопки для сайта

  1. Соответствие фирменному стилю

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

    У вас преобладают плоские цвета на веб-сайте или в приложении? Тогда откажитесь от стеклянных кнопок в стиле Apple. Очертания, оттенки и декоративные приёмы должны соответствовать логотипу и фирменному стилю.

  2. Соответствие контексту

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

  3. Достаточная контрастность

    Стиль Apple вдохновил тысячи дизайнеров по всему миру и породил собственную стилистику, элегантную и минималистичную. Один из её недостатков – малая контрастность кнопок на сайте по отношению к другим элементам UI: кнопки просто теряются и плохо выполняют свои функции.

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

  4. Закруглять уголки или нет?

    Если в приложении или на сайте все кнопки имеют закруглённые уголки, можно пойти дальше и самую важную из них сделать, например, круглой, чтобы она привлекала внимание пользователей и призывала нажать на неё.

  5. Маскируем остальные элементы

    Второстепенные кнопки, ссылки, текстовый контент и т. п. не должны быть заметнее конверсионной кнопки. Их оформляют в едином стиле и делают менее контрастными. Даже если у контроллеров, бегунков и т. п. одинаковый угол закругления, можно окрасить их в разные цвета (включая фоновый), уменьшить в размере, залить градиентом, придать им цветные обводки, тени или 3D-эффекты.

  6. Контуры и обводки

    Многие кнопки на сайтах имеют некое подобие границ или обводки, более или менее заметных. Здесь существует одна простая закономерность: для темных кнопок на светлом фоне делают ещё более тёмную обводку, а для светлых кнопок на тёмном фоне – обводку чуть темнее фонового цвета.

  7. Аккуратнее с размытой тенью

    Опытным дизайнерам известен принцип, который можно назвать «Законом Теней»: любая тень эффектнее смотрится, если светлый элемент находится на более тёмном фоне. В противном случае потребуется особая аккуратность при работе с тенями, чтобы они не превратили кнопку на сайте в грязное пятно.

  8. Использование графических символов

    Мелкие символические иконки (такие как, например, стрелки) придают кнопкам на сайте («Подробнее», «Далее», «Назад») ещё большую наглядность и показывают, что случится при клике на них.

    Используйте их там, где это разумно: стрелку вправо – для перехода на следующую страницу (или ухода с текущей), стрелку вверх – для кнопки «Вверх» на сайте, стрелку вниз – для раскрытия выпадающего меню.

  9. Иерархия элементов

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

    Так, первичные кнопки (обычно это кнопки целевого действия) окрашивают в более сильные и яркие оттенки, а менее значимые вторичные и третичные – в менее насыщенные и контрастные. Второстепенные кнопки, бегунки и т. п. уменьшают. Снизить их визуальный вес также можно посредством правильного подбора гарнитуры и размера шрифта, уровня тиснения, отступов и толщины границ.

  10. Различные состояния кнопки

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

Часто задаваемые вопросы про кнопки для сайта

Почему кнопка «OK» – совсем не ОК для сайта?

Во многих интерфейсах, особенно в операционных системах компьютеров, присутствуют стандартные кнопки: «Да», «Нет», «Cancel», «ОК» и т. п.

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

Зачем располагать конверсионные кнопки в нижнем правом углу?

На этот вопрос можно ответить, лишь изучив диаграмму Гутенберга.

Страница состоит из четырёх сегментов, по которым движется взгляд читателя. Максимальное внимание пользователь уделяет первому квадрату (верхнему левому), с которого начинает читать страницу, и последнему (нижнему правому). А вот левый нижний квадрат пользователь проскакивает почти не глядя. Очевидно, что для целевой кнопки на сайте лучше всего подходит правый нижний угол.

Надо ли располагать конверсионную кнопку справа в диалоговом окне?

В модальных окнах, содержащих более одной кнопки действия, целевую кнопку («Заказать», «Подтвердить», «ОК», «Купить» и т. д.) действительно лучше помещать в правой части.

Если она будет находиться слева, то читатель увидит её первой, но нажимать не будет, так как ему захочется посмотреть все остальные опции. А последней идёт кнопка альтернативного действия (отказа, сброса и т. п.), и пользователю проще нажать на неё, чем возвращаться на шаг раньше и искать целевую кнопку.

Чтобы сократить путь клиента к конверсии, всегда помещайте соответствующую кнопку справа, а всё второстепенное – слева, чтобы он органично продвигался в сторону нужного действия, не «спотыкаясь» и не совершая лишних визуальных фиксаций.

Как сделать целевую кнопку на сайте более заметной?

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

Вот несколько проверенных дизайнерских приёмов визуального выделения элемента интерфейса:

  • Высокая насыщенность цвета для целевой кнопки и меньшая – для альтернативной.
  • Фоновый цвет для второй, менее важной, кнопки – она сливается с контейнером, в котором находится. Например, так сделана кнопка «Выйти» в Skype.
  • Альтернативное действие обозначать не кнопкой, а текстовой ссылкой.
  • Альтернативная кнопка прозрачна (и кажется неактивной).

Почему у пиктограмм должен быть прозрачный фон?

Использование иконок – отличный способ сделать интерфейс более удобным и эффективным. Люди воспринимают визуальный паттерн быстрее, чем читают текст, в десятки тысяч раз. Чтобы сделать иконку максимально понятной, помещайте её на прозрачный фон.

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

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

8 типичных ошибок в создании кнопок для сайта

  1. Специальная кнопка для сброса

    В ней нет смысла: допустив ошибку, пользователь её исправит, а сбрасывать все введённые данные и перезагружать страницу для этого незачем. Как назло, на сайте такие кнопки обычно располагают слева, где их легко случайно задеть. Многие посетители разочарованно покидают ресурс, обнаружив, что все поля формы, столь старательно заполняемые ими, обнулились.

  2. Крохотные кнопочки

    Не скупитесь и сделайте управляющие элементы нормального размера, чтобы их было видно и чтобы на них чаще нажимали! Особенно это касается кнопок «Заказать» на сайте и «Подписаться на рассылку»

  3. Кнопки, сливающиеся с фоном

    Делайте кнопки не только яркими, но и контрастными фону. Это поможет пользователям быстро их обнаружить.

  4. Непривычный вид кнопок

    Дизайнеры в погоне за оригинальностью порой создают такие элементы интерфейса, по которым трудно считать их функции и назначение. Кнопки, не похожие на кнопки.

    Лучше простой и понятный дизайн, чем избыточный креатив. Даже простая кнопка серого цвета с текстом будет работать эффективнее, чем изыски, отличающиеся от привычных элементов управления. Помните, что за много лет пользования интернетом люди уже привыкли к тому, как должна выглядеть кнопка на сайте, и ищут именно такие объекты.

  5. Слишком абстрактные или вводящие в заблуждение ярлыки

    «Далее» и «Отправить» – это ещё не все возможные кнопки для сайта. Не каждый ярлык носит название следующего действия, но все они должны чётко описывать, что произойдёт при нажатии: «Подтвердить заказ», «Сохранить изменения в профиле», «Следующий шаг» и т. п. Хорошо добавлять к текстовому названию символы >> и <<, отражающие направление действия.

  6. Избыток кнопок

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

  7. Нет подписей

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

  8. Анимированные кнопки на сайте

    Анимация – не всегда хорошая идея. Мигающие, движущиеся или каким-то ещё образом раздражающие глаз кнопки будут только оттягивать внимание и вызывать ассоциации с первыми сайтами конца 90-х. Анимированная кнопка легко превратит ваш сайт в дилетантскую поделку и образец дурного вкуса.

Кнопка является важнейшим элементом в веб-интерфейсе, поскольку именно с помощью неё клиенты перемещаются по разделам сайта, отправляют данные, делают заказы и т. п. Поэтому конверсионная кнопка на сайте должна быть:

  • заметной и яркой;
  • понятной;
  • правильного размера.

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

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

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

Как создать кнопку для сайта онлайн: самый простой способ

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

И, безусловно, зря…

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

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

Поскольку в Фотошопе или др. подобном редакторе мне сделать кнопку сложнее и дольше, онлайн-конструкторы – это оптимальный вариант. С ними все быстрее и проще любому новичку.

Сам процесс работы с этими генераторами я подробно показываю в видео чуть ниже, а сейчас просто расскажу об особенностях каждого из них.

Первый и, на мой взгляд, самый удобный редактор – это dabuttonfactory.com. Вот так выглядит его интерфейс:

Важно: у данного конструктора несколько изменился интерфейс и теперь он называется ClickMinded Button Generator.

Он обладает самым нужным функционалом: позволяет редактировать текст, размеры, цвет, стиль кнопки, а на выходе загружать ее в png, jpeg, gif, ico форматах или использовать специальный CSS-код.

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

Второй онлайн-конструктор – As Button Generator имеет похожие возможности редактирования, с некоторыми своими особенностями. Этот конструктор больше не работает!

Выглядит он вот так:

Например, здесь есть опция загрузки готовой картинки в качестве фона кнопки, фильтры, позволяющие настраивать разные эффекты, прозрачные переливы, полосы, тень, граница и т.д.

Важный нюанс в работе с редактором – фильтры нужно использовать после добавления на кнопку текста или загрузки изображения. Так как, после них эти элементы уже не редактируются.

И еще один сервис – cooltext.com – интересен тем, что предлагает разные дизайнерские заготовки, в том числе с анимированными эффектами. Их можно менять слегка, либо переделывать полностью. Конструктор подходит для изготовления кнопок, надписей, логотипов.

Минус в том, что не все шрифты в нем поддерживают русский текст, и менять их не очень удобно, так как открываются они, почему-то, на новой странице без предпросмотра. Готовые кнопки скачиваются в png или gif формате, а также для них можно сгенерировать код (если зарегистрироваться).

Посмотрите небольшой обзорный урок по работе с данными сервисами и выберите подходящий для себя:

Кстати, друзья, если вы хотите сделать для своего сайта более эффектные анимированные кнопки, рекомендую посмотреть видеоурок на блоге моего коллеги Максима Зайцева. Этот урок прекрасно дополняет мой.

Если у вас появятся какие-либо вопросы, задавайте их в комментариях. Всегда рада ответить.

Желаю успехов!

С уважением, Виктория Карпова

Мигающая кнопка на чистом CSS — Blog About

Как привлечь внимание посетителя к какому-либо элементу/блоку/ссылке/рекламе на своем сайте? Как обычно — заставить ее мигать или дергаться, в общем как-то анимировать. Но как быть, если не хочется перегружать свой сайт излишними скриптами и анимированными картинками (гифками)? Тогда на помощь приходит CSS. Мигающая кнопка на чистом CSS делается очень просто.

В данной статье предлагаю разобрать самый простой вариант создания мигающей кнопки с помощью средств CSS.

Как это работает?

Для примера представим, что у нас есть сайт ресторана, и, для осуществления заказа/бронирования столиков, на его страницах размещена кнопка «Заказать стол».

<a href="#"><span><img src="/images/stolik.png" /></span>Заказать стол</a>

В нашем случае — это обычная ссылка, с картинкой внутри. Картинка имеет прозрачный фон и обернута в span, т.к. саму картинку мы не сможем заставить мигать, а вот span не составит труда.

Пришло время добавить некоторые стили оформления самой кнопки, а также заставим её мигать:

@-webkit-keyframes rainbow {
	0% {background: #a6ce20;}
	50% {background: #000}
	100% {background: #a6ce20;}
}

@keyframes rainbow {
	0% {background: #a6ce20;}
	50% {background: #000}
	100% {background: #a6ce20;}
} 

#stolik {
	background: #a6ce20;
	line-height: 70px;
	display: block;
	height: 70px;
	width: 400px;
	padding-right: 25px;
	font-family: 'Open Sans Condensed', sans-serif;
	font-size: 32px;
	color: #fff;
	text-decoration: none;
	font-weight: bold;
	text-transform: uppercase;
	margin: 0px auto;
	webkit-animation: rainbow 2s linear 2s infinite;
	animation: rainbow 2s linear 2s infinite;
}

@-webkit-keyframes rainbow1 {
	0% {background: #000;}
	50% {background: #a6ce20}
	100% {background: #000;} 
} 

@keyframes rainbow1 {
	0% {background: #000;}
	50% {background: #a6ce20}
	100% {background: #000;} 
} 

#stolik span {
	background: #000;
	display: block;
	float: left;
	margin-right: 25px;
	text-align: center;
	height: 70px;
	width: 70px;
	webkit-animation: rainbow1 2s linear 2s infinite;
	animation: rainbow1 2s linear 2s infinite;
}

#stolik img {
	vertical-align: middle;
	margin-top: 8px;
}

Здесь необходимо обратить внимание на свойство animation у элементов #stolik и span, в которых мы вызываем правило @keyframes (для каждого свой, соответственно). В правилах @keyframes мы указываем ключевые кадры смены цвета элементов, в то время как animation запускает эти кадры.

В зависимости от заданных цветов и скорости анимации будет создан эффект мигания. В примере задано 2 цвета, Вы же можете указать сколько угодно цветов, задав при этом проценты, на которых этот цвет будет достигаться.

В итоге у нас получается простая анимация мигания кнопки, которую можно просмотреть перейдя по ссылке ниже.

Пошаговое руководство. Создание кнопки с помощью XAML — WPF .NET Framework



  • Чтение занимает 5 мин

В этой статье

Цель этого пошагового руководства — научиться создавать анимированную кнопку для использования в приложении Windows Presentation Foundation (WPF). В этом пошаговом руководстве используются стили и шаблон для создания настраиваемого ресурса кнопки, который позволяет повторно использовать код и разделение логики кнопки из объявления кнопки. Это пошаговое руководство написано полностью в Язык XAML .

Важно!

В этом пошаговом руководстве описано, как создать приложение, введя или скопировав и вставляя Язык XAML в Visual Studio. Если вы предпочитаете использовать конструктор для создания того же приложения, см. раздел Создание кнопки с помощью Microsoft Expression Blend.

На следующем рисунке показаны готовые кнопки.

Создание основных кнопок

Начнем с создания нового проекта и добавления нескольких кнопок в окно.

Создание нового проекта WPF и добавление в него кнопок

  1. Запустите Visual Studio.

  2. Создайте новый проект WPF: В меню файл наведите указатель мыши на пункт создать и выберите пункт проект. Найдите шаблон Windows Application (WPF) и назовите проект «аниматедбуттон». Это приведет к созданию каркаса для приложения.

  3. Добавить основные кнопки по умолчанию: Все файлы, необходимые для этого пошагового руководства, предоставляются шаблоном. Откройте файл Window1. XAML, дважды щелкнув его в обозреватель решений. По умолчанию Grid в Window1. XAML присутствует элемент. Удалите Grid элемент и добавьте на страницу несколько кнопок Язык XAML , введя или скопировав и вставляя следующий выделенный код в Window1. XAML:

    <Window x:Class="AnimatedButton.Window1"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      Title="AnimatedButton"
      Background="Black">
      <!-- Buttons arranged vertically inside a StackPanel. -->
      <StackPanel HorizontalAlignment="Left">
          <Button>Button 1</Button>
          <Button>Button 2</Button>
          <Button>Button 3</Button>
      </StackPanel>
    </Window>
    

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

    Теперь, когда основные кнопки созданы, вы завершили работу в файле Window1. XAML. Остальная часть пошагового руководства посвящена файлу app. XAML, определяющему стили и шаблон для кнопок.

Задание основных свойств

Теперь давайте настроим некоторые свойства на этих кнопках, чтобы управлять внешним видом и макетом кнопки. Вместо того чтобы устанавливать свойства на кнопки по отдельности, вы будете использовать ресурсы для определения свойств кнопки для всего приложения. Ресурсы приложения концептуально похожи на внешние каскадные таблицы стилей (CSS) для веб-страниц. Тем не менее ресурсы являются гораздо более мощными, чем каскадные таблицы стилей (CSS), как вы увидите в конце этого пошагового руководства. Дополнительные сведения о ресурсах см. в разделе ресурсы XAML.

Использование стилей для задания основных свойств кнопок

  1. Определите блок Application. Resources: Откройте App. XAML и добавьте следующую выделенную разметку, если она еще не существует:

    <Application x:Class="AnimatedButton.App"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      StartupUri="Window1.xaml"
      >
      <Application.Resources>
        <!-- Resources for the entire application can be defined here. -->
      </Application.Resources>
    </Application>
    

    Область ресурсов определяется местом, где определяется ресурс. Определение ресурсов в Application.Resources файле App. XAML позволяет использовать ресурс из любого места в приложении. Дополнительные сведения об определении области ресурсов см. в разделе ресурсы XAML.

  2. Создайте стиль и определите в нем основные значения свойств: Добавьте в блок следующую разметку Application.Resources . Эта разметка создает объект Style , который применяется ко всем кнопкам в приложении, присвоив параметрам для Width кнопок значение 90 и значение Margin 10.

    <Application.Resources>
      <Style TargetType="Button">
        <Setter Property="Width" Value="90" />
        <Setter Property="Margin" Value="10" />
      </Style>
    </Application.Resources>
    

    TargetTypeСвойство указывает, что стиль применяется ко всем объектам типа Button . Каждый Setter из них задает другое значение свойства для Style . Таким образом, на этом этапе каждая кнопка в приложении имеет ширину 90 и поле, равное 10. Если нажать клавишу F5 для запуска приложения, появится следующее окно.

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

  3. Задайте ресурсу значение свойства Style: Ресурсы обеспечивают простой способ повторного использования часто заданных объектов и значений. Особенно полезно определить сложные значения с помощью ресурсов, чтобы сделать код более модульным. Добавьте следующую выделенную разметку в App. XAML.

    <Application.Resources>
      <LinearGradientBrush x:Key="GrayBlueGradientBrush" StartPoint="0,0" EndPoint="1,1">
        <GradientStop Color="DarkGray" Offset="0" />
        <GradientStop Color="#CCCCFF" Offset="0.5" />
        <GradientStop Color="DarkGray" Offset="1" />
      </LinearGradientBrush>
      <Style TargetType="{x:Type Button}">
        <Setter Property="Background" Value="{StaticResource GrayBlueGradientBrush}" />
        <Setter Property="Width" Value="80" />
        <Setter Property="Margin" Value="10" />
      </Style>
    </Application.Resources>
    

    Непосредственно под Application.Resources блоком вы создали ресурс с именем «грайблуеградиентбруш». Этот ресурс определяет горизонтальный градиент. Этот ресурс можно использовать как значение свойства из любого места в приложении, включая внутри метода задания стиля кнопки для Background Свойства. Теперь все кнопки имеют Background значение свойства этого градиента.

    Нажмите клавишу F5 для запуска приложения. Это должно выглядеть примерно так.

Создание шаблона, определяющего вид кнопки

В этом разделе вы создадите шаблон, который настраивает внешний вид (представление) кнопки. Кнопка презентации состоит из нескольких объектов, включая прямоугольники и другие компоненты, чтобы дать кнопке уникальный вид.

До сих пор Управление тем, как выглядят кнопки в приложении, было ограничено изменением свойств кнопки. Что делать, если вы хотите внести более коренные изменения в внешний вид кнопки? Шаблоны обеспечивают мощный контроль над представлением объекта. Поскольку шаблоны можно использовать в стилях, можно применить шаблон ко всем объектам, к которым применяется стиль (в этом пошаговом руководстве это кнопка).

Использование шаблона для определения вида кнопки

  1. Настройте шаблон: Так как элементы управления, такие как Button Template , имеют свойство, можно определить значение свойства шаблона так же, как и другие значения свойств, заданные в Style с помощью Setter . Добавьте следующую выделенную разметку в стиль кнопки.

    <Application.Resources>
      <LinearGradientBrush x:Key="GrayBlueGradientBrush"
        StartPoint="0,0" EndPoint="1,1">
        <GradientStop Color="DarkGray" Offset="0" />
        <GradientStop Color="#CCCCFF" Offset="0.5" />
        <GradientStop Color="DarkGray" Offset="1" />
      </LinearGradientBrush>
      <Style TargetType="{x:Type Button}">
        <Setter Property="Background" Value="{StaticResource GrayBlueGradientBrush}" />
        <Setter Property="Width" Value="80" />
        <Setter Property="Margin" Value="10" />
        <Setter Property="Template">
          <Setter.Value>
            <!-- The button template is defined here. -->
          </Setter.Value>
        </Setter>
      </Style>
    </Application.Resources>
    
  2. Изменить представление кнопки: На этом этапе необходимо определить шаблон. Добавьте следующую выделенную разметку. Эта разметка определяет два Rectangle элемента с закругленными краями, за которыми следует DockPanel . DockPanelИспользуется для размещения ContentPresenter кнопки. ContentPresenterОтображает содержимое кнопки. В этом пошаговом руководстве содержимое является текстом («Кнопка 1», «Кнопка 2», «Кнопка 3»). Все компоненты шаблона (прямоугольники и DockPanel ) размещаются внутри Grid .

    <Setter.Value>
      <ControlTemplate TargetType="Button">
        <Grid ClipToBounds="True">
          <!-- Outer Rectangle with rounded corners. -->
          <Rectangle x:Name="outerRectangle" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Stroke="{TemplateBinding Background}" RadiusX="20" RadiusY="20" StrokeThickness="5" Fill="Transparent" />
          <!-- Inner Rectangle with rounded corners. -->
          <Rectangle x:Name="innerRectangle" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Stroke="Transparent" StrokeThickness="20" Fill="{TemplateBinding Background}" RadiusX="20" RadiusY="20" />
          <!-- Present Content (text) of the button. -->
          <DockPanel Name="myContentPresenterDockPanel">
            <ContentPresenter x:Name="myContentPresenter" Margin="20" Content="{TemplateBinding  Content}" TextBlock.Foreground="Black" />
          </DockPanel>
        </Grid>
      </ControlTemplate>
    </Setter.Value>
    

    Нажмите клавишу F5 для запуска приложения. Это должно выглядеть примерно так.

  3. Добавьте глассеффект в шаблон: Далее вы добавите стекло. Сначала необходимо создать ресурсы, которые создают эффект прозрачного градиента. Добавьте эти ресурсы градиента в любом месте Application.Resources блока:

    <Application.Resources>
      <GradientStopCollection x:Key="MyGlassGradientStopsResource">
        <GradientStop Color="WhiteSmoke" Offset="0.2" />
        <GradientStop Color="Transparent" Offset="0.4" />
        <GradientStop Color="WhiteSmoke" Offset="0.5" />
        <GradientStop Color="Transparent" Offset="0.75" />
        <GradientStop Color="WhiteSmoke" Offset="0.9" />
        <GradientStop Color="Transparent" Offset="1" />
      </GradientStopCollection>
      <LinearGradientBrush x:Key="MyGlassBrushResource"
        StartPoint="0,0" EndPoint="1,1" Opacity="0.75"
        GradientStops="{StaticResource MyGlassGradientStopsResource}" />
    <!-- Styles and other resources below here. -->
    

    Эти ресурсы используются в качестве Fill для прямоугольника, который мы вставляем в Grid шаблон кнопки. Добавьте в шаблон следующую выделенную разметку.

    <Setter.Value>
      <ControlTemplate TargetType="{x:Type Button}">
        <Grid
          ClipToBounds="True">
    
        <!-- Outer Rectangle with rounded corners. -->
        <Rectangle x:Name="outerRectangle" HorizontalAlignment="Stretch"
          VerticalAlignment="Stretch" Stroke="{TemplateBinding Background}"
          RadiusX="20" RadiusY="20" StrokeThickness="5" Fill="Transparent" />
    
        <!-- Inner Rectangle with rounded corners. -->
        <Rectangle x:Name="innerRectangle" HorizontalAlignment="Stretch"
          VerticalAlignment="Stretch" Stroke="Transparent" StrokeThickness="20"
          Fill="{TemplateBinding Background}" RadiusX="20" RadiusY="20" />
    
        <!-- Glass Rectangle -->
        <Rectangle x:Name="glassCube" HorizontalAlignment="Stretch"
          VerticalAlignment="Stretch"
          StrokeThickness="2" RadiusX="10" RadiusY="10" Opacity="0"
          Fill="{StaticResource MyGlassBrushResource}"
          RenderTransformOrigin="0.5,0.5">
          <Rectangle.Stroke>
            <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
              <LinearGradientBrush.GradientStops>
                <GradientStop Offset="0.0" Color="LightBlue" />
                <GradientStop Offset="1.0" Color="Gray" />
              </LinearGradientBrush.GradientStops>
            </LinearGradientBrush>
          </Rectangle.Stroke>
          <!-- These transforms have no effect as they are declared here.
          The reason the transforms are included is to be targets
          for animation (see later). -->
          <Rectangle.RenderTransform>
            <TransformGroup>
              <ScaleTransform />
              <RotateTransform />
            </TransformGroup>
          </Rectangle.RenderTransform>
          <!-- A BevelBitmapEffect is applied to give the button a "Beveled" look. -->
          <Rectangle.BitmapEffect>
            <BevelBitmapEffect />
          </Rectangle.BitmapEffect>
        </Rectangle>
    
        <!-- Present Text of the button. -->
        <DockPanel Name="myContentPresenterDockPanel">
          <ContentPresenter x:Name="myContentPresenter" Margin="20"
            Content="{TemplateBinding  Content}" TextBlock.Foreground="Black" />
        </DockPanel>
      </Grid>
    </ControlTemplate>
    </Setter.Value>
    

    Обратите внимание, что Opacity прямоугольник со x:Name свойством «гласскубе» имеет значение 0, поэтому при запуске образца прямоугольник с эффектом стекла не отображается сверху. Это связано с тем, что позже мы добавим триггеры к шаблону, когда пользователь взаимодействует с кнопкой. Тем не менее можно увидеть, как выглядит кнопка сейчас, изменив Opacity значение на 1 и запустив приложение. См. следующий рисунок. Прежде чем перейти к следующему шагу, измените Opacity обратно на 0.

Взаимодействие кнопки «создать»

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

Простой способ добавления интерактивности (нажатие кнопки мыши, выхода из мыши, щелчка и т. д.) заключается в определении триггеров в шаблоне или стиле. Чтобы создать объект Trigger , определите свойство «Condition», например: IsMouseOver значение свойства кнопки равно true . Затем определяются методы задания (Actions), которые выполняются, когда условие триггера имеет значение true.

Создание интерактивной активности кнопки

  1. Добавить триггеры шаблона: Добавьте выделенную разметку в шаблон.

    <Setter.Value>
      <ControlTemplate TargetType="{x:Type Button}">
        <Grid
          ClipToBounds="True">
    
          <!-- Outer Rectangle with rounded corners. -->
          <Rectangle x:Name="outerRectangle" HorizontalAlignment="Stretch"
          VerticalAlignment="Stretch" Stroke="{TemplateBinding Background}"
          RadiusX="20" RadiusY="20" StrokeThickness="5" Fill="Transparent" />
    
          <!-- Inner Rectangle with rounded corners. -->
          <Rectangle x:Name="innerRectangle" HorizontalAlignment="Stretch"
            VerticalAlignment="Stretch" Stroke="Transparent"
            StrokeThickness="20"
            Fill="{TemplateBinding Background}" RadiusX="20" RadiusY="20"
          />
    
          <!-- Glass Rectangle -->
          <Rectangle x:Name="glassCube" HorizontalAlignment="Stretch"
            VerticalAlignment="Stretch"
            StrokeThickness="2" RadiusX="10" RadiusY="10" Opacity="0"
            Fill="{StaticResource MyGlassBrushResource}"
            RenderTransformOrigin="0.5,0.5">
            <Rectangle.Stroke>
              <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
                <LinearGradientBrush.GradientStops>
                  <GradientStop Offset="0.0" Color="LightBlue" />
                  <GradientStop Offset="1.0" Color="Gray" />
                </LinearGradientBrush.GradientStops>
              </LinearGradientBrush>
            </Rectangle.Stroke>
    
            <!-- These transforms have no effect as they
                 are declared here.
                 The reason the transforms are included is to be targets
                 for animation (see later). -->
            <Rectangle.RenderTransform>
              <TransformGroup>
                <ScaleTransform />
                <RotateTransform />
              </TransformGroup>
            </Rectangle.RenderTransform>
    
              <!-- A BevelBitmapEffect is applied to give the button a
                   "Beveled" look. -->
            <Rectangle.BitmapEffect>
              <BevelBitmapEffect />
            </Rectangle.BitmapEffect>
          </Rectangle>
    
          <!-- Present Text of the button. -->
          <DockPanel Name="myContentPresenterDockPanel">
            <ContentPresenter x:Name="myContentPresenter" Margin="20"
              Content="{TemplateBinding  Content}" TextBlock.Foreground="Black" />
          </DockPanel>
        </Grid>
    
        <ControlTemplate.Triggers>       <!-- Set action triggers for the buttons and define            what the button does in response to those triggers. -->     </ControlTemplate.Triggers>
      </ControlTemplate>
    </Setter.Value>
    
  2. Добавить триггеры свойств: Добавьте выделенную разметку в ControlTemplate.Triggers блок:

    <ControlTemplate.Triggers>
    
      <!-- Set properties when mouse pointer is over the button. -->   <Trigger Property="IsMouseOver" Value="True">     <!-- Below are three property settings that occur when the           condition is met (user mouses over button).  -->     <!-- Change the color of the outer rectangle when user           mouses over it. -->     <Setter Property ="Rectangle.Stroke" TargetName="outerRectangle"       Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}" />     <!-- Sets the glass opacity to 1, therefore, the           glass "appears" when user mouses over it. -->     <Setter Property="Rectangle.Opacity" Value="1" TargetName="glassCube" />     <!-- Makes the text slightly blurry as though you           were looking at it through blurry glass. -->     <Setter Property="ContentPresenter.BitmapEffect"        TargetName="myContentPresenter">       <Setter.Value>         <BlurBitmapEffect Radius="1" />       </Setter.Value>     </Setter>   </Trigger>
    
    <ControlTemplate.Triggers/>
    

    Нажмите клавишу F5, чтобы запустить приложение и увидеть результат при выполнении указателя мыши над кнопками.

  3. Добавить триггер фокуса: Далее мы добавим несколько аналогичных методов задания, которые будут обработаны, когда кнопка будет иметь фокус (например, после того, как пользователь щелкнет его).

    <ControlTemplate.Triggers>
    
      <!-- Set properties when mouse pointer is over the button. -->
      <Trigger Property="IsMouseOver" Value="True">
    
        <!-- Below are three property settings that occur when the
             condition is met (user mouses over button).  -->
        <!-- Change the color of the outer rectangle when user          mouses over it. -->
        <Setter Property ="Rectangle.Stroke" TargetName="outerRectangle"
          Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}" />
    
        <!-- Sets the glass opacity to 1, therefore, the          glass "appears" when user mouses over it. -->
        <Setter Property="Rectangle.Opacity" Value="1"       TargetName="glassCube" />
    
        <!-- Makes the text slightly blurry as though you were          looking at it through blurry glass. -->
        <Setter Property="ContentPresenter.BitmapEffect"       TargetName="myContentPresenter">
          <Setter.Value>
            <BlurBitmapEffect Radius="1" />
          </Setter.Value>
        </Setter>
      </Trigger>
      <!-- Set properties when button has focus. -->   <Trigger Property="IsFocused" Value="true">     <Setter Property="Rectangle.Opacity" Value="1"       TargetName="glassCube" />     <Setter Property="Rectangle.Stroke" TargetName="outerRectangle"       Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}" />     <Setter Property="Rectangle.Opacity" Value="1" TargetName="glassCube" />   </Trigger>
    
    </ControlTemplate.Triggers>
    

    Нажмите клавишу F5, чтобы запустить приложение, и нажмите одну из кнопок. Обратите внимание, что кнопка остается выделенной после ее нажатия, так как она по-прежнему имеет фокус. Если щелкнуть другую кнопку, кнопка Создать получит фокус, а последний теряет ее.

  4. Добавить анимацию для MouseEnter и MouseLeave : Далее мы добавим несколько анимаций к триггерам. Добавьте следующую разметку в любое место внутри ControlTemplate.Triggers блока.

    <!-- Animations that start when mouse enters and leaves button. -->
    <EventTrigger RoutedEvent="Mouse.MouseEnter">
      <EventTrigger.Actions>
        <BeginStoryboard Name="mouseEnterBeginStoryboard">
          <Storyboard>
          <!-- This animation makes the glass rectangle shrink in the X direction. -->
            <DoubleAnimation Storyboard.TargetName="glassCube"
              Storyboard.TargetProperty=
              "(Rectangle.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)"
              By="-0.1" Duration="0:0:0.5" />
            <!-- This animation makes the glass rectangle shrink in the Y direction. -->
            <DoubleAnimation
            Storyboard.TargetName="glassCube"
              Storyboard.TargetProperty=
              "(Rectangle.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)"
              By="-0.1" Duration="0:0:0.5" />
          </Storyboard>
        </BeginStoryboard>
      </EventTrigger.Actions>
    </EventTrigger>
    <EventTrigger RoutedEvent="Mouse.MouseLeave">
      <EventTrigger.Actions>
        <!-- Stopping the storyboard sets all animated properties back to default. -->
        <StopStoryboard BeginStoryboardName="mouseEnterBeginStoryboard" />
      </EventTrigger.Actions>
    </EventTrigger>
    

    Прозрачный прямоугольник сжимается при наведении указателя мыши на кнопку и возвращается к нормальному размеру, когда указатель покидает.

    Существует две анимации, которые запускаются при наведении указателя мыши на кнопку ( MouseEnter событие вызывается). Эти анимации сжимают стеклянный прямоугольник вдоль осей X и Y. Обратите внимание на свойства DoubleAnimation элементов — Duration и By . DurationУказывает, что анимация выполняется в течение половины секунды и By указывает, что стекло сжимается на 10%.

    Второй триггер события ( MouseLeave ) просто останавливает первый из них. Когда вы останавливаете Storyboard , все анимированные свойства возвращают значения по умолчанию. Таким образом, когда пользователь перемещает указатель мыши за пределы кнопки, кнопка возвращается к способу, который находился перед перемещением курсора по кнопке. Дополнительные сведения о анимациях см. в разделе Общие сведения об анимации.

  5. Добавить анимацию при нажатии кнопки: Последним шагом является добавление триггера для, когда пользователь нажимает кнопку. Добавьте следующую разметку в любом месте ControlTemplate.Triggers блока:

    <!-- Animation fires when button is clicked, causing glass to spin.  -->
    <EventTrigger RoutedEvent="Button.Click">
      <EventTrigger.Actions>
        <BeginStoryboard>
          <Storyboard>
            <DoubleAnimation Storyboard.TargetName="glassCube"
              Storyboard.TargetProperty=
              "(Rectangle.RenderTransform).(TransformGroup.Children)[1].(RotateTransform.Angle)"
              By="360" Duration="0:0:0.5" />
          </Storyboard>
        </BeginStoryboard>
      </EventTrigger.Actions>
    </EventTrigger>
    

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

Итоги

В этом пошаговом руководстве вы выполнили следующие упражнения:

  • Нацелен на Style тип объекта ( Button ).

  • Контролируемые основные свойства кнопок во всем приложении, использующих Style .

  • Созданные ресурсы, такие как градиенты, используемые для значений свойств Style методов задания.

  • Настройка вида кнопок во всем приложении путем применения шаблона к кнопкам.

  • Настраиваемое поведение кнопок в ответ на действия пользователя (например,, MouseEnter MouseLeave и Click ), которые включают эффекты анимации.

См. также раздел

Онлайн сервис для создания кнопок

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

(В Конце статьи важная поправка)

Онлайн сервис для создания кнопок

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

Конечно, набросать стили – это дело 5 минут, но есть и такие люди, которым не хочется вникать в структуру и им нужен только результат. А кто-то еще не умеет — в общем, если вам лень самому писать стили, то в этой статье я, как раз, и расскажу о сервисе dabuttonfactory.com, в котором можно быстро получить css оформление подобной кнопки.

Итак, заходим на сайт. Перед нами откроется страничка с полями для редактирования по бокам. И визуальное изображение кнопки, которую мы редактируем – в центре. А также, под ней будет формироваться css код.

Онлайн сервис для создания кнопок– стили для текста

Левое меню, с выбором параметров, предназначено для придания стилей тексту:

В поле “Text” – задаем текст, который будет на кнопке. В “Font” – выбираем шрифт (его всегда можно поменять позже в таблице стилей, как и все остальные элементы). “Bold” и “Italic” – жирность и наклон соответственно. Поле “Textshadow” задает тень тексту. Можно указать расстояние и цвет.

“Outputtype” – как вы уже поняли выставляем CSS background, так как ради этого, мы и обратились к данному сервису.

Онлайн сервис для создания кнопок– стили кнопки

Здесь в поле “Style” – вы можете выбрать какие углы будут у кнопки — скругленные или квадратные, а также задать радиус округления. В “Вackground” – можно задать цвет фона монотонным, либо градиентом. Вкладки “Border” и “Shadow” – позволяют задать обводку и тень. В параметрах тени есть возможность изменить ее направление, цвет и отступ.

В поле “Size” — задается ширина и высота. Она может быть статичной (заданной определенного размера), или динамичной. В таком случае размер кнопки будет формироваться в зависимости от параметров текста и отступов.

Если вы выставили параметры такие же, как я на скриншотах, то у вас получится  такая кнопка:

Вот и все. Теперь при помощи онлайн сервиса для создания кнопок вы можете очень быстро создавать этот важнейший элемент дизайна, даже ничего не понимая в css. А на сегодня — все. Пока!

ВИМАНИЕ! Не успел я опубликовать данный пост в социальных сетях, как  мне на почту пришло сообщение от одного из читателей о том, что в нем есть недочет.

Дело в том, что фон в данном сервисе задается картинкой, причем не просто картинкой, а прописывается адрес на нее. Само изображение лежит на стороннем сервере.

Конечно, можно оставить как есть, но если вам нужна не просто кнопка, а именно заданная через css, то завтра я расскажу как создать ее самостоятельно и добавим эффект нажатия. Поэтому не буду удалять, пока, статью. Может кому-то пригодиться.

Спасибо за своевременную критику. Если кто-то пользуется подобными сервисами, пожалуйста, поделитесь в комментариях — кому-то они очень пригодятся.

 

HTML-тег

Тег HTML с его содержимым между начальным и конечным тегами. Содержимое действует как метка кнопки (т.е. все, что написано между начальным и конечным тегами, отображается на кнопке). Элемент

Примеры

Использование основного тега

Здесь мы используем отдельную кнопку (т.е.е. не прикреплен к форме). Мы упрощаем работу, используя JavaScript для отображения окна предупреждения, когда пользователь нажимает кнопку.

Кнопка, вложенная в форму

Здесь мы вкладываем кнопку в элемент

, который делает кнопку частью формы.

Имя:


Фамилия:


Кнопка, связанная с формой

Здесь мы связываем кнопку с элементом

, используя атрибут form (т.е.е. мы вставляем форму id в качестве значения). Таким образом, нам не нужно вкладывать элемент

Об элементах, связанных с формой

Некоторые элементы HTML могут иметь «владельца формы».Это означает, что элемент связан с формой, и его можно использовать, как если бы он был частью этой формы. Это может быть удобно, если у вас есть одна или несколько форм на странице, и элемент не вложен ни в одну из них.

Следующие элементы HTML являются «элементами, связанными с формой»:

  • кнопка
  • полевой набор
  • ввод
  • кейген
  • этикетка
  • объект
  • выход
  • выберите
  • текстовое поле
  • изображение

Возможность связать элемент управления формой с формой может преодолеть отсутствие поддержки вложенных элементов

.Хотя вложенные элементы

не поддерживаются в спецификации HTML, возможно, что сценарий может управлять DOM таким образом, что в результате образуются вложенные элементы

. Спецификация HTML5 признает эту ситуацию и, похоже, делает поправку на нее, одновременно предупреждая о несоответствии вложенных элементов

.

Кнопка с изображением

Вы можете включить элемент в свой элемент

Атрибуты

Атрибуты могут быть добавлены к элементу HTML, чтобы предоставить дополнительную информацию о том, как этот элемент должен выглядеть или вести себя.

Элемент

Пример кнопки ссылки с использованием CSS:

 Загрузки    

Преимущества

  • Фоновое изображение повторно используются для каждой кнопки и должны быть загружены только один раз.
  • Стиль одной кнопки отличается от стиля другой — это просто вопрос применения стилей к селектору id, таким образом переопределяя селектор класса.
  • События

  • Hover ( onmouseover ) не требуют JavaScript и могут использовать одно и то же изображение для каждой кнопки.
  • Внести изменения во все кнопки так же просто, как отредактировать класс кнопки.

Недостатки

  • Первоначальная настройка требует, чтобы веб-дизайнер создал таблицу стилей для класса кнопки и каждой отдельной кнопки, которая требует отличительных черт от других (т. Е. Другого цвета фона).
  • Размещение кнопок с помощью CSS может быть затруднительным в зависимости от дизайна кнопки и количества элементов, используемых для создания кнопки.В старых браузерах, таких как IE6 и IE7, это может быть особенно сложно, и вы можете обнаружить, что вам нужно либо использовать таблицы стилей для конкретного браузера, либо переписать код таблицы стилей.

Заключение

Когда дело доходит до скорости веб-сайта, кнопки CSS важнее кнопок изображений, потому что для создания набора кнопок им требуется гораздо меньше загружаемых объектов. Часто кнопки будут использовать одно и то же фоновое изображение и одно и то же изображение при наведении, что означает, что нужно загрузить только 2 объекта.Даже если это не так, вы всегда можете использовать спрайт CSS, чтобы объединить все различные фоновые изображения для ваших вариантов кнопок в один загружаемый объект. Поддерживать все ваши кнопки в целом также очень просто, так как вам нужно будет только изменить класс кнопок. Самым большим препятствием для кнопок CSS являются навыки веб-дизайнера и их знание CSS. Таким образом, если вы не очень знакомы с CSS, вы можете застрять с кнопками изображений. Еще одна трудность заключается в том, чтобы кнопка CSS выглядела красиво, используя значки, которые меняются от кнопки к кнопке.В этом случае намного проще использовать кнопку с изображением.

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

Нравится:

Нравится Загрузка …

Связанные

Плавающая кнопка на изображении при попутном ветре

Вы можете следить и писать код на https: // play.tailwindcss.com/

Элемент базового изображения

Допустим, у нас есть это изображение на странице:

  dummy-image
  

Войти в полноэкранный режимВыйти из полноэкранного режима

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

  
 dummy-image

Войти в полноэкранный режимВыйти из полноэкранного режима

Нам также нужно сделать так, чтобы изображение полностью закрыло оболочку, используя полную ширину:

  
dummy-image

Войти в полноэкранный режимВыйти из полноэкранного режима

Кнопка на верхнем левом изображении

С помощью приведенного выше кода мы уже могли добавить что-нибудь вроде кнопки на изображение с абсолютной позицией :

  
 dummy-image

Войти в полноэкранный режимВыйти из полноэкранного режима

Но чтобы она перекрывалась с изображением, нам нужно переместить абсолютную кнопку вверх, используя top-0 :

  
dummy-image

Войти в полноэкранный режимВыйти из полноэкранного режима

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

  
dummy-image

Войти в полноэкранный режимВыйти из полноэкранного режима

А чтобы кнопка немного отошла от края, просто добавляем маржу:

  
dummy-image

Войти в полноэкранный режимВыйти из полноэкранного режима

Как нажимать кнопку внизу влево?

Мы могли бы легко изменить класс top-0 на bottom-0 в кнопочном элементе.

Как переместить кнопку вверх-вправо?

Мы используем top-0 и right-0 для элемента кнопки.

Как внизу справа кнопку?

Мы используем bottom-0 и right-0 для элемента кнопки.


Карта Picture Elements — Домашний помощник


Карточка Picture Elements — один из самых универсальных типов карточек.

Карты позволяют размещать значки или текст и даже службы на изображении на основе координат.Представьте план этажа, представьте картинку-взгляд без ограничений!

Функциональный план этажа, основанный на элементах изображения.

Переменные конфигурации

URL-адрес изображения.
Чтобы использовать образ, размещенный локально, см. Хостинг.

camera_image строка (необязательно)

Строка camera_view (необязательно, по умолчанию: авто)

«live» покажет вид в реальном времени, если поток включен.

карта state_filter (необязательно)

Заменить используемую тему для этой карты любой загруженной темой.Для получения дополнительной информации о темах см. Документацию по интерфейсу.

dark_mode_image строка (необязательно)

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

dark_mode_filter строка (необязательно)

Этот фильтр CSS используется, когда активирован темный режим.

Элементы

Элементы — это активные компоненты (значки, значки, кнопки, текст и т. Д.), Которые накладываются на изображение.

На карточку «Элементы изображения» можно добавить несколько различных типов элементов:

Государственный знак

Этот элемент создает значок, представляющий состояние объекта.

Переменные конфигурации

Подсказка к государственному значку. Установите значение null, чтобы скрыть.

карта tap_action (необязательно)

карта hold_action (необязательно)

double_tap_action map (необязательно)

Государственная икона

Этот элемент представляет состояние объекта с помощью значка.

Переменные конфигурации

Подсказка значка. Установите значение null, чтобы скрыть.

state_color логический (Необязательно, по умолчанию: true)

Установите значение true , чтобы значки окрашивались, когда объект активен.

карта tap_action (необязательно)

карта hold_action (необязательно)

double_tap_action map (необязательно)

Государственная этикетка

Этот элемент представляет состояние объекта посредством текста.

Переменные конфигурации

строка атрибута (необязательно)

Если присутствует, будет показан соответствующий атрибут вместо состояния объекта.

Текст перед состоянием объекта.

Подсказка ярлыка. Установите значение null, чтобы скрыть.

карта tap_action (необязательно)

карта hold_action (необязательно)

double_tap_action map (необязательно)

Кнопка вызова службы

Этот объект создает кнопку (с произвольным текстом), которую можно использовать для вызова службы.

Переменные конфигурации

service_data map (необязательно)

Значок Элемент

Этот элемент создает статический значок, не связанный с состоянием объекта.

Переменные конфигурации

Значок для отображения (например, mdi: home ).

Подсказка значка. Установите значение null, чтобы скрыть.

Объект для использования для дополнительной информации / переключения.

карта tap_action (необязательно)

карта hold_action (необязательно)

double_tap_action map (необязательно)

Элемент изображения

Создает элемент изображения, который накладывается на фоновое изображение.

Переменные конфигурации

Сущность, используемая для state_image и state_filter , а также цель для действий.

Подсказка к изображению. Установите значение null, чтобы скрыть.

карта tap_action (необязательно)

карта hold_action (необязательно)

double_tap_action map (необязательно)

camera_image строка (необязательно)

Строка camera_view (необязательно, по умолчанию: авто)

«live» покажет вид в реальном времени, если поток включен.

state_image map (необязательно)

карта state_filter (необязательно)

строка aspect_ratio (необязательно, по умолчанию: 50%)

Условный элемент

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

Переменные конфигурации

Список идентификаторов объектов и соответствующих состояний.

Состояние объекта равно этому значению. *

state_not строка (необязательно)

Состояние объекта не равно этому значению. *

Один или несколько элементов любого типа, показывающих, когда выполняются условия. См. Пример ниже.

Пользовательские элементы

Процесс создания пользовательских элементов и ссылки на них такой же, как и для пользовательских карточек.
См. Документацию разработчика
за дополнительной информацией.

Переменные конфигурации

Имя карты с префиксом custom: (например, custom: my-custom-card ).

Варианты исключений

Переменные конфигурации

Идентификатор пользователя, который может видеть вкладку просмотра.

Примечания к атрибутам элемента

Как использовать объект стиля

Размещайте и стилизуйте элементы с помощью CSS. Также возможны дополнительные / другие ключи.
Обратите внимание, что стиль по умолчанию для большинства элементов включает translate (-50%, -50%), что означает, что предоставленные вами координаты будут определять положение центра элемента.

  стиль:
  # Позиционирование элемента
  осталось: 50%
  верх: 50%
  # Перезаписать цвет значков
  "- paper-item-icon-color": розовый
  

Как использовать state_image

Укажите другое изображение для отображения в зависимости от состояния объекта.

  state_image:
  "on": /local/living_room_on.jpg
  "выкл": /local/living_room_off.jpg
  

Как использовать state_filter

Укажите разные фильтры CSS

  state_filter:
  "on": яркость (110%) насыщенная (1.2)
  «выкл.»: яркость (50%), поворот оттенка (45 градусов)
  

Как использовать нажмите и удерживайте

Если указана опция hold_action , это действие будет выполнено, когда объект будет нажат и удерживается полсекунды или более.

  tap_action:
  действие: переключить
hold_action:
  действие: call-service
  сервис: light.turn_on
  service_data:
    entity_id: light.bed_light
    яркость_pct: 100
  

Примеры

Пример значков, надписей и кнопок

  тип: элементы изображения
изображение: / local / floorplan.PNG
элементы:
  - тип: состояние-значок
    tap_action:
      действие: переключить
    entity: light.ceiling_lights
    стиль:
      наверху: 47%
      осталось: 42%
  - тип: состояние-значок
    tap_action:
      действие: переключить
    объект: light.kitchen_lights
    стиль:
      наверху: 30%
      осталось: 15%
  - тип: гос. лейбл
    сущность: sensor.outside_temperature
    стиль:
      наверху: 82%
      осталось: 79%
  - тип: гос. лейбл
    сущность: clim.kitchen
    атрибут: текущая_температура
    суффикс: «° C»
    стиль:
      наверху: 33%
      осталось: 15%
  - тип: сервисная кнопка
    title: Выключи свет
    стиль:
      верх: 95%
      осталось: 60%
    услуга: помощник по дому.выключить
    service_data:
      entity_id: group.all_lights
  - тип: значок
    значок: mdi: home
    tap_action:
      действие: перейти
      навигационный_путь: / lovelace / 0
    стиль:
      Топ 10%
      осталось: 10%
  

Пример изображений

  тип: элементы изображения
изображение: /local/floorplan.png
элементы:
  # state_image & state_filter - переключение при нажатии
  - тип: изображение
    entity: light.living_room
    tap_action:
      действие: переключить
    изображение: /local/living_room.png
    state_image:
      "выкл": / local / living_room_off.PNG
    фильтр: насыщенный (0,8)
    state_filter:
      "on": яркость (120%) насыщенная (1,2)
    стиль:
      наверху: 25%
      осталось: 75%
      ширина: 15%
  # Камера, красная рамка, прямоугольник с закругленными углами - отображать дополнительную информацию при нажатии
  - тип: изображение
    объект: camera.driveway_camera
    camera_image: camera.driveway_camera
    стиль:
      Топ-5%
      осталось: 10%
      ширина: 10%
      граница: 2 пикселя сплошной красный
      радиус границы: 10%
  # Одно изображение, state_filter - вызов службы по клику
  - тип: изображение
    сущность: media_player.гостиная
    tap_action:
      действие: call-service
      сервис: media_player.media_play_pause
      service_data:
        entity_id: media_player.living_room
    изображение: /local/television.jpg
    фильтр: яркость (5%)
    state_filter:
      играет: яркость (100%)
    стиль:
      верх: 40%
      осталось: 75%
      ширина: 5%
  

Условный пример

  тип: элементы изображения
изображение: /local/House.png
элементы:
  # условно показывать ярлык кнопки выключения ТВ, когда папы нет дома, а дочь дома
  - тип: условный
    условия:
      - сущность: датчик.присутствие_дочь
        состояние: "дом"
      - объект: sensor.presence_dad
        состояние: "not_home"
    элементы:
      - тип: состояние-значок
        объект: switch.tv
        tap_action:
          действие: переключить
        стиль:
          наверху: 47%
          осталось: 42%
  

Помогите нам улучшить нашу документацию

Предложите изменение этой страницы или оставьте / просмотрите отзыв об этой странице.

Используйте блоки содержимого кнопок

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

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

Из этой статьи вы узнаете, как добавить блок содержимого Button в свой макет и изменить его стиль и настройки.

Вставьте блок кнопок

Чтобы вставить блок содержимого Button, выполните следующие действия.

  1. Щелкните и перетащите блок Button в макет.
  2. На вкладке Content в области редактирования введите текст, который вы хотите на вашей кнопке, в поле Button text .
  3. В раскрывающемся меню Ссылка на: выберите тип ссылки, которую вы хотите создать, и установите дополнительные параметры.
  4. Нажмите Дополнительные параметры , чтобы задать дополнительный стиль и поведение для ваших ссылок. Добавьте атрибут заголовка , установите CSS Class и установите ссылку на Открыть в новом окне .
  5. Внесите необходимые изменения в стиль и настройки.
  6. Нажмите Сохранить и закрыть .

Изменить стиль и настройки

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

  1. В макете щелкните блок содержимого Button , который нужно отредактировать.
  2. На вкладке Стиль задайте стили для границы, углов и фона в разделе Стиль кнопки .

    В разделе Стиль текста кнопки установите цвет текста, шрифт, размер и толщину шрифта, межбуквенный интервал и отступ вокруг текста. Выберите Применить ко всем существующим блокам кнопок , чтобы применить эти стили ко всем блокам кнопок в вашем макете.

  3. На вкладке Настройки выберите выравнивание и ширину кнопки.
  4. Нажмите Сохранить и закрыть .

Включить динамическое содержимое

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

Чтобы узнать больше о динамическом содержимом и о том, как включить его в блоке содержимого, ознакомьтесь с разделом «О динамическом содержимом».

Призрачных кнопок на фоновом изображении

Это мой второй пост в серии «Призрачные кнопки», в котором мы поговорим о размещении призрачных кнопок поверх фоновых изображений.

В плоском веб-дизайне кнопки-призраки обычно размещаются поверх больших фоновых изображений или видеозаписи. Например, взгляните на веб-сайт Nokia Transitions, на котором рядом с вводным текстом размещается кнопка-призрак над живописным видео с морскими волнами.

В этом посте я покажу, как сделать так, чтобы изображение занимало весь фон, а затем поместите на него кнопку-призрак.

Обложка фоновое изображение

Для создания диапазона изображения и покрытия всего фона сайта нам необходимо поместить его в свойство background тега body, как показано в приведенном ниже фрагменте CSS.Обратите внимание на использование «фиксированного центра центра без повтора» вместе с фоновым изображением, которое требует, чтобы изображение было центрировано по горизонтали и вертикали, не повторялось повторно и фиксировалось на своем месте при прокрутке. Также обратите внимание на использование «background-size: cover», которое просит браузер масштабировать изображение как можно больше, чтобы покрыть всю область просмотра.

 body {
  фон: url (https://superdevresources.com/wp-content/uploads/2014/11/blurred1.jpg) исправлен центр без повтора;
  -webkit-background-size: обложка;
  -moz-background-size: обложка;
  -o-background-size: обложка;
  размер фона: обложка;
} 

Призрачные кнопки на изображении

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

  • Поскольку мы размещаем кнопку-призрак над фоновым изображением, мы сделаем цвет состояния по умолчанию белым (#fff)
  • Мы добавляем закругленные края для кнопки, задав радиус границы, чтобы края были более мягкими.
  • Кроме того, мы также добавим мягкий переход цвета при наведении курсора, о котором мы говорили в предыдущем посте.
  • При наведении указателя мыши кнопка-призрак будет заполнена полупрозрачным цветным фоном.

Вы можете найти код вместе с результатом с призрачной кнопкой, отображаемой на размытом фоновом изображении, в следующем кодовом перо. Поскольку мы используем фоновое изображение, просмотрите результат в полноэкранном режиме.

См. Кнопки-призраки пера на фоновом изображении, автор — Канишк Кунал на CodePen.0

Если вы используете программу чтения RSS-каналов или по какой-либо причине вставка выше не отображается, перейдите на страницу Pen Live на CodePen

.

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

Делитесь изображениями с призывом к действию Pinterest

В этой статье я продемонстрирую, как добавить призыв к действию Pinterest поверх изображения, когда пользователь активно с ним взаимодействует.

Во-первых, давайте посмотрим, зачем вам вообще это нужно.

Совместное использование — это забота

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

Мы привыкли добавлять кнопки социальных сетей или ссылки для совместного использования страницы (в идеале с помощью обезжиренных кнопок). Facebook, Twitter и Google+ часто являются необходимыми вещами.

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

Например, цитата может быть нацелена на ограничение Twitter в 140 символов, а изображение может быть нацелено на Pinterest.

Давайте посмотрим, как вы настраиваете свои изображения для публикации в Pinterest.

Анатомия булавки URL

URL-адрес PIN-кода Pinterest состоит из четырех компонентов:

  • Pinterest, часть URL-адреса: https: // www.pinterest.com/pin/create/button/
  • параметр url : адрес страницы, на которую нужно ссылаться, в кодировке URL
  • параметр носителя : адрес изображения для совместного использования, в кодировке URL
  • описание Параметр : описательный текст, показанный на Pinterest, в кодировке URL, макс. 500 символов, но 200 символов кажется лучшим выбором.

Некоторые элементы данных HTML могут быть добавлены, если вы добавите собственный JavaScript Pinterest, особенно data-pin-do и data-pin-config , но в этом случае это не понадобится, так как это толстый- бесплатный подход, при котором мы полагаемся на строгое минимальное количество кода.

Жестко запрограммированный путь

Код, который мы хотим получить, выглядит так:

  
    
<description>

Каждое изображение Sharaeble (помечено data-pin attribute pinIt ) имеет префикс привязки к странице совместного доступа Pinterest с правильными атрибутами в ее URL-адресе, включая div для отображения логотипа.

Здесь используются три класса CSS: pinterest-anchor , который абсолютно устанавливает положение логотипа Pinterest в верхнем левом углу изображения; pinterest-hidden , который устанавливает статус видимости логотипа, и pinterest-logo , сам логотип, 40 × 40 пикселей, закодированный в base64 в CSS.

  .pinterest-anchor {
    маржа слева: 10 пикселей;
    маржа сверху: 10 пикселей;
    позиция: абсолютная;
    z-индекс: 42;
    ширина: 40 пикселей;
    высота: 40 пикселей;
}
.pinterest-hidden {
    дисплей: нет;
}
.pinterest-anchor: hover {
    отображение: блок! важно;
}
.pinterest-logo {
    фон: URL ( "данные: изображения / PNG; base64, iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM / rhtAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn / AACA6QAAdTAAAOpgAAA6mAAAF2 + SX8VGAAAL7UlEQVR42mK8mhDJwMjMzPDn21duBoZ / LN8 / f2xhZvqnxMTMyMZAR / dv7 / 9ff / 8x3WPm5atlYGDezcLF / Fx / 378MAAHEwsjIxPDv31 / ХФЗ ++ LGD8 / sGHW1qWgUlIjIGJjYWBrg789Yfl37tXOt + fPlr / n1Nwyz8OjgQmRqa3AAHE8vf3b / 7fn94uZfzxwZ3P3JKBQ1GV4d / P30D8g64OZGLnYGDS1GRguX + h5ePJYz7A4FzKyiccDhBALP9 + / BBN / PrOnU / fmIGJh5 / hy6VzYMf9 // ePrg5kZGICO5JNUpqBT8eQ4dPFM + 7 / OLjsAQKI5eeHN62cAgIMDOxsDD / u3wWGNdBhjGBEXwC099 + 3b2A3sAoKM7AICDJ8 // C2FSCAWJgY / yn9YwJmkq + fgah3hwHstP9E + hrsEUY4DdEGIRnBXvzP8B / I / QeliXPoH7BbQG4CuQ0gAONkkgIACMPAgEvBg /// qAerqLEI3sQHhEzpxDMZSXbeegueYNsZUvUxUVRRqqI1emtaHECOz3mHJIIsAYGFg5Q / NOA / XTTjEkAs / 4Cu + г / igPE / okLt5 + 8 / DG + // WD4AiwGGJjZGLgVlBgE5BQZOIVFGJhYQf79y / Dry2eGr8 + eMry9fY3h9duPDNxAx4pyczCwshBROvxnBCGwhwECiAWUGcAZAoZx5TKgy34DHfTm4yeGj6wcDIKaegz6Tu4MkiaWDKxc3ECHM + KIsT8MLy + cYbi7ZR3Dw6sXGIT + / 2EQ4uMDexRntDOCXQcOOIAAYvn3F + iov6CEAsVYADNQw3dgVD79A AwJIwsGy + BIBjFgrieq + ACGmKSJBRg / O3mU4dry + QzP7t5gkBIWxu1Ixv9gN4HcBhBALP / ALv0HiV4sUQwKue / ANPb0 + 08GxfgMBvWAcGA0smKo + / HgDsOvl88Z / v / 9w8DEwcnAIavIwCoqjqJGytyaQUhNk + Hc9H6GFycOMkgK8uOMYnC + ALoNIICADvzPAItm9LIPFGm / GBA ++ PmXQSOrmEHJ1Rut9P / J8H73ZoYPR / Yx / PnwDpi4f4INBlWdTBxcDOxSsgxCXkEMvAamcD0cgkIMZiU1DCe7 / jK8P3uUgZ + HB2sUgxwHchtAALGAQ + 8f9igGBjLDu28 / GeRjMzAc9 + 36JYZncycz / HzyCOwRRiYwCSpQwNh398tXht + vXzF8uXyOQcDOlUEqOY + BkQ1SvbOwsTOY5JUznKjMY / j75jkwt7NgRPF / UMAB3QYQQExgBrIDkfDvX78Z2A0sGDSCI1D0fzx2kOFBWzXDzwd3GZiBofULqPzLT2D5BfQ1pPxjBBczjMCiBcR7t2MTw6vVi1AyITsfP4NGSg7Dx99 / ge7Bbj / IXQABxPQPmDP / IUUxDDMCJT // ZWLQSs5EcdzXq5cYnkzuYvj7 + QswKtkYXn74zHD3xRuGRx + / MNx9 + ZbhB9ChDChmMQLTLDvDmw2rGL4B0ykyEDc0ZeDQNmT4DwwIdPvBUQx0G0AAMUGKwH8Y + N / vHwy8ZlYMfLLyiDT34zvDs5m9DP ++ f2FgBlaNLz5 / ZvijpMZgPWEmg9uCVQx6lU0Mb / 9CMhvCrL8M / 4HR // fnN4b3B3ZhJDd5nwCGn8AqDpsbQG4DCCBwGmTEkgZ / ф // BIO3ggmLY2y1rGX48fghsirEyfAI6jsvYmsG0pgXoWHawPK + MHMO / Ny8Zvi6bw8AMzMnIqZmRhY3h65kTDAyJWaAEC5fhU1BmYOLlA1r4C1hkMCGKGWgaBAggYBT / В + cWFEf + AdYQXDwM / EoqiNADVmXvD ++ FpFdQc 0xYnEE3vxzuOBiQtnGE + PMfauYDpU1QMfTz / XvU / MAGbMGISTD8B5qPngZBbgMIICZI + kMtav4B0wSbmBQDIyvC8s / 3bjP8fvMG6BGgZ4E5VMbFk4FLRASzUAc6mAVYxPwHJv7 / GGn7P8P3F0 / RCnJIkfT / D0I9AywNAjFAAIHLQUhxzoiIYlBTmxtYfSFl / 5 / PnzL8BUY7KMeBfMslKoa1SQYqC / 8Bo5 + JgwNrzfTnO3pDGBR7 / 1CTGBOkzQFyG0AAsUBbDag1CZZaBdRaATUCgEUouLT7 + / Ur1krg681rQA / + wd7wABbAjCxotRAwU / 3 / 8Q3hBrD9MDf9ZwAIIBZYiQ2qmP9DfQAuloDRCLYIFnVCwgy / gE5j / wM0EFi + fQcW0OBiAFgOIoPPRw8CFbPAzUJ1yz8GDhFR1PADZo4 / R1 + DwhEegjC3gNwGEEDgNMjwh2YwQtMAMDf9fPwAWJx8hxskoqPP8E1QBOwoUAH87d4dYCh + QbHs15tXDJ / OngA33zHKVaC + 78AahFMctX7 + / ekjOPOAQhdu / 39IgIHcBhBATP / ADAZEGvwHSY + gdPT12hW4QSzA / oJMQBjDT1DpDjTs57u3wMz0C8WyDwf3AaPrJySG0HMkMOOxaupiRDHYDnA + QNIDjW2Q2wACiIkBlkmQ24QgHwNbLK / WLIVkfyhQ9PZnYBEWBSVIhv + ghikTE4pln4DRC2rNoJvFDLTtPdDDEk5uGBnr84kjEEej6PkPyyUMAAHEBGlNM0Jd / R + OGUDRCPTd0xkT4Y02UNtOUF2D4c + PHwwswKYUE1Jh / Bso9vPFM3A7DtkcUK7 / + glS44gCm1so0fvmNcPnsyfBSQqhB1GLgDBAAEHbg7CoQG9uMTG8XrGI4e / HjwySyRkMLPyCDD9u3WT4DSyo + VXUGFg5EQ5kYmZiePPjFwMPMK2B + Н + w5toXYLHzClgfG6blMnDwo7b / Xi1bCOzJfQc3z1D6Qv8gyQ3kNoAAY oHlYHAI / sXSvGVkAVZxGxk + пг / DwMLLz / DryVOG38ACnFNFA6WZzwyMckFgk + zW7GkMnIy / GUBW / gSGxG + guHZeCYOsE2q1Cepevt + zE2onmr2gfAEtBwECiAUSrIyQaMbaJWECp5Ffz14Ai5kX4NzILi3HwCGvgKFSLzOHgUdahuHRzu3AKu0dg4SaOoNSUCiDqJ4 + qv3AdPps5lSGn8 + eQwt0VMdBkhwj2PEAAcQCDj1GBnhRg7s3xwRW9xvY8uCQV2Tgk5NHNRQamkp + AWCMs8MG9ODTSX3A0NsFacD + www9EGb8DykPAQIIUtWBGwuQUp1gj5CJhYFNUwfYKkYMfn06fpTh98sXDMKBIXj1frtxneHFnJkMH / buBmc4hr / gBIfhQMZ / DPAMAxBA4F7dP2AUw + IcLwDVHMCMImBqhlq8XLnC8GxCL8O3O3cZRENCGdhBocsIGVn4A + wJfjl3Btiq3s7w5fw5hl + vXjIwARsUkJoDS4BAy + V / DJB + MUAAscC7ff8Z8UYxJHqA2oBNdVF9A6RG7A + GHzdvgJtoL5ctYXi1cgUDEzcXAwuwMwQaa / n75Quk6Pj7F5KigbUJOE / g6hT // w8pK6HFDEAAscAKakZYSY7PgUD3saqqAXMsojb4AyyCvp45A2xmcUAKFlAXAti5 / wUMOcigDSMiDTMQtgPiQEgGAUUzQACBQvDXr99 / WJhY2CCNif / 4xmcYGXh29FCrqlu3Gh58esLADGoVoxRTjATMwjHqwwjpw / wAt54YfgEEEAsLM8u9z5 ++ 6PwDllegsuwvqIGAYxgDJMolJ4ea / vbuRVRVlAKgi5iBhf8 / YGB9 + fSFAeQ2gABi4uPhq / 3w4T3DK2Au5JCQhPQlQHYBm1Xgpj8yBqZBNmDHG55ngGns ​​/ Y6dwJqKGVMtSRiSK0B2g9wAcsuHD + 8Y + Hh5awECiIWVhXU / Pw / fzvs3brgzAQtlMSkZBkZgi + Tvr5 + Y6QXYO + OUlERE7 не 2lg2gP6lkVMksLxX0YGZmDm + с / BzvDy + TMGoFsY + Hn4d7KysO0HCCAWxv + MHwX5BaKBlfqCO9eu + Lx + 8ZyBl4ePgR1YzmGMWAH5AsAo / S4tCc6Z96fOYPgCzCSMaK0akmMWmBF + Aptun798YvgIbMYJ8PJtEeAXSAC5DSCAGHerQerUnz9 / резюме / 5 / dvly9evLT / + / + FZiBA1sYgHS0tIM3MD yhdg9L548oSBWiPZ / xkZf3GwsN7j4eauZWFl3c3Ozv4V5HCAAAMAlTuh / 0H0Uz0AAAAASUVORK5CYII = ") нет повтора центр центр;
    размер фона: 40 пикселей 40 пикселей;
    высота: 100%;
    ширина: 100%;
}  

Анимирующая часть — отображение и скрытие логотипа при наведении курсора на картинку — обрабатывается в JavaScript с использованием нотации jQuery:

  $ ("img [data-pin = 'pinIt']").each (function () {
    $ (this) .hover (function () {
        $ (это) .prev (). css ("отображение", "блок")
    }, function () {
        $ (this) .prev (). css ("дисплей", "нет")
    });
});  

Автоматизация — ваш друг

Но я не хочу загромождать свой контентный код тем конкретным фрагментом HTML, который предшествует изображению, доступному для совместного использования. Одна только его сторона обслуживания будет иметь определенные затраты, если что-то изменится — например, URL-адрес общего доступа Pinterest, параметры и поддержка других социальных сетей.

Поскольку JavaScript уже используется для обработки взаимодействия с мышью, давайте сделаем еще один шаг и сгенерируем этот код для любого изображения на странице.

Снова используя jQuery, получаем:

  $ ("img [data-pin = 'pinIt']"). Each (function () {
    $ (this) .before (' 
'); $ (это).hover (function () { $ (это) .prev (). css ("отображение", "блок") }, function () { $ (this) .prev (). css ("дисплей", "нет") }); });

Для каждого изображения с атрибутом data-pin , установленным на pinIt , мы ставим перед ним привязку общего доступа, получая URL-адрес страницы непосредственно из атрибута местоположения страницы , URL-адреса изображения из изображения href и описание из его текста alt , при правильном кодировании компонентов URI.

Это продемонстрировано в следующем CodePen

.

См. Pen Pinterest pin-it Call-To-Action (jQuery) от SitePoint (@SitePoint) на CodePen.

Но нужен ли нам jQuery?

Дело в том, что jQuery может и не понадобиться. Если он вам действительно не нужен, старый добрый ванильный JavaScript справится с этой задачей. На самом деле, я считаю хорошим упражнением время от времени переводить фрагменты кода jQuery в обычный JavaScript. Это напоминание о том, как все работает за кулисами.

  var pinables = document.querySelectorAll ('img');

Array.prototype.forEach.call (pinables, function (el, i) {
    data = el.dataset;
    if (data.pin == 'pinIt') {
        el.insertAdjacentHTML ('beforebegin', ' 
'); el.onmouseover = function () {это.previousSibling.style.display = 'блок'; } el.onmouseout = функция () {this.previousSibling.style.display = 'нет'; } } });

Селектор изображений - $ ("img [data-pin = 'pinIt']"). Каждые - теперь представляет собой массив всех изображений, для которых мы проверяем значение атрибута данных. Остальная часть кода является прямым переводом реализации jQuery.

Как видно из этого пера, он работает точно так же.

См. Pen Pinterest pin-it Call-To-Action (javascript) от SitePoint (@SitePoint) на CodePen.

Куда идти оттуда?

В веб-дизайне и пользовательском опыте простота - лучший выбор. Мы не хотим загромождать наши интерфейсы логотипами социальных сетей. В этом смысле этот подход очень чистый: логотип появляется только тогда, когда пользователь наводит курсор на изображение; а логотип Pinterest достаточно хорошо известен, поэтому нам не нужно добавлять текстовую ссылку рядом с ним, чтобы объяснить его значение.

Однако форма совместного использования открывается в новом окне, которое выводит пользователя за пределы текущей страницы.Как утверждает Крейг Баклер в своей статье, это «слишком большой шаг для самого энергичного менеджера по социальным сетям». Небольшое всплывающее окно, показывающее, что это может быть жизнеспособной альтернативой, для которой он дает ванильную реализацию JavaScript.

Для тех, кому интересно, небольшая подсказка: в нашем случае цель не имеет атрибута href , но у его родительского узла он есть. (Вы можете проверить реальную реализацию этого.)

Итак, что вы думаете о кнопках социальных сетей? Вы предпочитаете обезжиренный подход или предпочитаете использовать все функции, которые может предложить JavaScript? Дайте нам знать об этом в комментариях!

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *