2016-01-10 2 views
2

У меня есть эффект перехода, который делает слайд вниз/вверх при наведении. Конечно, это имеет смысл, но я хочу, чтобы он медленно или медленно исчезал, как нижний край.CSS3 - Фоновая позиция слайда перехода -

Вот мой код:

body { 
 
    background-color: rgb(6, 7, 11); 
 
} 
 
.bar-logout { 
 
    float: left; 
 
    background: rgb(7, 8, 13); 
 
    width: auto; 
 
    height: 40px; 
 
    border-bottom: 1px solid rgb(112, 101, 58); 
 
    cursor: pointer; 
 
    -webkit-transition: all 0.5s ease-in-out; 
 
    -moz-transition: all 0.5s ease-in-out; 
 
    -ms-transition: all 0.5s ease-in-out; 
 
    -o-transition: all 0.5s ease-in-out; 
 
    transition: all 0.5s ease-in-out; 
 
} 
 
.bar-logout span { 
 
    float: right; 
 
    padding: 6px 10px 6px 10px; 
 
} 
 
.bar-logout span span.logout { 
 
    font-family: "Trebuchet MS", Helvetica, sans-serif; 
 
    font-size: 11px; 
 
    font-weight: bold; 
 
    color: rgb(164, 157, 139); 
 
    padding-top: 9px; 
 
    text-shadow: 0px 2px 3px rgb(0, 0, 0); 
 
    -webkit-transition: all 0.5s ease-in-out; 
 
    -moz-transition: all 0.5s ease-in-out; 
 
    -ms-transition: all 0.5s ease-in-out; 
 
    -o-transition: all 0.5s ease-in-out; 
 
    transition: all 0.5s ease-in-out; 
 
} 
 
.bar-logout span span.logout .logout-icon { 
 
    float: left;position:relative;bottom:2px;background-image:url('http://i.imgur.com/eCXybOC.png');background-repeat:no-repeat;background-position:0 -16px;margin:0 8px 0 0;width:16px;height:16px;-webkit-transition:all 0.5s ease-in-out;-moz-transition:all 0.5s ease-in-out;-ms-transition:all 0.5s ease-in-out;-o-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out; } 
 
    .bar-logout: hover { 
 
    border-bottom: 1px solid rgb(200, 180, 85); 
 
    } 
 
    .bar-logout:hover > span span.logout .logout-icon { 
 
    background-position: 0 0; 
 
    }
<div class="bar-logout"> 
 
    <span> 
 
    <span class="logout"><div class="logout-icon"></div>LOGOUT</span> 
 
    </span> 
 
</div>

+0

STA zelis да postignes? –

+0

Вы предпочитаете только затухать и выходить и не скользить? .. – repzero

+0

Marko Mackic pa ova ikona za logout da ne rad slide neko kao fade out/in, bas isto kao ovaj border bottom .. @repzero Да, как эта нижняя граница , –

ответ

1

Я не думаю, что можно добиться эффекта затухания/выпадения (который вы пытаетесь создать) с использованием одного элемента, когда фоновые изображения являются частью спрайта. Это связано с тем, что спрайт всегда будет нуждаться в движении слайдов. Чтобы движение слайдов было невидимым и исчезло, нам нужно больше одного изменения состояния - (1) затухать текущее изображение (opacity: 0), (2) изменить background-position в правильное положение (3) затухать изображение (opacity: 1). Поскольку для этого требуется больше, чем изменение непрозрачности, оно не может быть достигнуто при переходе на один элемент. (Примечание: Это может быть сделано с анимацией).

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

Эффект похож на тот, на границе нижней: (то есть, иконка выглядит как она меняется цвет)

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

body { 
 
    background-color: rgb(6, 7, 11); 
 
} 
 
.bar-logout { 
 
    float: left; 
 
    background: rgb(7, 8, 13); 
 
    width: auto; 
 
    height: 40px; 
 
    border-bottom: 1px solid rgb(112, 101, 58); 
 
    cursor: pointer; 
 
    transition: all 0.5s ease-in-out; 
 
} 
 
.bar-logout span { 
 
    float: right; 
 
    padding: 6px 10px 6px 10px; 
 
} 
 
.bar-logout span span.logout { 
 
    font-family: "Trebuchet MS", Helvetica, sans-serif; 
 
    font-size: 11px; 
 
    font-weight: bold; 
 
    color: rgb(164, 157, 139); 
 
    padding-top: 9px; 
 
    text-shadow: 0px 2px 3px rgb(0, 0, 0); 
 
    transition: all 0.5s ease-in-out; 
 
} 
 
.bar-logout span span.logout .logout-icon { 
 
    float: left; 
 
    position: relative; 
 
    bottom: 2px; 
 
    background-image: url('http://i.imgur.com/eCXybOC.png'); 
 
    background-repeat: no-repeat; 
 
    background-position: 0 0px; 
 
    margin: 0 8px 0 0; 
 
    width: 16px; 
 
    height: 16px; 
 
    transition: all 0.5s ease-in-out; 
 
} 
 
.bar-logout span span.logout .logout-icon:after { 
 
    position: absolute; 
 
    content: ''; 
 
    background-image: url('http://i.imgur.com/eCXybOC.png'); 
 
    background-repeat: no-repeat; 
 
    background-position: 0 -16px; 
 
    width: 100%; 
 
    height: 100%; 
 
    transition: all 0.5s ease-in-out; 
 
    z-index: 1; 
 
} 
 
.bar-logout:hover { 
 
    border-bottom: 1px solid rgb(200, 180, 85); 
 
} 
 
.bar-logout:hover > span span.logout .logout-icon:after { 
 
    opacity: 0; 
 
}
<div class="bar-logout"> 
 
    <span> 
 
<span class="logout"><div class="logout-icon"></div>LOGOUT</span> 
 
    </span> 
 
</div>


Фактическое нарастающий/выход эффект: (то есть серый значок гаснет, желтый затухает-в на парении и наоборот)

Этот снова добавляется значок серого цвета поверх желтого значка (с использованием псевдоэлемента) и при наведении, серый значок opacity сначала изменяется на 0, а затем после задержки желтый значок opacity изменяется на 1 (это достигается с использованием transition-delay, равным transition-duration).

body { 
 
    background-color: rgb(6, 7, 11); 
 
} 
 
.bar-logout { 
 
    float: left; 
 
    background: rgb(7, 8, 13); 
 
    width: auto; 
 
    height: 40px; 
 
    border-bottom: 1px solid rgb(112, 101, 58); 
 
    cursor: pointer; 
 
    transition: all 0.5s ease-in-out; 
 
} 
 
.bar-logout span { 
 
    float: right; 
 
    padding: 6px 10px 6px 10px; 
 
} 
 
.bar-logout span span.logout { 
 
    position: relative; 
 
    font-family: "Trebuchet MS", Helvetica, sans-serif; 
 
    font-size: 11px; 
 
    font-weight: bold; 
 
    color: rgb(164, 157, 139); 
 
    padding-top: 9px; 
 
    text-shadow: 0px 2px 3px rgb(0, 0, 0); 
 
    transition: all 0.5s ease-in-out; 
 
} 
 
.bar-logout span span.logout .logout-icon { 
 
    float: left; 
 
    position: relative; 
 
    bottom: 2px; 
 
    background-image: url('http://i.imgur.com/eCXybOC.png'); 
 
    background-repeat: no-repeat; 
 
    background-position: 0 0px; 
 
    margin: 0 8px 0 0; 
 
    width: 16px; 
 
    height: 16px; 
 
    opacity: 0; 
 
    transition: all 0.5s ease-in-out; 
 
} 
 
.bar-logout span span.logout:before { 
 
    float: left; 
 
    position: absolute; 
 
    content: ''; 
 
    left: 10px; 
 
    bottom: 8px; 
 
    background-image: url('http://i.imgur.com/eCXybOC.png'); 
 
    background-repeat: no-repeat; 
 
    background-position: 0 -16px; 
 
    margin: 0 8px 0 0; 
 
    width: 16px; 
 
    height: 16px; 
 
    transition: all 0.5s ease-in-out 0.5s; 
 
    z-index: 1; 
 
} 
 
.bar-logout:hover { 
 
    border-bottom: 1px solid rgb(200, 180, 85); 
 
} 
 
.bar-logout:hover > span span.logout:before { 
 
    opacity: 0; 
 
    transition: all 0.5s ease-in-out; 
 
} 
 
.bar-logout:hover > span span.logout .logout-icon{ 
 
    opacity: 1; 
 
    transition: all 0.5s ease-in-out 0.5s; 
 
}
<div class="bar-logout"> 
 
    <span> 
 
    <span class="logout"><div class="logout-icon"></div>LOGOUT</span> 
 
    </span> 
 
</div>

+1

Спасибо, ты мне помог. Вот что, первый код .. –

0

EDIT: Основываясь на ваш комментарий

Вот фрагмент

body { background-color:rgb(6,7,11); } 
 
.bar-logout { float:left;background:rgb(7,8,13);width:auto;height:40px;border-bottom:1px solid rgb(112,101,58);cursor:pointer;-webkit-transition:all 0.5s ease-in-out;-moz-transition:all 0.5s ease-in-out;-ms-transition:all 0.5s ease-in-out;-o-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out; } 
 
.bar-logout span { float:right;padding:6px 10px 6px 10px; } 
 
.bar-logout span span.logout { font-family:"Trebuchet MS",Helvetica,sans-serif;font-size:11px;font-weight:bold;color:rgb(164,157,139);padding-top:9px;text-shadow:0px 2px 3px rgb(0,0,0);-webkit-transition:all 0.5s ease-in-out;-moz-transition:all 0.5s ease-in-out;-ms-transition:all 0.5s ease-in-out;-o-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out; } 
 
.bar-logout span span.logout .logout-icon { float:left;position:relative;bottom:2px;background-image:url('http://i.imgur.com/eCXybOC.png');background-repeat:no-repeat;background-position:0 -16px;margin:0 8px 0 0;width:16px;height:16px;-webkit-transition:opacity 0.5s ease-in-out;-moz-transition:opacity 0.5s ease-in-out;-ms-transition:opacity 0.5s ease-in-out;-o-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out;opacity:0; } 
 
.bar-logout:hover { border-bottom:1px solid rgb(200,180,85); } 
 
.bar-logout:hover > span span.logout .logout-icon { opacity:1 }
<div class="bar-logout"> 
 
<span> 
 
<span class="logout"><div class="logout-icon"></div>LOGOUT</span> 
 
</span> 
 
</div>

+0

Я не хочу, чтобы это было так, вы меня не поняли .. Мне нужно, чтобы значок изменил положение фона, но с нажатием на слайд в процессе перехода, но затухание в/из. Эти два значка находятся на одном изображении, и я меняю его на фоновое положение. . –

+0

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

+0

Мне нужен этот значок http://i.imgur.com/6kFCOTp. png, чтобы сделать эффект перехода на этот http://i.imgur.com/FzK3wUG.png Но я делаю эти два значка на одном изображении, поэтому, когда я нахожу, я делаю фоновое положение, чтобы изменить значок. Но когда я делаю это с переходом, слайд вниз/вверх, а не как нижняя граница. Я не могу говорить очень хорошо Английский, поэтому его трудно объяснить, что я действительно хочу .. –

Смежные вопросы