Я работаю над своим 1-страничным портфолио, но застрял на этом 1 бите jquery. У меня есть 2 псевдокнопки, которые являются просто ссылками на странице. Я использую jquery для динамического добавления пустого места внутри этих ссылок, а затем переключаю непрозрачность на этих промежутках так, чтобы казалось, что я анимирую кнопку. Мое наложенное изображение диапазона имеет более светлый цвет, поэтому оно как бы светится. У меня есть контактная форма на этой странице, и я хотел добавить тот же эффект кнопки к кнопке отправки. Это работает в IE и Chrome, но НЕ в FF. В FF кажется, что наведение мыши никогда не срабатывает на элементе, вложенном внутри кнопки. Он действительно работает со ссылками, как и планировалось, поэтому я не уверен, почему этот элемент не соответствует требованиям. Text-indent также не работает в FF, поэтому фактический текст кнопки исчезает в пользу фонового изображения.
вот моя разметка:
<div id="buttons" class="clearfix">
<a id="worksbutton" title="<?php _e('View My Work');?>" class="scroll" href="#works"><?php _e('View My Work');?></a>
<a id="contactbutton" title="<?php _e('Contact Me');?>" class="scroll" href="#contact"><?php _e('Contact Me');?></a>
</div>
и позже у меня есть следующая кнопка, которую я хотел бы вести так же:
<button type="submit" id="sendbutton1">Send</button>
вот jquery, который я использую для добавления пустого тега span внутри каждой ссылки и кнопки (с непрозрачностью 0), за которой следует код, который у меня есть для анимации непрозрачности диапазона до 100% при наведении курсора. это отлично работает для ссылок.
$('#buttons a, #sendbutton1').each(function() {
var button = $(this).html();
$(this).html("<span></span>" + button);
$(this).children("span").css("display","block").css("opacity","0");
});
$('#buttons a span, #sendbutton1 span').live('mouseover mouseout', function(event) {
if (event.type == 'mouseover') {
// animate opacity to full on mouseover
$(this).stop().animate({
opacity: 1
}, "slow");
} else {
// animate opacity to nill on mouseout
$(this).stop().animate({
opacity: 0
}, "slow");
}
});
и, наконец, CSS, который я использую для ссылок и кнопок.
#buttons a{
height: 61px;
width: 161px;
display:inline-block;
text-indent: -9999px;
background: url(images/sprite1.png) no-repeat;
position: relative;
text-align:center;
}
#buttons a span {
background:url(images/sprite1.png) no-repeat;
display:none;
position:absolute;
top:0;
left:0;
height:inherit;
width:inherit;
z-index:100;
}
a#worksbutton{
background-position: -161px 0;
}
a#worksbutton span{
background-position: -161px -61px;
}
a#contactbutton{
background-position: -322px 0;
}
a#contactbutton span{
background-position: -322px -61px;
}
#form-container button#sendbutton1{
display: block;
background: url(images/sprite1.png) no-repeat left -2px;
border: none;
height: 61px;
width: 145px;
padding: 0;
margin:0;
cursor: pointer;
text-indent: -9999px;
}
button#sendbutton1 span {
background: url(images/sprite1.png) no-repeat left -61px;
height: inherit;
width: inherit;
z-index:100;
}
Это сводит меня с ума. Это ошибка или я что-то упускаю? Могли бы действительно использовать ваш свежий взгляд на это. Спасибо!
РЕДАКТИРОВАТЬ: в комментариях к этому сообщению: http://stopdesign.com/archive/2009/02/04/recreating-the-button.html я нашел решение для «фантомного заполнения» Firefox на моей кнопке.
button::-moz-focus-inner { padding: 0; border-style: none; }
ура! конечно, затем я обнаружил, что IE будет подавлять анимацию прозрачных изображений и отображать ужасно выглядящую черную рамку, поэтому я схитрил и назначил белый цвет фона (который будет работать, поскольку мой фон белый, но побеждает цель прозрачных PNG и ограничивает меня в выборе бг)