Предотвратить изменение высоты ссылки при наведении

Используя Angular, Angular Material и Angular Flex-Layout, я создал группу ссылок в стиле карточек или плиток. Когда ссылки не наводятся, отображаются значок и заголовок ссылки. При наведении значок и заголовок больше не отображаются и заменяются информационным текстом.

Для элементов с большим количеством информационного текста это изменение состояния приводит к увеличению высоты элементов.

Я могу исправить это, жестко запрограммировав min-height с пикселями. Однако, если я попытаюсь использовать проценты, например 110%, размер ссылок не изменится. То же самое верно и для div, окружающего ссылки с именем .container.

Вот отрывок:

<div class="container" fxLayout fxLayoutAlign="center" fxLayoutGap="10px">

  <a mat-flat-button color="primary" fxFlex href="https://example.com/footprints">
    <div class="hoverOff"><fa-icon [icon]="faToolbox"></fa-icon>Broken</div>
    <div class="hoverOn">Is your request causing an impact to a business-critical function, which is impacting daily production?</div>
  </a>

  <a mat-flat-button color="primary" fxFlex href="https://example.com/divisions/dev/Lists/Requests/NewForm.aspx?isProject=Yes">
    <div class="hoverOff"><fa-icon [icon]="faPuzzlePiece"></fa-icon>Project</div>
    <div class="hoverOn">Is your request a new product or service?<br>
      Requires and RFI or RFP?<br>
      Requires more than 500 or more internal resource hours<br>
      Necessitates a cost greater then $100,000?<br>
      New banking center or remodel?<br>
      New Partnership, divestiture or branch closure?
    </div>
  </a>

</div>

<style>
.mat-flat-button {
    white-space: normal;
    line-height: normal;
}

a {
    color: white !important;
    display: flex;
    justify-content: center;
    align-items: center;
}

fa-icon {
    display: block;
    font-size: 75px;
}

.mat-primary {
    background-color: #00539B !important;
}

a .hoverOn {
    display: none;
}

a:hover .hoverOn {
    display: block;
}

a:hover .hoverOff {
    display: none;
}
</style>

Я создал пример этого на StackBlitz.

Как я могу разрешить это изменение высоты без жесткого кодирования пикселей?


person cfoster5    schedule 04.12.2018    source источник
comment
@Marshal Не отрезан. Я хочу иметь возможность установить высоту ссылки лучше, чем с помощью пикселей. Не похоже на очень безопасный способ решить изменение размера при наведении.   -  person cfoster5    schedule 05.12.2018


Ответы (2)


Добавление следующего в ваш CSS предотвратит изменение высоты при прокрутке при использовании 45% высоты области просмотра vh

.container{
  height:45vh
}

Также использование следующего расширит контейнер на 10% за пределы vh, в общей сложности 110%

.container{
  height:110vh
}

Стэкблиц

https://stackblitz.com/edit/angular-w1exhe?embed=1&file=src/app/app.component.css

person Marshal    schedule 04.12.2018

Если вы хотите настроить css ссылок, вы можете добавить что-то вроде этого в a css:

 max-height:60vh; (or use percentage instead of vh, but set a max-height)   
 overflow-y:auto;
 overflow-x:hidden;

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

Пример (здесь я установил размер значка 35pt)

person Rachel Gallen    schedule 04.12.2018
comment
Я ставлю пробел после косой черты в значке Operational/, чтобы перенести текст на следующую строку. - person Rachel Gallen; 05.12.2018