CSS переход ширины границы

У меня такой код:

<div class = "bordered" [ngStyle] = "row.sticked ? {'border-left': '5px solid' + row.sticked } : null">

если установлен row.sticked, свойство border-left присваивается 5px solid #SOME_COLOR.

класс .bordered назначается тому же элементу и определяется следующим образом:

.bordered {
  transition: border-left-width 0.1s linear;
}

Переход работает хорошо, но когда row.sticked становится false, а левая граница удаляется, перехода нет. (появляется граница -> переход работает, граница исчезает -> сразу удаляется, перехода нет).

Я попытался применить border-left: 0 к тому же div (я догадывался, что переход не работает, если границы вообще нет), но переход от border-left: 5px к 0 все еще не работает.

Есть идеи, что мне здесь не хватает?

Angular ngStyle работает с парой ключ: значение, поэтому ваше тернарное условие должно выглядеть либо как [style.border-left] = "row.sticked ? '5px solid' + row.sticked", либо как [ngStyle] = "{'border-left': row.sticked ? '5px solid' + row.sticked}".

standby954 06.08.2018 10:26

@ standby954 Спасибо! Намного лучше.

TheUnreal 06.08.2018 10:44
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
0
2
411
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

ngStyle - это тип keyValue, поэтому я использую row.sticked для переключения значения стиля border-left

<div 
[ngStyle] = "{'border-left': row.sticked ? ('20px solid '+row.sticked) : ('0px solid '+row.sticked) }"
class = "bordered">

    border element

</div>

<button (click) = "row.sticked = 'red' ">show</button>
<button (click) = "row.sticked = '' ">hide</button>

for row.sticked you may use it as flag (true,false) so when you toggle it to false you don't get a black border

пример stackblitz

Другие вопросы по теме

Похожие вопросы