2016-12-02 2 views
0

Я создаю материал, подобный текстовому полю, и он работает, за исключением случаев, когда я отключу поле ввода. Когда поле фокусируется, метка поднимается над курсором, если в текстовом поле есть какой-либо вход, он должен оставаться выше курсора. Когда я отключу текстовое поле, метка вернется в исходное положение, даже если в поле есть текст (See the fiddle).Переход меток отменяется, когда текстовое поле отключается

Вот что я делаю:

.txt-group label { 
    font-size: 18px; 
    font-weight: normal; 
    position: absolute; 
    pointer-events: none; 
    left: 10px; 
    top: 10px; 
    transition: all 0.2s ease-in-out; 
    color: #999999; 
} 

.txt-group input:focus ~ label, 
.txt-group input:valid ~ label, 
.txt-group input:valid:disabled ~ label { 
    top: -8px; 
    font-size: 14px; 
} 
+0

Просьбы предоставить всю соответствующую коду в [mcve] в самом вопросе, а не на стороннем сайте. –

+0

Для этого решения может понадобиться JavaScript. Насколько я знаю, ': valid' - единственный способ тестирования в CSS, если' input' имеет контент, но он перестает проходить, если у элемента есть атрибуты 'readonly' или' disabled'. –

ответ

0

При объявлении disabled CSS, вы не должны селектор valid, а также.

Попробуйте:

.txt-group input:focus ~ label, 
.txt-group input:valid ~ label, 
.txt-group input:disabled ~ label { 
    top: -8px; 
    font-size: 14px; 
} 

Работа JSFiddle

+2

Этот метод сдвигает ярлык до «завершенного» состояния, даже если отключенное поле «input» пуст. –

+0

@JonUleis О, дерьмо, ты прав. Виноват! Я просто написал текст, если в нем есть текст. –

Смежные вопросы