Лучшим решением было бы использовать так называемые запросы элементов. Тем не менее, они не являются стандартными, спецификации не существует, и единственный вариант - использовать одну из доступных полипол / библиотек, если вы хотите пойти этим путем.
Идея, лежащая в основе запросов элементов, заключается в том, чтобы разрешить определенный контейнер на странице для ответа на пространство, которое ему предоставляется. Это позволит написать компонент один раз, а затем отбросить его в любом месте страницы, в то время как он будет корректировать его содержимое до его текущего размера. Независимо от размера окна. Это первое отличие, которое мы видим между запросами элементов и медиа-запросами. Все надеются, что в какой-то момент будет создана спецификация, которая будет стандартизировать запросы элементов (или то, что достигает той же цели) и сделать их родными, чистыми, простыми и надежными. Большинство людей согласны с тем, что запросы СМИ довольно ограничены и не помогают модульным дизайном и реальной отзывчивостью.
Существует несколько полипол / библиотек, которые решают проблему по-разному (можно назвать обходные решения вместо решений хотя):
Я видел другие решения аналогичных проблем. Обычно они используют таймеры или размер окна / видового экрана под капотом, что не является реальным решением. Более того, я думаю, что в идеале это должно решаться главным образом в CSS, а не в javascript или html.
Установите кнопку в относительное положение, а затем примените значение left
к наведению, как показано ниже:
.arrow-right {
/* STYLING */
margin-left: 10px;
border: solid #fff;
border-radius: 1px;
border-width: 0 3px 3px 0;
display: inline-block;
padding: 3px;
transform: rotate(-45deg);
-webkit-transform: rotate(-45deg);
/* TRANSITION */
-webkit-transition: 0.5s; /* Safari */
transition: 0.5s;
/* New Code */
position:relative;
left:0
}
.btn-primary:hover .arrow-right {
left:5px
}
Один из способов заставить это работать - установить кнопку на position relative
и установить стрелку на position absolute
, размер кнопки можно оставить неизменным:
https: //jsfiddle.net/ahmadabdul3/6yc5Lztw/1
Проблема с этим подходом заключается в том, что вам нужно выяснить, как далеко вниз стрелка должна использовать пиксели и свойство top
, поэтому другая кнопка Высота здесь не будет работать автоматически.
Другой способ - добавить отступ справа от кнопки, и при наведении курсора вы удаляете то же количество пикселей отступа, которое добавляете к краю поля. В основном я добавил 20px of padding-right
к кнопке, и поскольку стрелка добавляет 5px or margin
при наведении, я делаю padding right
кнопки 15px
при наведении
https: // jsfiddle. net / ahmadabdul3 / 6yc5Lztw / 4 /
это решение всегда будет держать стрелку и текст выровненными, если ваш CSS правильно настроен с чем-то вроде:
display: inline-block;
vertical-align: middle;