Запрет изменения размера кнопки при переходе иконки

Лучшим решением было бы использовать так называемые запросы элементов. Тем не менее, они не являются стандартными, спецификации не существует, и единственный вариант - использовать одну из доступных полипол / библиотек, если вы хотите пойти этим путем.

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

Существует несколько полипол / библиотек, которые решают проблему по-разному (можно назвать обходные решения вместо решений хотя):

Я видел другие решения аналогичных проблем. Обычно они используют таймеры или размер окна / видового экрана под капотом, что не является реальным решением. Более того, я думаю, что в идеале это должно решаться главным образом в CSS, а не в javascript или html.

0
задан Slamdunk 18 March 2019 в 14:47
поделиться

2 ответа

Установите кнопку в относительное положение, а затем примените значение 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
}

https://jsfiddle.net/du0rLphc/1/ [112 ]

0
ответ дан Matt.Hamer5 18 March 2019 в 14:47
поделиться

Один из способов заставить это работать - установить кнопку на 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;
0
ответ дан duxfox-- 18 March 2019 в 14:47
поделиться