переход ширины css при наведении курсора мыши на ссылку

#html #css

#HTML #css

Вопрос:

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

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

HTML:

 <a class="link" href="/"> Order <a/>
  

css:

 a.link {      
background: #0069b4 none repeat scroll 0% 0%;
color: white;
font-size: 24px;
height: 60px;
cursor: pointer;
border-radius: 30px;
text-align: center;
padding: 10px 15px;
 transition: max-width 1000ms ease-in-out;
 -webkit-transition: max-width 1000ms ease-in-out;
 -moz-transition: max-width 1000ms ease-in-out;    
}

a.link:hover {
    padding: 10px 40px;
    max-width: 100%;
}

a.link:hover:after {
    font-family: icomoon;
    content: "e903";
    color: #ffffff;
    font-size: 20px;          
}
  

https://jsfiddle.net/Lg7kutpp/

Ответ №1:

Ваш код не работает, потому что у него нет рабочей ширины. Из-за заполнения меняется размер, и, следовательно, transition:max-width не будет работать.

Простой способ исправить это в вашем коде — добавить transition:all.

Проверьте это:

 a.link {      
background: #0069b4 none repeat scroll 0% 0%;
color: white;
font-size: 24px;
height: 60px;
cursor: pointer;
border-radius: 30px;
text-align: center;
padding: 10px 15px;
 transition: all 1s ease-in-out;
 -webkit-transition: all 1s ease-in-out;
 -moz-transition: all 1s ease-in-out;    
}

a.link:hover {
    padding: 10px 40px;
    max-width: 100%;
}

a.link:hover:after {
    font-family: icomoon;
    content: "e903";
    color: #ffffff;
    font-size: 20px;          
}  
 <a class="link">Order></a>  

Если вы просто хотите перейти только к свойству width, вам следует добавить display:inline-block и свойство width к классу anchor.

 a.link {      
background: #0069b4 none repeat scroll 0% 0%;
color: white;
font-size: 24px;
height: 60px;
cursor: pointer;
border-radius: 30px;
width: 100px;  
 display: inline-block;
text-align: center;
padding: 10px 15px;
 transition: width 1s ease-in-out;
 -webkit-transition: width 1s ease-in-out;
 -moz-transition: width 1s ease-in-out;    
}

a.link:hover {
    padding: 10px 40px;
    width: 150px;
}

a.link:hover:after {
    font-family: icomoon;
    content: "e903";
    color: #ffffff;
    font-size: 20px;          
}  
 <a class="link">Order</a>  

Комментарии:

1. Пожалуйста, отметьте это как решаемое, если это работает для вас @Gabbax0r, рад, что это работает.

Ответ №2:

 a.link {
  background: #0069b4 none repeat scroll 0% 0%;
  color: white;
  font-size: 24px;
  height: 60px;
  cursor: pointer;
  border-radius: 30px;
  text-align: center;
  padding: 10px 15px;

}

a.link:hover {
  padding: 10px 40px;
  max-width: 100%;
    transition: 1000ms ease-in-out;
  -webkit-transition:1000ms ease-in-out;
  -moz-transition:1000ms ease-in-out;
}

a.link:hover:after {
  font-family: icomoon;
  content: "e903";
  color: #ffffff;
  font-size: 20px;

}
  

Вы должны добавить переход в селектор наведения без max-width

https://jsfiddle.net/Lg7kutpp/1/

Ответ №3:

Я считаю, что вам нужно установить максимальную ширину на что-то меньшее, чем 100% в a.link.

Что вы сейчас делаете, так это устанавливаете максимальную ширину на 100% при наведении курсора мыши, но значение максимальной ширины по умолчанию уже равно 100%.

Либо установите значение max-width меньше 100% в разделе a.link, либо установите значение max-width больше 100% в разделе a.link:hover.

Когда дело доходит до transition-property, вы могли бы также написать transition: all 1000ms ease-in-out вместо transition: max-width 1000ms ease-in-out, поскольку использование all гарантирует, что любая анимация на .link будет иметь те же свойства.

Кроме того, я бы рекомендовал вам не использовать href=»/», если вы не собираетесь направлять пользователя на главную страницу. Если вам просто нужен якорь, который нигде не ссылается, вы можете удалить его, используя href .

Надеюсь, это поможет.