CSS кнопки с помощью псевдо-элементов перевод

CSS*


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

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



Используется шрифт «Open Sans» Стива Мэттсона.

Дисклеймер

Я не буду использовать CSS префиксы в данных примерах, но вы найдете их в исходных файлах.

Я не использовал свойство transition, потому что только Firefox поддерживает его в псевдо-элементах. Кроме этого, я считаю что кнопки работают хорошо и без его использования.

Разметка


Для работы всех кнопок пригодится только якорь, все остальные элементы мы будем создавать с помощью псевдо-класса ::before.

<a href="#" class="a_demo_one">
     Click me!
</a>


Первый пример




Я думаю это самый легкий пример, который делается обычным CSS.

Стили


Прежде всего, зададим основные стили для кнопки в обычном и активном состоянии. Обратите внимание, что кнопка позиционирована относительно. Это поможет при позиционировании элемента ::before:

.a_demo_one {
	background-color:#ba2323;
	padding:10px;
	position:relative;
	font-family: 'Open Sans', sans-serif;
	font-size:12px;
	text-decoration:none;
	color:#fff;
	border: solid 1px #831212;
	background-image: linear-gradient(bottom, rgb(171,27,27) 0%, rgb(212,51,51) 100%);
	border-radius: 5px;
}

.a_demo_one:active {
	padding-bottom:9px;
	padding-left:10px;
	padding-right:10px;
	padding-top:11px;
	top:1px;
	background-image: linear-gradient(bottom, rgb(171,27,27) 100%, rgb(212,51,51) 0%);
}


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

.a_demo_one::before {
	background-color:#ccd0d5;
	content:"";
	display:block;
	position:absolute;
	width:100%;
	height:100%;
	padding:8px;
	left:-8px;
	top:-8px;
	z-index:-1;
	border-radius: 5px;
	box-shadow: inset 0px 1px 1px #909193, 0px 1px 0px #fff;
}


Второй пример




Этот пример немного сложнее из-за 3D-эффекта. Изначально кнопка находится за пределами контейнера, затем, при щелчке она уходит вниз:

.a_demo_two {
	background-color:#6fba26;
	padding:10px;
	position:relative;
	font-family: 'Open Sans', sans-serif;
	font-size:12px;
	text-decoration:none;
	color:#fff;
	background-image: linear-gradient(bottom, rgb(100,170,30) 0%, rgb(129,212,51) 100%);
	box-shadow: inset 0px 1px 0px #b2f17f, 0px 6px 0px #3d6f0d;
	border-radius: 5px;
}

.a_demo_two:active {
	top:7px;
	background-image: linear-gradient(bottom, rgb(100,170,30) 100%, rgb(129,212,51) 0%);
	box-shadow: inset 0px 1px 0px #b2f17f, inset 0px -1px 0px #3d6f0d;
	color: #156785;
	text-shadow: 0px 1px 1px rgba(255,255,255,0.3);
	background: rgb(44,160,202);
}


Стили


А вот здесь уже сложнее:

Так как положение псевдо-элемента зависит от родительского элемента, то при перемещении родительского элемента на несколько пикселей, псевдо-элемент необходимо переместить на столько же пикселей, но в другую сторону.

.a_demo_two::before {
	background-color:#072239;
	content:"";
	display:block;
	position:absolute;
	width:100%;
	height:100%;
	padding-left:2px;
	padding-right:2px;
	padding-bottom:4px;
	left:-2px;
	top:5px;
	z-index:-1;
	border-radius: 6px;
	box-shadow: 0px 1px 0px #fff;
}

.a_demo_two:active::before {
	top:-2px;
}


Третий пример




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

Стили


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

.a_demo_three {
	background-color:#3bb3e0;
	font-family: 'Open Sans', sans-serif;
	font-size:12px;
	text-decoration:none;
	color:#fff;
	position:relative;
	padding:10px 20px;
	border-left:solid 1px #2ab7ec;
	margin-left:35px;
	background-image: linear-gradient(bottom, rgb(44,160,202) 0%, rgb(62,184,229) 100%);
	border-top-right-radius: 5px;
	border-bottom-right-radius: 5px;
	box-shadow: inset 0px 1px 0px #2ab7ec, 0px 5px 0px 0px #156785, 0px 10px 5px #999;
}

.a_demo_three:active {
	top:3px;
	background-image: linear-gradient(bottom, rgb(62,184,229) 0%, rgb(44,160,202) 100%);
	box-shadow: inset 0px 1px 0px #2ab7ec, 0px 2px 0px 0px #156785, 0px 5px 3px #999;
}


Перейдем к псевдо-элементам:

.a_demo_three::before {
	content:"·";
	width:35px;
	max-height:29px;
	height:100%;
	position:absolute;
	display:block;
	padding-top:8px;
	top:0px;
	left:-36px;
	font-size:16px;
	font-weight:bold;
	color:#8fd1ea;
	text-shadow:1px 1px 0px #07526e;
	border-right:solid 1px #07526e;
	background-image: linear-gradient(bottom, rgb(10,94,125) 0%, rgb(14,139,184) 100%);
	border-top-left-radius: 5px;
	border-bottom-left-radius: 5px;
	box-shadow:inset 0px 1px 0px #2ab7ec, 0px 5px 0px 0px #032b3a, 0px 10px 5px #999 ;
}

.a_demo_three:active::before {
	top:-3px;
	box-shadow:inset 0px 1px 0px #2ab7ec, 0px 5px 0px 0px #032b3a, 1px 1px 0px 0px #044a64, 2px 2px 0px 0px #044a64, 2px 5px 0px 0px #044a64, 6px 4px 2px #0b698b, 0px 10px 5px #999 ;
}


Четвертый пример




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

Стили


.a_demo_four {
	background-color:#4b3f39;
	font-family: 'Open Sans', sans-serif;
	font-size:12px;
	text-decoration:none;
	color:#fff;
	position:relative;
	padding:10px 20px;
	padding-right:50px;
	background-image: linear-gradient(bottom, rgb(62,51,46) 0%, rgb(101,86,78) 100%);
	border-radius: 5px;
	box-shadow: inset 0px 1px 0px #9e8d84, 0px 5px 0px 0px #322620, 0px 10px 5px #999;
}

.a_demo_four:active {
	top:3px;
	background-image: linear-gradient(bottom, rgb(62,51,46) 100%, rgb(101,86,78) 0%);
	box-shadow: inset 0px 1px 0px #9e8d84, 0px 2px 0px 0px #322620, 0px 5px 3px #999;
}

.a_demo_four::before {
	background-color:#322620;
	background-image:url(../images/right_arrow.png);
	background-repeat:no-repeat;
	background-position:center center;
	content:"";
	width:20px;
	height:20px;
	position:absolute;
	right:15px;
	top:50%;
	margin-top:-9px;
	border-radius: 50%;
	box-shadow: inset 0px 1px 0px #19120f, 0px 1px 0px #827066;
}

.a_demo_four:active::before {
	top:50%;
	margin-top:-12px;
	box-shadow: inset 0px 1px 0px #827066, 0px 3px 0px #19120f, 0px 6px 3px #382e29;
}


Пятый пример




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

Стили


.a_demo_five {
	background-color:#9827d3;
	width:150px;
	display:inline-block;
	font-family: 'Open Sans', sans-serif;
	font-size:12px;
	text-decoration:none;
	color:#fff;
	position:relative;
	margin-top:40px;
	padding-bottom:10px;
	padding-top:10px;
	background-image: linear-gradient(bottom, rgb(168,48,232) 100%, rgb(141,32,196) 0%);
	border-bottom-right-radius: 5px;
	border-bottom-left-radius: 5px;
	box-shadow: inset 0px 1px 0px #ca73f8, 0px 5px 0px 0px #6a1099, 0px 10px 5px #999;
}

.a_demo_five:active {
	top:3px;
	background-image: linear-gradient(bottom, rgb(168,48,232) 0%, rgb(141,32,196) 100%);
	box-shadow: inset 0px 4px 1px #7215a3, 0px 2px 0px 0px #6a1099, 0px 5px 3px #999;
}

.a_demo_five::before {
	background-color:#fff;
	background-image:url(../images/heart.gif);
	background-repeat:no-repeat;
	background-position:center center;
	border-left:solid 1px #CCC;
	border-top:solid 1px #CCC;
	border-right:solid 1px #CCC;
	content:"";
	width:148px;
	height:40px;
	position:absolute;
	top:-30px;
	left:0px;
	margin-top:-11px;
	z-index:-1;
	border-top-left-radius: 5px;
	border-top-right-radius: 5px;
}

.a_demo_five:active::before {
	top: -33px;
	box-shadow: 0px 3px 0px #ccc;
}


В заключение


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

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

Демонстрация | Исходники
+222
12 января 2012, 00:56
1332
nabliker 14,0

комментарии (116)

+23
ddenisyuk #
Понимаю что пост не о дизайне, но кнопки в 3-м и 4-м примере очень понравились
+20
parfen #
их таааааааак приятно нажимать )
0
easterism #
В 4-ом примере если нажать на стрелочку, уже не так приятно получается :)
+1
kolyuchii #
Мне кажется, что пост всё же о дизайне.
+6
Zibx #
Если отпустить мышь за пределами кнопок, то осуществляется неверное поднятие, в результате которого оно не происходит.
+16
ddenisyuk #
Взорвал мне мозг.
+3
Sterhel #
Отпустить мышь за пределами кнопок мыши, всё ок.
+4
smind #
в ФФ не всё ок, кнопка остаётся вдавленой
0
hshhhhh #
В опере всё нормально.
+1
admhome #
А Вы кнопку утаскивайте не только влево/вправо, но и вверх/вниз, у меня на опере баг проявился.
0
Tant #
В Опере (12.00 alpha) кнопки остаются нажатыми при двойном щелчке, только dblclick надо делать не на тексте кнопки, иначе выскакивает контекстное меню.
+11
Xazzzi #
Тестер интерфесов детегтед!
+1
Xazzzi #
интерфейсов, конечно же…
+1
Zibx #
Боже упаси, но обычно сам не оттестишь — завалят багами.
0
bulletproofcupid #
Очень круто, спасибо большое! Открыл третий пример, жмякал по кнопочке и наслаждался.
–14
EvgeniyLazarev #
Сколько уже подобных однообразных постов было, и сколько ещё будет… Ни конца, ни края нет людской радости от изучения CSS3…
+1
michaelarshinov #
причем мы сейчас обсуждаем css 2.1 )) согласен что много подобных постов, но эта статься тоже интересная и немногословная
0
jab #
> Ни конца, ни края нет людской радости от изучения CSS3…
Как будто что-то плохое.
+5
WorldCount #
Посмотрел в IE 9-ом, поржал :)
+2
resurection #
а мне грустно.
+7
WorldCount #
Смешно вот это:

«HTML5 является ядром Internet Explorer 9, а благодаря широкой поддержке таких веб-стандартов, как HTML5, CSS3, Canvas, SVG и многих других вам доступно больше инструментов для создания более прекрасного Интернета.»

msdn.microsoft.com/ru-ru/ie/aa740469
+2
zapimir #
А над чем ржать? Там вроде всё кроме градиентов (которые для каждого браузера свои прописываются, а для webkit'а еще и в двух экземплярах, автор спокойно мог добавить градиенты через filter).

Добивает, что для каждого свойства городят свои префиксы, ну сделайте что-то типа -beta-linear-gradient, -draft-linear-gradient, это же не они придумали это свойство, оно есть в черновике стандарта…

Кстати Opera 11.6 почему кружок со стрелкой прибила к верхнему краю.
+3
nick4fake #
Это очень логично, т.к. на стадии тестирование у каждого свои косяки. И если, например, хром нормально будет поддерживать super-property а опера его будет поддерживать частично (глючить), то мы не сможем включить его для хрома так, чтобы в опере было нормально.
0
zapimir #
Имхо, от этого был бы толк, если бы новые версии браузеров не появлялись с такой частотой. А так на деле получается так пробуем свойство во всех браузерах основных, если более менее одинаково работает, то юзаем, если нет, просто откладываем на потом (я не говорю о тестовых сайтах, задача которых показать, как работает эта фича).
Косяки есть и сейчас причем на вещах которые якобы уже стандартны. Например, в Opera не пашет text-overflow: ellipsis для ячеек таблицы, в хроме тоже косяки с таблицами были, пришлось для хрома даже хак писать. Лучше бы сделали условные операторы как в IE, чтобы можно было без ручного определения браузера, и даже без JS, юзать разный код для разных браузеров.
+1
Softlink #
Фильтры в ИЕ ведут к прекращению работы border-radius у элемента. Так что тут надо выбирать: либо круглое, либо градиентное.
+1
nikitammf #
CSS Gradients for IE9 — и кругло и с градиентом.

А вообще есть полноценный сервис по создаю кроссбраузерных градиентов: Ultimate CSS Gradient Generator
0
philpirj #
OMG, есть же Compass.
0
philpirj #
И да, оно работает с IE.
0
nikitammf #
Оно не работает с IE9, как писалось выше, фильтры не работают с border-radius, поэтому градиент необходимо делать через SVG.
0
SelenIT2 #
Два из четырех углов можно спасти, сделав один цвет градиента обычной заливкой, а поверх наложив градиент из другого цвета в прозрачность (#00xxxxxx в IE-шной ARGB).
+1
kolyuchii #
Чтобы было кроссбраузерно, надо делать картинками.

Но тоже придётся кое с чем мириться.
0
adminimus #
>Посмотрел в IE 9-ом, поржал :)

залейте скриншот если не трудно, девятый ослик не у всех под рукой есть
+1
WorldCount #
Это 4-ый пример: habrastorage.org/storage2/a10/339/88f/a1033988f46656651dec9ae24e04cd82.png
Картинку нормально запилить не могу, карма.

Все 5-ть примеров выглядят одинаково :)
В «Представлении совместимости» так же ничего не меняется.
+4
Sterhel #
Надо сбацать музыкальный сайт с интерфейсом в виде стааааарой кассетной деки, где кнопки залипали, и использовать там данный пример.
+2
RubyRoid07 #
Вот здесь есть неплохой пример: habrahabr.ru/blogs/css/105267/
0
Xazzzi #
Шикаррно :) Особенно понравился пример 4 с демо-сайта, кликал минут 5.
+1
Xlab #
Прекрасно! Как бы не стало мэйнстримом…
А то все хорошие штуки начинают доставать, когда они на всех абсолютно сайтах/блогах/и.т.п.
0
0n1y_0ne #
Охренительно! В 3 примере косячок с тенью от ненажимающегося элемента, да и вообще с тенями борщит порой автор, а в целом просто невообразимо красиво! Скорее бы вот так просто можно было все это использовать, без мозголомни с тем же IE.
0
arty #
и на семантику плевать, конечно! главное, что можно кликать левой кнопкой!
0
kolyuchii #
С семантикой всё в порядке. Такой приём довольно просто использовать для любого тега.
0
arty #
довольно просто использовать для любого тега, поэтому пример кнопки мы сделаем именно на ссылке, так держать
–1
kolyuchii #
Умейте видеть суть вещей.
0
SelenIT2 #
Поддерживаю! Чай, не времена HTML 2.0/3.2 на дворе, когда стилизуемых интерактивных элементов, окромя ссылок, совсем не водилось (ну <input type="image"> еще:). Сейчас, в эпоху, когда наконец стали управляемыми нативные button-ы, а со скриптами можно вообще навесить любую функциональность на что угодно, хоть на span, глупо ограничивать себя стереотипами икснадцатилетней давности. А особенно умиляет «героическая» борьба с дефолтным действием ссылок (все эти onclick="return false" и т.п.) — ну зачем, зачем, когда есть куча других интерактивных элементов (а активировать с клавиатуры можно вообще любой элемент с tabindex-ом)?..
0
kolyuchii #
Автор не заставляет делать кнопки из ссылок, не говорит, что это правильно. Он выложил идею.

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

Судите сами: суть статьи — показать, что кнопки можно делать с помощью псевдоэлементов и одного тега. Один тег есть? Есть! Псевдоэлементы есть? Есть! Всё. Больше от этой статьи не требуется ничего.
–1
arty #
от этой статьи требуется больше. Требуется, чтобы сотни новичков-верстальщиков могли копировать из неё решение, которое не только работает, но ещё и правильное. А сейчас эти сотни новичков скопируют из неё не только «один тег с псевдоэлементами», но и использование ссылок в качестве кнопок. Я-то суть вещей увижу, а они — нет
+1
kolyuchii #
Не лезьте в чужую голову.
Никто не помрёт, если сделает кнопку из ссылки. Если человеку интересно верстать он очень скоро научится делать это правильно вне зависимости от этой статьи. Согласитесь, она всё же не о семантике, а о методе. Хотя наверное скорее даже просто о дизайне.
+1
SelenIT2 #
Строго говоря, да, это лишь перевод — перевод неплохой статьи по дизайну, с описанием логичного метода решения дизайнерской задачи. Но т.к. аудитория Хабра всё-таки уровнем повыше и пресловутую суть вещей видить чуть более комплексно — если бы в ней была ремарка от переводчика а-ля «Кстати, так можно делать не только со ссылками, вот вам пожалуйста пример раз с button и пример два со span» — ее образовательная ценность возросла бы в разы. Имхо.

Хотя и так неплохо, но за всеми непонятный HTML обидно...
+1
kolyuchii #
Если уж так печётесь о новичках — накатайте годную статью о семантике. Для новичков это будет полезнее ваших комментариев.
+1
arty #
статей по семантике уже много, именно поэтому обидно видеть статьи по другим темам, где семантика игнорируется напрочь. А с подходом «никто не помрёт» российская милиция работает, только вот почему-то на него все жалуются
0
kolyuchii #
Знаете, американская гуглопочта как-то живёт с не семантичными кнопками. И мы все как-то работаем с ней.

А про милицию — это вас занесло. Не при чём она тут.
0
arty #
у гугла для семантики куча других атрибутов в кнопки напихана, хотя и фейлов у них достаточно. Можно сделать лучше.

а занесло скорее вас со смертями. Да, веб-разработка обычно не имеет дела с жизнью и смертью, но это не повод учить новичков делать фигню
–1
kolyuchii #
>у гугла для семантики куча других атрибутов в кнопки напихана
Каких? Кнопка — это или button или input. Всё остальное — не семантично.

Быть может и «новички», обчитавшись кучи статей о семантике, тоже напихают кучу других атрибутов?
+1
arty #
ясно, про wai-aria вы не слышали

новички не обчитаются, большинство новичков делает минимально необходимый с их точки зрения объём работы
0
kolyuchii #
При чём тут это? Не путайте технологию с семантикой.
0
arty #
об этом я уже не буду спорить
в любом случае можно делать лучше гугла
0
kolyuchii #
Лучше можно сделать всегда. Но гуглопочта отлично работает уже сейчас.
–1
arty #
недостаточно хорошо для меня
0
kolyuchii #
Тогда исправьте эту статью и отправьте в гугл. Я думаю, они сразу всё поймут и исправятся)
–1
kolyuchii #
>большинство новичков делает минимально необходимый с их точки зрения объём работы

Таким людям подобного рода примеры, что мёртвому припарка.
0
arty #
то есть, из хороших примеров они не скопируют хороший код?
0
kolyuchii #
Копируют, конечно копируют. Но не вдумываются. А просто копипастят. А то, что они напишут сами — ни от каких примеров не зависит. Т.е. опять же образовательный смысл примеров для «новичков» стремиться к нулю. А опытный разработчик, как вы сами заметили, и так всё поймёт.
0
SelenIT2 #
В текущем варианте гуглопочты (по крайней мере том, что открывается у меня), первые три наугад тыкнутые файрбагом кнопки вполне семантичные — на базе div с role=button. Ламерских «ссылкокнопок в никуда» на нем лично я не наблюдаю.
0
kolyuchii #
image
–1
SelenIT2 #
То ли еще будет, если смотреть не построенную DOM, а заглянуть в исходную разметку (которая View Source)… :)

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

Кстати, упрощенная версия гугла сделана как раз на HTML-ных кнопках (хотя исключения типа этого «Refresh» — который как раз ссылка — есть, но в этом тоже есть логика: по сути рефреш — это запрос с сервера последнего состояния страницы, т.е. как раз переход по адресу!).
0
kolyuchii #
Кто мешает добавит role к примерам в статье?
Зачем придираться к семантике, если на деле, она играет третьестепенное значение.
–1
SelenIT2 #
Role помогает прояснить роль (привет кэпу:) семантически нейтральных элементов. Но не может быть оправданием использования специализированных вещей откровенно вразрез с их назначением.

Сколько не называй фотоаппарат «молотком», забивать им гвозди неправильно (простым бруском железа — тоже не ахти, но всяко лучше). Использование ссылок не для перехода к странице/загрузки контента сродни забиванию гвоздей фотиком.
0
kolyuchii #
Повесьте на эту ссылку переход по страницам. Делов-то!
0
SelenIT2 #
А смысл?.. :)
0
kolyuchii #
Смысл в том, что статья не о семантике, а о методе. Если голова есть — применишь правильно.
0
SelenIT2 #
Хорошо, когда есть хороший метод. Плохо, когда у начинающих складывается впечатление, что единственное, что может реагировать на действия юзера — это ссылка. Совсем плохо, когда единственным решением кажется искусственно навесить на кнопку переход по ссылке (напрочь не нужный по задаче) — просто «чтоб было, раз положено» — вместо того, чтобы взглянуть на остальную сотню элементов HTML. И просто головы со спецификацией, увы, не всегда достаточно для правильного применения инструментов с первой попытки — иначе не было бы такого кол-ва холиворов «про семантику»… :)

Но действительно, толку от моего брюзжания немного, так что закругляюсь :)
–1
kolyuchii #
А если статей дофига, зачем переживать. Интересующийся человек обязательно прочтёт их.
0
arty #
заинтересовавшихся 10%, остальные 90% не разбираются, а копируют примеры, создавая таким образом большую часть веба. Поэтому и нужно примеры сразу делать правильными
0
kolyuchii #
Остальные 90% перестанут верстать спустя первые полгода, а их проекты умрут ещё быстрее.
–1
arty #
это не так
вы оптимист
0
kolyuchii #
Вы не сильно от меня отличаетесь. Примером в одной статье улучшить работу 90% верстальщиков.
0
arty #
вы какие-то странные вещи вычитываете в моих буквах, дальше я с вами спорить не буду
0
kolyuchii #
Хорошо, засчитаю ваши каменты как вброс)
0
TheIseAse #
А еще кнопку третьего типа можно использовать для счетчика каких-нибудь «лайков». Цифра удачно стоит)
0
Night_Coder #
Ненавижу отсутствие :active у кнопок на многих сайтах.
Разве так трудно сделать эффект нажатия? Ведь так и хочется чтобы кнопка проваливалась, или меняла цвет…
+7
egge #
У вас там яндекс.метрика стоит, покажите карту кликов для 3его примера. Уж очень интересно…
0
limon_spb #
Поддерживаю!
А в целом — красиво получилось! Однозначно +
+2
nabliker #
Не зря я ее все таки ее прикрутил :)



Всего кликов: 78600

0
ruikarikun #
А как объясняются зеленые пятна в левой части?
0
nabliker #
Видимо, там тоже кликали :)
+2
antonzaycev #
На пятой кнопке думаю не хватает при нажатии смещать текст вниз вместе с кнопкой, иначе теряется сам эффект «реалистичности» как на остальных 4-х кнопках.
+1
Gruxon #
Пример 3
Мне немного показалось не совсем логичным, то при нажатии на циферку, нажимается кнопка рядом, а циферка остается. ИМХО, не должно ничего происходить, только когда саму кнопочку нажмешь, тогда надо «нажиматься».
0
mgrach #
Поддерживаю. Мне тоже этот момент показался нелогичным. Совсем было бы круто, если бы циферка прибавлялась.
+2
dimap #
Особенно нравятся примеры 3 и 5, но в 5 интуитивно сначала тыкаешь на сердечко, а не на надпись.
+2
eno_one #
а у меня в опере почему-то не всё ок с 4 примером :( стрелочки улетели вверх( ver. 11.60
0
Dimoniusis #
Та же версия Оперы, та же проблема.
+2
agatische #
У вас примере кода для первой кнопки пропущена тень:

.a_demo_one {
    ...
    box-shadow: 0 1px 0 #7FD2F1 inset, 0 1px 0 #FFFFFF;
}
+1
Glivera #
Все красиво, спасибо за примеры.
Вот только если захочется прикрутить анимацию на CSS3 то придется отказываться от псевдоэлементов :(…
0
Operatino #
Автору желательно бы указать об этом в посте, сам натыкался на подобный недостаток.
0
nabliker #
Это написано в заключении.
0
nabliker #
Ошибся, это написано в дисклеймере.
+1
PSNet #
Красиво. странно что даже ФФ3.6 косится на некоторые кнопки.
+1
PSNet #
там с padding что-то не то в ФФ3.6
0
BlackGod #
Пример №2 — больше напоминает «рычаг», а не кнопку… а 3 и 4 — волшебны!
0
Operatino #
Красивые кнопки, но прежде чем постить очередной пост о кнопках на CSS3, удивите народ, сделайте их хоть по всем правилам — clip2net.com/s/1tHso (ie7) обязательно учтите fallback для старых браузеров, понятно что там кнопки будут просто синими прямоугольниками, но кликаться вне области кнопки точно не должны.
0
BlackGod #
ИМХО — старые браузеры должны умереть!
0
Operatino #
Пусть там будет не красиво, но основые действия должны работать, IE7 еще 3%.
+2
timukas #
Оппа! Пошёл на сайт демо кнопки опнаживать и облом.

Виртуальный сервер salavat.me не существует или отключен.

0
timukas #
опнаживать=понажимать
+1
kost #
Идите на оригинальный: tympanus.net/Tutorials/CSSButtonsPseudoElements/index2.html
0
nabliker #
Добавил в пост работающие ссылки.
0
philpirj #
Виртуальный сервер salavat.me не существует или отключен.

Положите на jsFiddle.
+1
nabliker #
Спасибо за совет, добавил ссылку в конце поста.
+1
nabliker #
Ну все, положили сайт :)
+3
timukas #
Чрезмерное нажатие на кнопки вызывает повышенный износ псевдо-элементов, а также может привести к поломке деталей сервера :)
+1
philpirj #
У меня (Linux, FF9):
— нет стрелки на 4й кнопке — на jsfiddle-то картинки нет. Решается использованием '→' в content, но стрелка при этом получается не по центру кружочка. Варьирование padding-top приводит к искажению кружка в эллипс;
— на 3й кнопке элемент :before выше, чем 'click me'. Варьирование font-size желаемого эффекта не дало.
+1
Janot #
Кнопки на столько приятны, что при нажатии вызывают улыбку.
0
nabliker #
Хочу сказать спасибо всем, кто повышал рейтинг статьи, оставлял комментарии, плюсовал карму, мне это безумно приятно, так как я здесь совсем не давно, и, честно говоря, не ожидал такого хорошего отношения со стороны Хабражителей :)

Благодаря вам я получил годовую подписку на Букмейт, хотя сегодня сам хотел оплатить подписку на месяц :)

Постараюсь в дальнейшем радовать вас новыми переводами хороших статей :)

0
cryingjoker #
сейчас разбираюсь с подобными тенями, поэтому вопрос: есть ли способ, чтобы это открылось на эксплорере ниже 9?
не подскажите?
0
BReal #
Подскажите, а можно ли сделать (например во втором примере) так, чтобы в меню:


Home
Prices
Feedback



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

У меня не выходит :(
0
BReal #
Хабр не позволяет теги вставлять =( Если можно в ЛС

Home
Prices
Feedback


0
BReal #
Не знаю почему, но мои кнопки не всегда срабатывают. Бывает что нажимаешь по кнопке — анимация отображается, но на другую страничку не переходит. Opera + IE. Перемудрил наверное с подпиливанием под себя :(

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