Есть ли способ ограничить длину границы. У меня <div>
есть нижняя граница, но я хочу добавить границу слева, <div>
которая растягивается только на половину пути вверх.
Есть ли способ сделать это без добавления дополнительных элементов на странице?
Надеюсь это поможет:
#mainDiv {
height: 100px;
width: 80px;
position: relative;
border-bottom: 2px solid #f51c40;
background: #3beadc;
}
#borderLeft {
border-left: 2px solid #f51c40;
position: absolute;
top: 50%;
bottom: 0;
}
<div id="mainDiv">
<div id="borderLeft"></div>
</div>
Сгенерированный CSS контент может решить эту проблему за вас:
(примечание -
content: "";
объявление необходимо для рендеринга псевдоэлемента)источник
На
:after
скалах :)Если вы немного поиграете, вы даже можете настроить свой измененный элемент границы так, чтобы он отображался по центру или отображался только в том случае, если рядом с ним есть другой элемент (как в меню). Вот пример с меню:
Показать фрагмент кода
источник
Однако мы можем имитировать эффект границы и контролировать его
width
и,height
как мы хотим, другими способами.С помощью CSS (линейный градиент):
Мы можем использовать
linear-gradient()
для создания фонового изображения (изображений) и контролировать его размер и положение с помощью CSS, чтобы он выглядел как граница. Поскольку мы можем применить несколько фоновых изображений к элементу, мы можем использовать эту функцию, чтобы создать несколько рамок, подобных изображениям, и применить их к разным сторонам элемента. Мы также можем покрыть оставшуюся доступную область каким-нибудь сплошным цветом, градиентом или фоновым изображением.Обязательный HTML:
Все, что нам нужно, это только один элемент (возможно, имеющий некоторый класс).
шаги:
linear-gradient()
.background-size
для настройкиwidth
/height
выше созданного изображения, чтобы оно выглядело как граница.background-position
для регулировки положения (напримерleft
,right
иleft bottom
т. Д.) Вышеупомянутых созданных границ.Необходимый CSS:
Примеры:
С помощью
linear-gradient()
мы можем создавать границы сплошного цвета, а также иметь градиенты. Ниже приведены некоторые примеры границ, созданных с помощью этого метода.Пример с рамкой, примененной только на одной стороне:
Показать фрагмент кода
Пример с рамкой, примененной с двух сторон:
Показать фрагмент кода
Пример с рамкой, примененной со всех сторон:
Показать фрагмент кода
Скриншот:
источник
для горизонтальных линий вы можете использовать тег hr:
но невозможно ограничить высоту границы. только высота элемента.
источник
height
. Для замены границы ячейки в теге TD используйте<td>your content<hr/></td>
.Границы определяются только для одной стороны, а не в виде дробей стороны. Так что нет, ты не можешь этого сделать.
Кроме того, новый элемент также не будет границей, он будет только имитировать поведение, которое вы хотите - но он все равно будет элементом.
источник
Еще один способ сделать это - использовать border-image в сочетании с линейным градиентом.
jsfiddle: https://jsfiddle.net/u7zq0amc/1/
Поддержка браузера: IE: 11+
Хром: все
Firefox: 15+
Для лучшей поддержки также добавьте префиксы поставщиков.
caniuse border-image
источник
Это трюк CSS, а не формальное решение. Я оставляю код с черной точкой, потому что это помогает мне позиционировать элемент. Затем раскрасьте ваш контент (цвет: белый) и (margin-top: -5px или около того), чтобы сделать его таким, как если бы периода не было.
источник
Другое решение - вы можете использовать фоновое изображение, чтобы имитировать вид левой границы.
Возможно, вам придется настроить IE (как обычно), но стоит попробовать, если вы планируете именно этот дизайн.
источник
Вы можете определить только одну границу для каждой стороны. Вы должны были бы добавить дополнительный элемент для этого!
источник