Как изменить длину бордер

Есть рамка вокруг текста border-top: 1px solid #000; border-bottom: 1px solid #000; padding: 5px; Как сделать рамку длиннее или наоборот?

Есть рамка вокруг текста

border-top: 1px solid #000; 
border-bottom: 1px solid #000; 
padding: 5px;

Как сделать рамку длиннее или наоборот?

alt text

Nicolas Chabanovsky's user avatar

задан 21 мар 2012 в 14:34

koko's user avatar

1

Не совсем понятно, что именно вам нужно.

  • border-top: 1px solid #000; — верхняя часть рамки толщиной в 1px цвета #000
  • border-bottom: 1px solid #000; — нижняя часть рамки 1px цвета #000
  • padding: 5px; — внутренний отступ (отступ от текста внутри рамки до самой рамки) 5px

Длина же задается параметром width (высота — height). Например:

width 100px;
border-top: 1px solid #000;
border-bottom: 1px solid #000;
padding: 5px;

Возможно, вам поможет эта статья или эта.

Regent's user avatar

Regent

19k6 золотых знаков28 серебряных знаков43 бронзовых знака

ответ дан 21 мар 2012 в 14:56

sonniy's user avatar

sonniysonniy

1,0398 серебряных знаков22 бронзовых знака

1

ответ дан 21 мар 2012 в 14:39

Alex Kapustin's user avatar

Alex KapustinAlex Kapustin

11.6k18 серебряных знаков22 бронзовых знака

С помощью border такого не сделаешь, она либо на всю длину либо никак. Поробуйте сделать так:

div{position:relative;}
div:before{
    position:absolute;
    top:0;
    left:0;
    width:50%;
    border-top:1px solid #000;
    content:"";
}

ответ дан 17 окт 2016 в 8:52

bad4iz's user avatar

bad4izbad4iz

1,25211 серебряных знаков21 бронзовый знак

Попробуйте так

border: 1px solid #000;
padding: 0 60px 0 0;

Nicolas Chabanovsky's user avatar

ответ дан 21 мар 2012 в 14:41

span {
  border: 1px solid red;
}

span.long {
  padding: 0 2em;
}

span.long-2 {
  padding: 0 2em;
  margin: 0 -2em;
}
<p>Как сделать <span>рамку</span> длиннее?</p>
<p>Как сделать <span class="long">рамку</span> длиннее?</p>
<p>Как сделать только <span class="long-2">рамку</span> длиннее?</p>

VenZell's user avatar

VenZell

19.8k5 золотых знаков43 серебряных знака61 бронзовый знак

ответ дан 17 окт 2016 в 10:05

Qwertiy's user avatar

QwertiyQwertiy

119k24 золотых знака117 серебряных знаков285 бронзовых знаков

Интересно а 10 лет назад были псевдо элементы ::before; ::after?
Можно было было бы так:

.parent-element {
    display: flex;
    width: 1200px;
    height: 500px;
    &::after {
        content: '';
        width: 800px;
        margin: 0 auto;
        height: 1px;
        border: 0.5px solid black;
    }
}

ответ дан 26 авг 2022 в 12:44

Матвей Бондаренко's user avatar

Summary

CSS-свойство border-width определяет ширину рамки элемента. Но обычно её задают не отдельно, а в составе свойства border.

Начальное значение как и у каждого из подсвойств этого свойства:

  • border-top-width (en-US): medium
  • border-right-width (en-US): medium
  • border-bottom-width (en-US): medium
  • border-left-width (en-US): medium
Применяется к все элементы. Это также применяется к ::first-letter.
Наследуется нет
Обработка значения как и у каждого из подсвойств этого свойства:

  • border-bottom-width (en-US): абсолютная длина или 0, если border-bottom-style (en-US)none или hidden
  • border-left-width (en-US): абсолютная длина или 0, если border-left-style (en-US)none или hidden
  • border-right-width (en-US): абсолютная длина или 0, если border-right-style (en-US)none или hidden
  • border-top-width (en-US): абсолютная длина или 0, если border-top-style (en-US)none или hidden
Animation type как и у каждого из подсвойств этого свойства:

  • border-bottom-width (en-US): длина
  • border-left-width (en-US): длина
  • border-right-width (en-US): длина
  • border-top-width (en-US): длина

Синтаксис

Общий синтаксис (en-US):

border-width = 
<line-width>{1,4} (en-US)

<line-width> =
<length [0,∞]> | (en-US)
thin | (en-US)
medium | (en-US)
thick

border-width: ширина                  /* Одно значение */
border-width: вертикальная горизонтальная    /* Два значения */
border-width: верх горизонтальная основание    /* Три значения */
border-width: верх право основание лево  /* Четыре значения */

border-width: inherit /* Родительское значение */

Values

  • <br-width>
    • : Is either a non-negative explicit <length> value or a keyword denoting the thickness of the bottom border. The keyword must be one of the following values: thin A thin border
      medium A medium border
      thick A thick border The specification doesn’t precisely define the thickness of each of the keywords, which is therefore implementation specific. Nevertheless, it requests that the thickness does follow the thin ≤ medium ≤ thick inequality and that the values are constant on a single document.
  • inherit
    • : Is a keyword indicating that all four values are inherited from their parent’s element calculated value.

Examples

A mix of values and lengths

HTML

<p id="sval">
    one value: 6px wide border on all 4 sides</p>
<p id="bival">
    two different values: 2px wide top and bottom border, 10px wide right and left border</p>
<p id="treval">
    three different values: 0.3em top, 9px bottom, and zero width right and left</p>
<p id="fourval">
    four different values: "thin" top, "medium" right, "thick" bottom, and 1em right</p>

CSS

#sval {
    border: ridge #ccc;
    border-width: 6px;
}
#bival {
    border: solid red;
    border-width: 2px 10px;
}
#treval {
    border: dotted orange;
    border-width: 0.3em 0 9px;
}
#fourval {
    border: solid lightgreen;
    border-width: thin medium thick 1em;
}
p {
    width: auto;
    margin: 0.25em;
    padding: 0.25em;
}

Result

Specifications

Specification Status Comment
CSS Backgrounds and Borders Module Level 3
Определение ‘border-width’ в этой спецификации.
Кандидат в рекомендации No direct change, the <length> CSS data type extension has an effect on this property.
CSS Level 2 (Revision 1)
Определение ‘border-width’ в этой спецификации.
Рекомендация Added the constraint that values’ meaning must be constant inside a document.
CSS Level 1
Определение ‘border-width’ в этой спецификации.
Рекомендация

Browser compatibility

BCD tables only load in the browser

See also

В этой статье изучим CSS-свойства для стилизации границ элемента: border, border-width, border-style, border-color, border-radius, border-image, border-image-source, border-image-slice, border-image-width, border-image-outset и border-image-repeat.

CSS-свойство border предназначено для управления оформлением границ элемента. Границы располагаются перед фоном элемента.

border – это универсальное свойство для стилизации границ (рамки) вокруг элемента. Оно позволяет установить сразу три характеристики: толщину границ (border-width), стиль линий (border-style) и цвет (border-color).

Например:

Создание сплошной границы вокруг элемента

.card {
  border:
    3px       /* width */
    solid     /* style */
    magenta;  /* color */
}

border состоит из трёх других свойств (в скобках приведены значения каждого из них, которые они имеют по умолчанию):

  • border-width (medium);
  • border-style (none);
  • border-color (currentcolor).

Свойство border устанавливает стили сразу для всех четырёх границ. В отличие от него border-width, border-style и border-color могут принимать до 4 значений, и тем самым стилизовать каждую из сторон по-отдельности.

Стилизация каждой границы по-отдельности посредством border-width, border-style и border-color

.card {
  border-width: 5px 5px 5px 5px;
  border-style: solid dashed solid dashed;
  border-color: #9c27b0 #f3e5f5 #9c27b0 #f3e5f5;
}

При установке меньшего количества значений:

.card {
  border-width: 5px 10px 20px; /* top - 5px, left и right - 10px, bottom - 20px */
  border-width: 5px 10px; /* top и bottom - 5px, left и right - 10px */
  border-width: 5px; /* top, bottom, left и right - 5px */
}

border-width – толщина границы

CSS-свойство border-width определяет толщину границы. По умолчанию данное свойство имеет значение medium, что эквивалентно 3px.

Задавать значение можно с помощью ключевых слов: thin (эквивалентно 1px), medium (3px) и thick (5px), а также используя различные единицы измерения: px, em, rem, vh, vw.

Задание толщины границы с помощью border-width

.thin {
  border-width: thin;
}
.medium {
  border-width: medium;
}
.thick {
  border-width: thick;
}

border-style – тип линии

CSS-свойство border-style предназначено для установки стилей границам.

Значения:

  • solid – сплошная непрерывная линия;
  • none (по умолчанию) – без отображения границы;
  • hidden – то же самое, что none, за исключением отображения границ у ячеек таблицы с border-collapse: collapse;
  • dashed – штриховая линия;
  • dotted – линия из точек;
  • double – двойная линия;
  • groove – линия со вдавленным эффектом;
  • ridge – линия с выпуклым эффектом;
  • inset – добавляет эффект к границе таким образом, чтобы весь блок выглядел вдавленным;
  • outset – добавляет эффект к границе таким образом, чтобы весь блок выглядел выпуклым;

Задание типа линиям границы с помощью CSS-свойства border-style

.solid {
  border-style: solid;
}
.dotted {
  border-style: dotted;
}
.dashed {
  border-style: dashed;
}
.double {
  border-style: double;
}
.groove {
  border-style: groove;
}
.ridge {
  border-style: ridge;
}
.inset {
  border-style: inset;
}
.outset {
  border-style: outset;
}

Отличие между border-style: none и border-style: hidden:

Отличие между border-style: none и border-style: hidden

<style>
  td {
    border: thick solid #4caf50;
  }
  .hidden {
    border-style: hidden;
  }
  .none {
    border-style: none;
  }
</style>

<!-- border-collapse: collapse -->
<table style="border-collapse: collapse">
  <tr>
    <td class="hidden">hidden</td>
    <td>solid</td>
  </tr>
</table>

<!-- border-collapse: separate -->
<table>
  <tr>
    <td class="none">none</td>
    <td>solid</td>
  </tr>
</table>

border-color – цвет линии

CSS-свойство border-color используется для установки цвета границам элемента. По умолчанию оно имеет значение currentcolor, т.е. наследует цвет элемента.

Задать определённый цвет границам можно разными способами, а именно с помощью:

  • названия цвета, например: red, green и т.д.;
  • шестнадцатеричного кода, например: #ff0000, #00ff00 и т.д.;
  • rgb(), rgba(), hsl() или hsla();
  • transparent (прозрачный);

Если указать одно значение, то оно будет применено сразу к 4 границам (верхней, правой, нижней и левой).

Использование CSS-свойства border-color для установки цвета границам элемента

.danger {
  border-color: #f44336;
}
.primary {
  border-color: #2196f3;
}
.success {
  border-color: #4caf50;
}

Но можно установить и отдельно для каждой, для этого значения необходимо перечислить через пробел:

Использование CSS-свойства border-color для установки каждой границы элемента отдельного цвета

.box {
  border-color: #f44336 #2196f3 #4caf50 #ff9800;
}

Свойства для стилизации границ по-отдельности

В CSS имеются свойства, которые позволяют задать стиль определённой границы (top – верхней, right – правой, bottom – нижней и left – левой): border-top, border-right, border-bottom и border-left.

Кроме этого также доступны CSS-свойства для задания отдельных характеристик границ:

  • для толщины: border-top-width, border-right-width, border-bottom-width и border-left-width;
  • для типа линии: border-top-style, border-right-style, border-bottom-style и border-left-style;
  • для цвета: border-top-color, border-right-color, border-bottom-color и border-left-color.

border-radius – закругление углов

CSS-свойство border-radius позволяет скруглить углы границ элементов.

Скругление углов с помощью CSS-свойства border-radius

border-radius работает даже если у элемента нет границ, т.к. его действие распространяется и на фон.

Скругление углов у элемента, у которого нет границ

В основном border-radius используется с одним значением.

Например:

.box {
  border-radius: 20px;
}

Когда вы используете только одно значение, все углы элемента скругляются на это значение.

Кроме указания значений, с помощью единиц измерения для задания фиксированной длины (например: px, rem, em и т.д.), вы также можете использовать проценты.

В основном это используется для создания круга путем установки border-radius, равным 50%.

Скругление углов у элемента, у которого нет границ

.circle {
  border-radius: 50%;
}

Значение, заданное в процентах, вычисляется в зависимости от ширины и высоты элемента. Поэтому, когда вы используете его для прямоугольника, углы у вас будут не симметричными.

Пример, показывающий разницу между border-radius: 40px и border-radius: 40% применительно к прямоугольнику:

Скругление углов у элемента, у которого нет границ

.rect-1 {
  width: 150px;
  height: 100px;
  border: thick solid #689f38;
  border-radius: 40%;
}
.rect-2 {
  width: 150px;
  height: 100px;
  border: thick solid #689f38;
  border-radius: 40px;
}

border-radius позволяет установить радиус скругления отдельно для каждого угла. Для этого необходимо перечислить значения через пробел (начиная с верхнего левого угла и далее двигаясь по часовой стрелке):

Кроме этого, скруглить отдельно каждый угол можно с помощью свойств border-top-left-radius, border-top-right-radius, border-bottom-right-radius и border-bottom-left-radius.

С двумя значениями:

.rect {
  border-radius: 10px 20px;
}

С тремя значениями:

.rect {
  border-radius: 10px 20px 30px;
}

Кроме этого, border-radius позволяет создавать ассиметрично скруглённые углы. Осуществляется это с помощью косой черты.

.rect {
  border-radius: 10px 20px 30px 40px / 20px 40px 60px 80px;
}

Перед косой черты указываются значения, отвечающие за горизонтальные расстояния, а после — вертикальные.

border-image – изображение в качестве рамки

border-image – это CSS-свойство, которое позволяет установить в качестве границ элемента изображение или CSS градиент.

border-image можно применить к любому элементу, за исключением тегов, определяющих содержимое таблицы (tr, th, td) когда в качестве значения border-collapse установлено collapse.

Использование border-image для установки в качестве границ элемента изображение

<style>
.square {
  border: 30px solid transparent;
  border-image: url('/examples/images/border.png') 16.66666667% / 1 / 0 stretch;
}
</style>

<div class="square">square</div>

border-image является краткой записью следующих пяти свойств:

  • border-image-source (none);
  • border-image-slice (100%);
  • border-image-width (1);
  • border-image-outset (0);
  • border-image-repeat (stretch).

Таким образом, пример приведённый выше с помощью специальных CSS-свойств можно записать следующим образом:

.square {
  border: 30px solid transparent;
  /* border-image: url('/examples/images/border.png') 16.66666667% / 1 / 0 stretch; */
  border-image-source: url('/examples/images/border.png');
  border-image-slice: 16.66666667%;
  border-image-width: 1;
  border-image-outset: 0;
  border-image-repeat: stretch;
}

Пример создания градиентной границы с помощью border-image:

Использование border-image для создания градиентной границы

<style>
.square {
  border: 30px solid transparent;
  border-image: linear-gradient(90deg, #00C9FF 0%, #92FE9D 100%) 20% / 1 / 0 stretch;
  /*  border-image-source: linear-gradient(90deg, #00C9FF 0%, #92FE9D 100%);
    border-image-slice: 20%;
    border-image-width: 1;
    border-image-outset: 0;
    border-image-repeat: stretch; */
}
</style>

<div class="square">square</div>

border-image-source

border-image-source – задаёт изображение (посредством URL-адреса, URI-данных или встроенного SVG) или CSS градиент, который необходимо использовать для отрисовки границы. Значение по умолчанию: none.

border-image-slice

border-image-slice – сообщает браузеру, как необходимо «разрезать» изображение и тем самым определить области для отрисовки границ.

В процессе нарезки изображения образуется 9 областей: четыре угла, четыре стороны и центр.

Области, которые образуется в результате нарезки изображения с помощью border-image-slice

  • Области 1 – 4 используется всего один раз для отрисовки соответствующих углов границ элемента;
  • Области 5 – 8 применяются для отрисовки соответствующих сторон границ, расположенных между углами. В зависимости от значения свойства border-image-repeat область исходного изображения может растягиваться, повторяться, масштабироваться или иным образом изменяться, чтобы соответствовать размерам элемента;
  • Область 9 является центральной и по умолчанию отбрасывается.

Для использования области 9 в качестве фонового изображения элемента, необходимо добавить в любое место значения border-image-slice ключевое слово fill. При этом это фоновое изображение будет располагаться поверх фактического background.

Указывать смещения от краёв для нарезки изображения можно с помощью числа, так и процентов. При указании числа расстояние будет определяться количеством пикселей для растровых изображений или координатой для векторных. При указании процентов – в процентах от размера исходного изображения.

В border-image-slice можно установить от одного до четырёх значений:

  • при указании одного значения, все четыре среза создаются на одинаковом расстоянии от соответствующих сторон;
  • если два значения, то первая величина определяет срезы сверху и снизу, а вторая — слева и справа;
  • когда указаны три значения, первое создает срез сверху, второе – слева и справа, а третье – снизу;
  • при задании четырех значений, они определяют срезы соответственно сверху, справа, снизу и слева (т.е. по часовой стрелке).

При указании одного значения:

Использование border-image-slice для того, чтобы определить как необходимо разрезать изображение и тем самым определить области для отрисовки границ

.square {
  border: 30px solid transparent;
  border-image-source: url('/examples/images/border.png');
  border-image-slice: 16.67%;
}

При указании двух значений:

Использование в border-image-slice двух значений для нарезки изображения и определения областей для отрисовки границ
Изображение границ элемента при использовании в border-image-slice двух значений

.square {
  border: 30px solid transparent;
  border-image-source: url('/examples/images/border-01.png');
  border-image-slice: 30% 10%;
}

Свойства border-image-repeat, border-image-width и border-image-outset позволяют задать каким образом эти области должны использоваться для формирования окончательной отрисовки границы.

border-image-width

Свойство border-image-width устанавливает толщину границы для изображения. По умолчанию имеет значение 1 (это означает, что она равна border-width).

Если значение этого свойства задать больше, чем border-width, то тогда граница будет накладываться под внутренний контент элемента.

В border-image-width можно задать от одного до четырех значений:

  • при указании одного значения, все четыре границы будут иметь одну эту толщину;
  • при задании двух значений, первая величина будет определять толщину верхней и нижней границы, а вторая – левой и правой;
  • когда указаны три значения: первая величина будет задавать толщину верхней границы, вторая – левой и правой, а третья – нижней;
  • при задании четырёх значений: первая величина – за толщину верхней границы, вторая – правой, третья – нижней и четвёртая – левой (т.е. по часовой стрелке, начиная с верхней).

Задавать значение можно с помощью:

  • числа – в этом случае, толщина границы будет вычисляться как значение border-width умноженное на это число;
  • px и других единиц – в соответствии с указанными единицами;
  • процентов (%) – толщина границы будет вычисляться в процентах относительно размера блока;
  • ключевого слова auto – толщина границы берётся из border-image-slice (если подходящего размера нет, то используется то, что задано в border-width).

Пример установки толщины границы для изображения в раза превышающей border-width:

Использование border-image-width для установки толщины границы для изображения

<style>
.square {
  border: 30px solid transparent;
  border-image-source: url('/examples/images/border-01.png');
  border-image-slice: 30% 10%;
  border-image-width: 2; /* толщина границы */
}
</style>

<div class="square">square</div>

border-image-outset

СSS-свойство border-image-outset задает расстояние, на которое нужно сместить границы наружу относительно их начального положения.

В border-image-outset можно задать от одного до четырёх значений:

  • при задании одного значения, оно применяется ко всем четырем сторонам;
  • если указаны два значения, то первое применяется к верхней и нижней границам, а второе — к левой и правой;
  • указании трёх значений, первое применяется к верхней границе, второе — к левой и правой, а третье — к нижней;
  • указаны четыре значения, они применяются к верхней, правой, нижней и левой границам в указанном порядке (по часовой стрелке).

Задавать значения можно с помощью:

  • px, em, rem и других CSS единиц — в этом случае смещение будет определяться в соответствии с этим значением;
  • числа – в этом случае расстояние будет равно этому число умноженное на значение border-width.

Пример, в котором сместим границы на величину, равную 1 * border-width:

Смещение границ элемента на величину, равную 1 * border-width

<style>
.square {
  border: 30px solid transparent;
  border-image-source: url('/examples/images/border-01.png');
  border-image-slice: 30% 10%;
  border-image-width: 2;
  /* смещение всех 4 границ на величину равную величине border-width */
  border-image-outset: 1;
}
</style>

<div class="square">square</div>

border-image-repeat

CSS свойство border-image-repeat определяет как должны быть заполнены части границ, расположенные между углами в соответствии с областями 5 – 8 исходного изображения.

border-image-repeat может быть установлено с использованием одного или двух значений.

Когда указано одно значение, то оно применяет одно и то же поведение ко всем четырем сторонам. При задании двух значений, первое применяется к верхней и нижней сторонам, а второе — к левому и правому.

Значения:

  • stretch (по умолчанию) – растягивает области 5 – 8 исходного изображения для заполнения частей границ между углами;
  • repeat – повторяет области 5 – 8 исходного для заполнения промежутка между углами границ границей (если область изображения целиком не помещается, то оно обрезается);
  • round – тоже самое что repeat, за исключением того, что когда часть изображения не помещается, оно масштабируется таким образом, чтобы вписать его N раз;
  • space – тоже самое что repeat, за исключением того, что когда часть изображения не помещается, между ними добавляется пустое пространство таким образом, чтобы вписать его N раз.

Пример border-image-repeat с одним значением:

Пример border-image-repeat с одним значением

<style>
.rectangle {
  width: 400px;
  height: 300px;
  border: 30px solid transparent;
  border-image-source: url('/examples/images/border-02.png');
  border-image-slice: 16.66666667%;
  /* определяем как должны повторяться части границ между углами */
  border-image-repeat: round;
}
</style>

<div class="rectangle">rectangle</div>

Пример border-image-repeat с двумя значениями:

Пример border-image-repeat с двумя значениями

<style>
.rectangle {
  width: 400px;
  height: 300px;
  border: 30px solid transparent;
  border-image-source: url('/examples/images/border-02.png');
  border-image-slice: 16.66666667%;
  /* определяем как должны повторяться части границ между углами */
  border-image-repeat: stretch round;
}
</style>

<div class="rectangle">rectangle</div>
Internet Explorer Chrome Opera Safari Firefox Android iOS
6.0+ 8.0+ 1.0+ 3.5+ 1.0+ 1.0+ 1.0+ 1.0+

Краткая информация

Значение по умолчанию medium
Наследуется Нет
Применяется Ко всем элементам
Ссылка на спецификацию http://www.w3.org/TR/CSS21/box.html#border-width-properties

Версии CSS

CSS 1 CSS 2 CSS 2.1 CSS 3

Описание

Задает толщину границы одновременно на всех сторонах элемента или индивидуально
для каждой стороны. Способ изменения толщины зависит от числа значений.

Синтаксис

border-width: [значение | thin | medium | thick] {1,4} | inherit

Значения

Три переменные — thin (2 пиксела), medium
(4 пиксела) и thick (6 пикселов) задают толщину
границы. Для более точного значения, толщину можно указывать в пикселах или
других единицах. inherit наследует значение родителя.

Разрешается использовать одно, два, три или четыре значения,
разделяя их между собой пробелом. Эффект зависит от количества и
приведен в табл. 1.

Табл. 1. Зависимость результата от числа значений

Число значений Результат
1 Толщина границы будет установлена для всех сторон элемента.
2 Первое значение устанавливает толщину верхней и нижней границы,
второе  — левой и правой.
3 Первое значение задает толщину верхней границы, второе —
одновременно левой и правой границы, а третье — нижней границы.
4 Поочередно устанавливается толщину верхней, правой, нижней
и левой границы.

Пример

HTML5CSS2.1IECrOpSaFx

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>border-width</title>
  <style>
   p { 
    border-style: double; /* Стиль рамки вокруг параграфа */
    border-width: 3px 7px 7px 4px; /* Толщина границы */
    padding: 7px; /* Поля вокруг текста */
   }
  </style>
 </head>
 <body> 
  <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem 
  nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.</p>
 </body>
</html>

Результат данного примера показан на рис. 1.

Применение свойства border-width

Рис. 1. Применение свойства border-width

Объектная модель

[window.]document.getElementById(«elementID«).style.borderWidth

Браузеры

Браузер Internet Explorer до шестой версии включительно при толщине границы 1px отображает dotted как dashed. При толщине 2px и выше значение dotted работает корректно. Эта ошибка исправлена в IE7, но только для всех границ толщиной 1px. Если одна из границ блока имеет толщину 2px и выше, то в IE7 значение dotted превращается в dashed.

Internet Explorer до версии 7.0 включительно не поддерживает значения hidden и inherit.

Толщина границы при использовании ключевых слов thin, medium и thick в разных браузерах может несколько различаться.

I have a table TD and on the right of it I want to add a 1 pixel border, so I’ve done this:

table td {
    border-right:1px solid #000;
}

It works fine but the problem is that the border’s height takes the total TD’s height.

Is there a way to set the height of the border?

user229044's user avatar

user229044

229k40 gold badges329 silver badges336 bronze badges

asked Apr 14, 2011 at 13:32

Satch3000's user avatar

Satch3000Satch3000

46.2k86 gold badges213 silver badges345 bronze badges

I have another possibility. This is of course a «newer» technique, but for my projects works sufficient.

It only works if you need one or two borders. I’ve never done it with 4 borders… and to be honest, I don’t know the answer for that yet.

.your-item {
  position: relative;
}

.your-item:after {
  content: '';
  height: 100%; //You can change this if you want smaller/bigger borders
  width: 1px;
  
  position: absolute;
  right: 0;
  top: 0; // If you want to set a smaller height and center it, change this value
  
  background-color: #000000; // The color of your border
}

user's user avatar

user

5,0496 gold badges18 silver badges35 bronze badges

answered Sep 22, 2014 at 19:41

ReBa's user avatar

3

No, there isn’t. The border will always be as tall as the element.

You can achieve the same effect by wrapping the contents of the cell in a <span>, and applying height/border styles to that. Or by drawing a short vertical line in an 1 pixel wide PNG which is the correct height, and applying it as a background to the cell:

background:url(line.png) bottom right no-repeat;

answered Apr 14, 2011 at 13:34

user229044's user avatar

user229044user229044

229k40 gold badges329 silver badges336 bronze badges

2

Yes, you can set the line height after defining the border like this:

border-right: 1px solid;
line-height: 10px;

answered May 20, 2012 at 15:39

CairoCoder's user avatar

CairoCoderCairoCoder

3,02111 gold badges45 silver badges66 bronze badges

1

For td elements line-height will successfully allow you to resize the border-height as SPrince mentioned.

For other elements such as list items, you can control the border height with line-height and the height of the actual element with margin-top and margin-bottom.

Here is a working example of both:
http://jsfiddle.net/byronj/gLcqu6mg/

An example with list items:

li { 
    list-style: none; 
    padding: 0 10px; 
    display: inline-block;
    border-right: 1px solid #000; 
    line-height: 5px; 
    margin: 20px 0; 
}

<ul>
    <li>cats</li>
    <li>dogs</li>
    <li>birds</li>
    <li>swine!</li>
</ul>

answered Sep 5, 2014 at 14:37

Byron's user avatar

ByronByron

5433 silver badges10 bronze badges

Building on top of @ReBa’s answer above, this custom-border class is what worked for me.

Mods:

  • working with border instead of backaground-color since background-color is not consistent.
  • Setting height & top of the properties of :after in such a way that the total comes up to 100% where bottom‘s value is implicit.
ul {
  list-style-type: none;
  display: flex;
  flex-direction: row;
}

li {
  padding: 10px;
}

.custom-border {
  position: relative;
}

.custom-border:after {
  content: " ";
  position: absolute;
  border-left: 1px #6c757d solid;
  top: 35%;
  right: 0;
  height: 30%;
  margin-top: auto;
  margin-bottom: auto;
}
<ul>
  <li class="custom-border">
    Hello
  </li>
  <li class="custom-border">
    World
  </li>
  <li class="custom-border">
    Foo
  </li>
  <li class="custom-border">Bar</li>
  <li class="custom-border">Baz</li>
</ul>

Good Luck…

answered Feb 25, 2018 at 4:53

Aakash's user avatar

AakashAakash

19.9k7 gold badges98 silver badges77 bronze badges

0

No, you cannot set the border height.

Aakash's user avatar

Aakash

19.9k7 gold badges98 silver badges77 bronze badges

answered Apr 14, 2011 at 13:35

Headshota's user avatar

HeadshotaHeadshota

20.7k11 gold badges59 silver badges81 bronze badges

This will add a centered border to the left of the cell that is 80% the height of the cell. You can reference the full border-image documentation here.

table td {
    border-image: linear-gradient(transparent 10%, blue 10% 90%, transparent 90%) 0 0 0 1 / 3px;
}

answered Feb 25, 2019 at 20:48

cambthompson's user avatar

2

Just like everyone else said, you can’t control border height.
But there are workarounds, here’s what I do:

table {
  position: relative;
}

table::before { /* ::after works too */
  content: "";
  position: absolute;
  right: 0; /* Change direction for a different side*/
  z-index: 100; 
  width: 3px; /* Thickness */
  height: 10px;
  background: #555; /* Color */
}

You can set height to inherit for the height of the table or calc(inherit - 2px) for a 2px smaller border.
Remember, inherit has no effect when the table height isn’t set.

Use height: 50% for half a border.

Demo

answered Apr 13, 2019 at 13:57

khaki's user avatar

khakikhaki

3353 silver badges10 bronze badges

table {
 border-spacing: 10px 0px;
}

.rightborder {
border-right: 1px solid #fff;
}

Then with your code you can:

<td class="rightborder">whatever</td>

Hope that helps!

answered Apr 14, 2013 at 7:28

Roy's user avatar

Currently, no, not without resorting to trickery. borders on elements are supposed to run the entire length of whatever side of the element box they apply to.

answered Apr 14, 2011 at 13:35

cdeszaq's user avatar

cdeszaqcdeszaq

30.5k25 gold badges115 silver badges173 bronze badges

.main-box{  
    border: solid 10px;
}
.sub-box{
    border-right: 1px solid;
}

//draws a line on right side of the box.
later add a margin-top and margin-bottom.
i.e.,

.sub-box{
    border-right: 1px solid;
    margin-top: 10px;;
    margin-bottom: 10px;
}

This might help in drawing a line on the right-side of the box with a gap on top and bottom.

answered Oct 12, 2015 at 7:08

manjunath vb's user avatar

table td {
    border-right:1px solid #000;
    height: 100%;
}

Just you add height under the border property.

answered Sep 9, 2016 at 8:54

Karthiga's user avatar

KarthigaKarthiga

8492 gold badges17 silver badges33 bronze badges

1

I have a table TD and on the right of it I want to add a 1 pixel border, so I’ve done this:

table td {
    border-right:1px solid #000;
}

It works fine but the problem is that the border’s height takes the total TD’s height.

Is there a way to set the height of the border?

user229044's user avatar

user229044

229k40 gold badges329 silver badges336 bronze badges

asked Apr 14, 2011 at 13:32

Satch3000's user avatar

Satch3000Satch3000

46.2k86 gold badges213 silver badges345 bronze badges

I have another possibility. This is of course a «newer» technique, but for my projects works sufficient.

It only works if you need one or two borders. I’ve never done it with 4 borders… and to be honest, I don’t know the answer for that yet.

.your-item {
  position: relative;
}

.your-item:after {
  content: '';
  height: 100%; //You can change this if you want smaller/bigger borders
  width: 1px;
  
  position: absolute;
  right: 0;
  top: 0; // If you want to set a smaller height and center it, change this value
  
  background-color: #000000; // The color of your border
}

user's user avatar

user

5,0496 gold badges18 silver badges35 bronze badges

answered Sep 22, 2014 at 19:41

ReBa's user avatar

3

No, there isn’t. The border will always be as tall as the element.

You can achieve the same effect by wrapping the contents of the cell in a <span>, and applying height/border styles to that. Or by drawing a short vertical line in an 1 pixel wide PNG which is the correct height, and applying it as a background to the cell:

background:url(line.png) bottom right no-repeat;

answered Apr 14, 2011 at 13:34

user229044's user avatar

user229044user229044

229k40 gold badges329 silver badges336 bronze badges

2

Yes, you can set the line height after defining the border like this:

border-right: 1px solid;
line-height: 10px;

answered May 20, 2012 at 15:39

CairoCoder's user avatar

CairoCoderCairoCoder

3,02111 gold badges45 silver badges66 bronze badges

1

For td elements line-height will successfully allow you to resize the border-height as SPrince mentioned.

For other elements such as list items, you can control the border height with line-height and the height of the actual element with margin-top and margin-bottom.

Here is a working example of both:
http://jsfiddle.net/byronj/gLcqu6mg/

An example with list items:

li { 
    list-style: none; 
    padding: 0 10px; 
    display: inline-block;
    border-right: 1px solid #000; 
    line-height: 5px; 
    margin: 20px 0; 
}

<ul>
    <li>cats</li>
    <li>dogs</li>
    <li>birds</li>
    <li>swine!</li>
</ul>

answered Sep 5, 2014 at 14:37

Byron's user avatar

ByronByron

5433 silver badges10 bronze badges

Building on top of @ReBa’s answer above, this custom-border class is what worked for me.

Mods:

  • working with border instead of backaground-color since background-color is not consistent.
  • Setting height & top of the properties of :after in such a way that the total comes up to 100% where bottom‘s value is implicit.
ul {
  list-style-type: none;
  display: flex;
  flex-direction: row;
}

li {
  padding: 10px;
}

.custom-border {
  position: relative;
}

.custom-border:after {
  content: " ";
  position: absolute;
  border-left: 1px #6c757d solid;
  top: 35%;
  right: 0;
  height: 30%;
  margin-top: auto;
  margin-bottom: auto;
}
<ul>
  <li class="custom-border">
    Hello
  </li>
  <li class="custom-border">
    World
  </li>
  <li class="custom-border">
    Foo
  </li>
  <li class="custom-border">Bar</li>
  <li class="custom-border">Baz</li>
</ul>

Good Luck…

answered Feb 25, 2018 at 4:53

Aakash's user avatar

AakashAakash

19.9k7 gold badges98 silver badges77 bronze badges

0

No, you cannot set the border height.

Aakash's user avatar

Aakash

19.9k7 gold badges98 silver badges77 bronze badges

answered Apr 14, 2011 at 13:35

Headshota's user avatar

HeadshotaHeadshota

20.7k11 gold badges59 silver badges81 bronze badges

This will add a centered border to the left of the cell that is 80% the height of the cell. You can reference the full border-image documentation here.

table td {
    border-image: linear-gradient(transparent 10%, blue 10% 90%, transparent 90%) 0 0 0 1 / 3px;
}

answered Feb 25, 2019 at 20:48

cambthompson's user avatar

2

Just like everyone else said, you can’t control border height.
But there are workarounds, here’s what I do:

table {
  position: relative;
}

table::before { /* ::after works too */
  content: "";
  position: absolute;
  right: 0; /* Change direction for a different side*/
  z-index: 100; 
  width: 3px; /* Thickness */
  height: 10px;
  background: #555; /* Color */
}

You can set height to inherit for the height of the table or calc(inherit - 2px) for a 2px smaller border.
Remember, inherit has no effect when the table height isn’t set.

Use height: 50% for half a border.

Demo

answered Apr 13, 2019 at 13:57

khaki's user avatar

khakikhaki

3353 silver badges10 bronze badges

table {
 border-spacing: 10px 0px;
}

.rightborder {
border-right: 1px solid #fff;
}

Then with your code you can:

<td class="rightborder">whatever</td>

Hope that helps!

answered Apr 14, 2013 at 7:28

Roy's user avatar

Currently, no, not without resorting to trickery. borders on elements are supposed to run the entire length of whatever side of the element box they apply to.

answered Apr 14, 2011 at 13:35

cdeszaq's user avatar

cdeszaqcdeszaq

30.5k25 gold badges115 silver badges173 bronze badges

.main-box{  
    border: solid 10px;
}
.sub-box{
    border-right: 1px solid;
}

//draws a line on right side of the box.
later add a margin-top and margin-bottom.
i.e.,

.sub-box{
    border-right: 1px solid;
    margin-top: 10px;;
    margin-bottom: 10px;
}

This might help in drawing a line on the right-side of the box with a gap on top and bottom.

answered Oct 12, 2015 at 7:08

manjunath vb's user avatar

table td {
    border-right:1px solid #000;
    height: 100%;
}

Just you add height under the border property.

answered Sep 9, 2016 at 8:54

Karthiga's user avatar

KarthigaKarthiga

8492 gold badges17 silver badges33 bronze badges

1

Sometimes, you may have difficulty when you need to make the border shorter than its parent element. To overcome this, use CSS properties and HTML elements. We’ll need to use border properties and some elements such as <span>, <div>, etc., or pseudo-elements.

The solution is quite easy. Just follow the steps below.

  • Create two <div> elements.
<div id="box">
  <div id="borderLeft"></div>
</div>
  • Style the <div> with an id «box» by using the height, width, and background properties. Set the position to “relative” and specify the border-bottom property.
  • Style the <div> with an id «borderLeft» by specifying its border-left property. Set the position to “absolute” and add the top and bottom properties.
#box {
  height: 70px;
  width: 70px;
  position: relative;
  border-bottom: 2px solid #0004ff;
  background: #cccaca;
}

#borderLeft {
  border-left: 2px solid #0004ff;
  position: absolute;
  top: 50%;
  bottom: 0;
}

Let’s see the result of our code.

Example of limiting the left border:

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      #box {
        height: 70px;
        width: 70px;
        position: relative;
        border-bottom: 2px solid #0004ff;
        background: #cccaca;
      }
      #borderLeft {
        border-left: 2px solid #0004ff;
        position: absolute;
        top: 50%;
        bottom: 0;
      }
    </style>
  </head>
  <body>
    <div id="box">
      <div id="borderLeft"></div>
    </div>
  </body>
</html>

Result

Next, we’re going to demonstrate another example, where we limit the border length of four different elements. For that, we use four <div> elements and the :before pseudo-element. To limit the length of the top, bottom, right, and left borders, we use the border-top, border-bottom, border-right, and border-left properties, respectively.

Example of limiting the borders using pseudo-elements:

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      h1 {
        text-align: center;
        margin: 50px;
        color: #000;
      }
      div {
        width: 150px;
        height: 60px;
        position: relative;
        z-index: 1;
        background-color: #ffff3b;
        margin: 20px auto;
        padding: 20px;
        color: #726E97;
      }
      div.top:before {
        content: "";
        position: absolute;
        left: 0;
        top: 0;
        height: 5px;
        width: 50%;
        border-top: 3px solid #000;
      }
      div.bottom:before {
        content: "";
        position: absolute;
        left: 25px;
        bottom: 0;
        height: 15px;
        width: 70%;
        border-bottom: 3px solid #000;
      }
      div.left:before {
        content: "";
        position: absolute;
        left: 0;
        top: 0;
        height: 50px;
        width: 50%;
        border-left: 3px solid #000;
      }
      div.right:before {
        content: "";
        position: absolute;
        right: 0;
        top: 0;
        height: 50px;
        width: 50%;
        border-right: 3px solid #000;
      }
    </style>
  </head>
  <body>
    <h1>Example of limiting border length</h1>
    <div class="top"></div>
    <div class="bottom"></div>
    <div class="left"></div>
    <div class="right"></div>
  </body>
</html>

В языке CSS за оформление рамок или обводок отвечает свойство border, а точнее, четыре свойства, названия которых начинаются с этого слова. Они позволяют вебмастеру управлять цветом, внешним видом, толщиной и формой углов рамки, которая обрамляет содержимое какого-либо блока.

Содержание

  1. Синтаксис и значения border
  2. border-style
  3. border-width
  4. border-color
  5. border-radius
  6. Более детальные свойства

Свойств, отвечающих за оформление границы или рамки, – четыре. Вид определяет свойство border-style, ширину можно задать, используя border-width, с помощью border-color назначается цвет, border-radius закругляет углы. Также есть общее свойство border, в котором можно объединить все значения.

Его синтаксис:

border:  <border-width> || <border-style> || <color>

Например, создадим элемент и применим к нему свойства:

.element {
  width:100px;
  height:100px;
  border:2px solid red;
}

Значения свойства border здесь указывают, что у элемента должна быть рамка толщиной 2px, сплошная (solid), и красного цвета.

See the Pen
border simple by Андрей (@adlibi)
on CodePen.

border-style

С помощью border-style можно сделать рамку в виде пунктирной линии, последовательности точек, придать ей объем, а всему блоку эффект выпуклости или вдавленности. Значение по умолчанию – none (отсутствие рамок).

Ниже перечислены значения, которые можно задать свойству, и эффекты, которые при этом появляются.

solid
сплошная линия
none
по умолчанию – линии нет
double
двойная линия
dashed
пунктир
dotted
набор точек
groove
придание линии вогнутости
ridge
придание линии выпуклости
inset
эффект вдавленности блока
outset
эффект выпуклости блока

На примере ниже показаны все стили рамок, кроме solid, который продемонстрирован выше.

See the Pen
border style by Андрей (@adlibi)
on CodePen.

Примечание: при использовании стиля dashed соотношение длины штриха и ширины пробела зависит от браузера, в котором открыт сайт.

border-width

Толщина линии, образующей рамку, может задаваться как словом, так и количеством пикселей.

Возможные значения:

<length>
Числовая величина, измеряемая в px, em, rem, vh и vw.
thin
Эквивалент 1px
medium
Эквивалент 3px
thick
Эквивалент 5px

border-color

Цвет рамки можно задавать несколькими способами:

  • словом – названием предустановленного цвета на английском языке – red, green, pink и т.д.;
  • с помощью шестнадцатеричного числа, например #ff0099;
  • с помощью RGB-модели – rgb (интенсивность каждого из цветов выражается числом от 0 до 255 или в процентах; значения разделяются запятыми).
  • Посредством RGBA-модели, при которой четвертый параметр цвета – степень его прозрачности.

Цвет по умолчанию – black (черный). Установка значения transparent (border-color: transparent) означает полностью прозрачную рамку.

Примеры записи цвета:

border-color: red;
border-color: #aaaabb;
border-color: rgb(88, 255, 250);

border-radius

С помощью свойства можно уходить от квадратных углов, вводя величину радиуса скругления.

На примере ниже 2 квадрата. Один залит синим цветом, у вокруг второго нарисована рамка. Для элементов задано скругление:

border-radius: 10px;

See the Pen
border radius by Андрей (@adlibi)
on CodePen.

Для каждого угла можно задать свой радиус скругления.

Так, для квадрата на примере ниже, задано такое свойство:

border-radius: 10px 20px 30px 20px;

Значения устанавливаются для углов по часовой стрелке.

See the Pen
border radius 4 by Андрей (@adlibi)
on CodePen.

Количество значений может быть от 1 до 4. В таблице приведены результаты введения разного количества значений.

Количество значений свойства Результат
1 Все стороны выполнены в одном стиле
2 Стиль устанавливается отдельно для горизонтальных (1-е значение) и вертикальных границ (2-е значение)
3 1-е значение – верх лево;
2-е – верх право и низ лево;
3-е – низ право.
4 Все границы выполнены в разных стилях. Соответствие значениям (с 1-го по 4-е) – по часовой стрелке, начиная с верхней.

Интересно, что для каждого угла можно задать два параметра скругления через знак слэша. При этом первая величина – горизонтальный радиус, вторая – вертикальный. Показать это лучше на примере. Вот что получится, если для фигуры задать свойство:

border-radius: 10px/30px; 

See the Pen
border radius 2 by Андрей (@adlibi)
on CodePen.

Необходимо иметь в виду, что при задании свойства border-radius форма блока остается прежней, то есть прямоугольной, и при больших значениях радиусов, запланированная рамка вокруг текста может попасть на сам текст.

Радиуса скругления можно задавать в процентах. Это удобно, например, если вы хотите нарисовать круг, то просто задайте для квадрата border-radius: 50%;.

See the Pen
border radius 50percent by Андрей (@adlibi)
on CodePen.

Более детальные свойства

Существует и другой способ сделать обводку или придать ей определенный стиль для конкретной стороны рамки или угла. Для этого предусмотрены специальные расширения свойств, в названия которых входит обозначение стороны границы. Верхняя обозначается как top, нижняя – bottom, левая – left и правая – right.

Например:

  • border-bottom-width
  • border-left-color
  • border-right-style
  • border-top-left-radius.

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Как изменить длину border css
  • Как изменить длину border bottom
  • Как изменить длинную ссылку на короткую
  • Как изменить длинное название файла
  • Как изменить дисциплину swtor

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии