2017-02-18 7 views
0

Я не знаю, как решить эту проблему: при наведении элементов 'a' div увеличивается, а другой «a» перемещается.Fix on hover extends element

Спасибо за помощь

https://jsfiddle.net/0r2v2qyp/

Здесь HTML:

<a id="btn_agency" class="btn_presentation">Agenzia</a> 
<a id="btn_student" class="btn_presentation">Studente</a> 
<a id="btn_prof" class="btn_presentation">Docente</a> 
<a id="btn_admin" class="btn_presentation">Segreteria</a> 

И CSS:

.btn_presentation { 
    float: left; 
    margin: 10px; 
    color: royalblue; 
    font-size: 20px; 
    position: relative; 
    letter-spacing: 0; 
    text-transform: uppercase; 
    transition: all .2s ease-out; 
} 

.btn_presentation:after { 
    content: ''; 
    position: relative; 
    display: block; 
    margin: 0 auto; 
    width: 0; 
    height: 0; 
    background: red; 
    transition: all .2s ease-out; 
} 

.btn_presentation:hover { 
    letter-spacing: 5px; 
    transition: all .3s ease-in; 
} 

.btn_presentation:hover:after { 
    width: 100%; 
    height: 2px; 
    transition: all .2s ease-in-out; 
} 
+1

Что должно произойти вместо этого? – LGSon

+0

Он хочет, чтобы текст увеличивался при наведении курсора, а другие тексты поблизости были отброшены. – Omnitored

+0

Точно, Omnitored – Toma

ответ

1

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

div { 
 
    display: inline-block; 
 
    margin: 10px; 
 
    width: 120px; 
 
} 
 

 
.btn_presentation { 
 
    display: inline-block; 
 
    color: royalblue; 
 
    font-size: 20px; 
 
    position: relative; 
 
    letter-spacing: 0; 
 
    text-transform: uppercase; 
 
    transition: all .2s ease-out; 
 
} 
 

 
.btn_presentation:after { 
 
    content: ''; 
 
    position: relative; 
 
    display: block; 
 
    margin: 0 auto; 
 
    width: 0; 
 
    height: 0; 
 
    background: red; 
 
    transition: all .2s ease-out; 
 
} 
 

 
.btn_presentation:hover { 
 
    letter-spacing: 5px; 
 
    transition: all .3s ease-in; 
 
} 
 

 
.btn_presentation:hover:after { 
 
    width: 100%; 
 
    height: 2px; 
 
    transition: all .2s ease-in-out; 
 
}
<div> 
 
    <a id="btn_agency" class="btn_presentation">Agenzia</a> 
 
</div> 
 
<div> 
 
    <a id="btn_student" class="btn_presentation">Studente</a> 
 
</div> 
 
<div> 
 
    <a id="btn_prof" class="btn_presentation">Docente</a> 
 
</div> 
 
<div> 
 
    <a id="btn_admin" class="btn_presentation">Segreteria</a> 
 
</div>


Опцион может быть вместо этого масштабировать его с помощью transform

div { 
 
    display: inline-block; 
 
    margin: 10px; 
 
} 
 

 
.btn_presentation { 
 
    display: inline-block; 
 
    color: royalblue; 
 
    font-size: 20px; 
 
    position: relative; 
 
    letter-spacing: 0; 
 
    text-transform: uppercase; 
 
    transition: transform .2s ease-out; 
 
} 
 

 
.btn_presentation:after { 
 
    content: ''; 
 
    position: relative; 
 
    display: block; 
 
    margin: 0 auto; 
 
    width: 0; 
 
    height: 2px; 
 
    background: red; 
 
    transition: width .2s ease-out; 
 
} 
 

 
.btn_presentation:hover { 
 
    transform: scale(1.2); 
 
    transition: transform .3s ease-in; 
 
} 
 

 
.btn_presentation:hover:after { 
 
    width: 100%; 
 
    transition: width .2s ease-in-out; 
 
}
<div> 
 
    <a id="btn_agency" class="btn_presentation">Agenzia</a> 
 
</div> 
 
<div> 
 
    <a id="btn_student" class="btn_presentation">Studente</a> 
 
</div> 
 
<div> 
 
    <a id="btn_prof" class="btn_presentation">Docente</a> 
 
</div> 
 
<div> 
 
    <a id="btn_admin" class="btn_presentation">Segreteria</a> 
 
</div>


обновляется на основе комментариев

Это растягивать слово только боковые пути

div { 
 
    display: inline-block; 
 
    margin: 10px; 
 
} 
 

 
.btn_presentation { 
 
    display: inline-block; 
 
    color: royalblue; 
 
    font-size: 20px; 
 
    position: relative; 
 
    letter-spacing: 0; 
 
    text-transform: uppercase; 
 
    transition: transform .2s ease-out; 
 
} 
 

 
.btn_presentation:after { 
 
    content: ''; 
 
    position: relative; 
 
    display: block; 
 
    margin: 0 auto; 
 
    width: 0; 
 
    height: 2px; 
 
    background: red; 
 
    transition: width .2s ease-out; 
 
} 
 

 
.btn_presentation:hover { 
 
    transform: scaleX(1.2); 
 
    transition: transform .3s ease-in; 
 
} 
 

 
.btn_presentation:hover:after { 
 
    width: 100%; 
 
    transition: width .2s ease-in-out; 
 
}
<div> 
 
    <a id="btn_agency" class="btn_presentation">Agenzia</a> 
 
</div> 
 
<div> 
 
    <a id="btn_student" class="btn_presentation">Studente</a> 
 
</div> 
 
<div> 
 
    <a id="btn_prof" class="btn_presentation">Docente</a> 
 
</div> 
 
<div> 
 
    <a id="btn_admin" class="btn_presentation">Segreteria</a> 
 
</div>

+0

Благодарим за ответ! Я предпочитаю второй выбор, даже если тексты имеют странный эффект. Вы знаете, как его решить? – Toma

+0

@Toma Какой странный эффект вы имеете в виду? – LGSon

+0

В конце анимации слово встает – Toma