Способ получения формованного подчеркивание отзывчивым чаши, которые не должны быть изменены независимо от заполнения, который наносится на элементе является использование linear-gradient
в качестве фонового изображения. Они могут быть заданы background-size
в значениях пикселей и располагаться в нижней части элемента.
Сам подход достаточно прост:
- Мы используем
border-bottom
из 1px толщиной в производить нижнюю границу.
- Линейный градиент, окрашенный в красный цвет для 2px и прозрачный для остальных, добавляется к элементу и расположен в нижней части элемента.
- Настройка
background-size
определяет высоту левой и правой границ. В фрагменте я установил размер фона как 100% 5px
, и поэтому 5px будет фиксированной высотой левой и правой границ. Их высота может быть увеличена при уменьшении, только изменяя этот параметр.
background-repeat
установлен так, что фоновое изображение повторяется по оси x и задавая отрицательное смещение 1px для background-position
, мы гарантируем, что слева отображается 1px красной границы 1-й градиентной плитки.Так как у нас есть repeat-x on, а размер фона - всего 100%, второй фрагмент по оси x будет начинаться с 1px до конца с самого начала, и таким образом это создаст границу 1px с правой стороны.
Примечание: Коробчатая тень имеет преимущество над этим подходом с точки зрения поддержки браузера. Это только IE10 +.
input {
background-color: transparent;
height: 20px;
width: 300px;
padding:10px 5px;
border: 0;
border-bottom: 1px solid red;
background-image: linear-gradient(to right, red 2px, transparent 2px);
background-repeat: repeat-x;
background-size: 100% 10px;
background-position: -1px 100%;
}
input:nth-child(2) {
padding: 0 5px;
}
input:nth-child(3) {
padding: 10px 10px 1px;
}
input:nth-child(4) {
height: 20px;
padding: 10px 10px 1px;
}
<!-- prefix free library is optional and is only to avoid browser prefixing -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/prefixfree/1.0.7/prefixfree.min.js"></script>
<input type="text" placeholder="Example">
<br/>
<input type="text" placeholder="Example2">
<br/>
<input type="text" placeholder="Example3">
<br/>
<input type="text" placeholder="Example4">
Можно ли изменить ширину линии '1px'? Кроме того, когда я использую это на входе с дополнением, линии на стороне становятся слишком длинными. Можно ли дать им фиксированную высоту? –
@ Duncan вам нужно адаптировать радиус распространения и смещение Y тени окна, чтобы сделать левую и правую линии нужной высотой. К сожалению, их высота изменится в зависимости от высоты входа. Я приведу еще один пример. –
[Пример того, что я имею в виду] (https://jsfiddle.net/38f5ygpe/1/) –