Этот трюк работает как для горизонтальных, так и для вертикальных границ:
/*Horizontal*/
background-image: linear-gradient(to right, black 33%, rgba(255,255,255,0) 0%);
background-position: bottom;
background-size: 3px 1px;
background-repeat: repeat-x;
/*Vertical*/
background-image: linear-gradient(black 33%, rgba(255,255,255,0) 0%);
background-position: right;
background-size: 1px 3px;
background-repeat: repeat-y;
Вы можете настроить размер с помощью background-size, а пропорции - с процентами линейного градиента. В этом примере у меня пунктирная линия с 1px точками и интервалом 2px. Таким образом, вы можете иметь несколько пунктирных границ, используя несколько фонов.
Попробуйте это в этом JSFiddle или посмотрите на пример фрагмента кода:
div {
padding: 10px 50px;
}
.dotted {
border-top: 1px #333 dotted;
}
.dotted-gradient {
background-image: linear-gradient(to right, #333 40%, rgba(255, 255, 255, 0) 20%);
background-position: top;
background-size: 3px 1px;
background-repeat: repeat-x;
}
.dotted-spaced {
background-image: linear-gradient(to right, #333 10%, rgba(255, 255, 255, 0) 0%);
background-position: top;
background-size: 10px 1px;
background-repeat: repeat-x;
}
.left {
float: left;
padding: 40px 10px;
background-color: #F0F0DA;
}
.left.dotted {
border-left: 1px #333 dotted;
border-top: none;
}
.left.dotted-gradient {
background-image: linear-gradient(to bottom, #333 40%, rgba(255, 255, 255, 0) 20%);
background-position: left;
background-size: 1px 3px;
background-repeat: repeat-y;
}
.left.dotted-spaced {
background-image: linear-gradient(to bottom, #333 10%, rgba(255, 255, 255, 0) 0%);
background-position: left;
background-size: 1px 10px;
background-repeat: repeat-y;
}
<div>no
<br>border</div>
<div class='dotted'>dotted
<br>border</div>
<div class='dotted-gradient'>dotted
<br>with gradient</div>
<div class='dotted-spaced'>dotted
<br>spaced</div>
<div class='left'>no
<br>border</div>
<div class='dotted left'>dotted
<br>border</div>
<div class='dotted-gradient left'>dotted
<br>with gradient</div>
<div class='dotted-spaced left'>dotted
<br>spaced</div>
Вот трюк, который я использовал в недавнем проекте, чтобы достичь почти всего, что я хочу, с горизонтальными границами. Я использую
<hr/>
каждый раз, когда мне нужна горизонтальная граница. Основной способ добавить границу к этому часу что-то вродеНо если вы хотите взять контроль над границей и, например, увеличить расстояние между точками, вы можете попробовать что-то вроде этого:
И в следующем, вы создаете свою границу (вот пример с точками)
Это также означает, что вы можете добавить тень текста к точкам, градиентам и т. Д. Все, что вы хотите ...
Ну, он отлично работает для горизонтальных границ. Если вам нужны вертикальные, вы можете указать класс для другого часа и использовать CSS3
rotation
свойство .источник
Вы не можете сделать это с чистым CSS - спецификация CSS3 даже имеет конкретную цитату по этому поводу:
Вы можете, однако, использовать или изображение границы или фоновое изображение, которое добивается цели.
источник
border: dotted
, но это можно сделать с помощью градиентов , как ответ Eagorajose показал , .При этом используется стандартная граница CSS и псевдоэлемент + overflow: hidden. В этом примере вы получите три разные 2px пунктирные границы: обычные, с интервалом в 5px, с интервалом в 10px. На самом деле 10px с видимым только 10-8 = 2px.
Применение к маленьким элементам с большими закругленными углами может сделать некоторые забавные эффекты.
источник
Итак, начиная с данного ответа и применяя тот факт, что CSS3 допускает несколько настроек - приведенный ниже код полезен для создания полного блока:
Стоит отметить, что 10px в фоновом размере дает область, которую будут покрывать штрих и пробел. 50% фонового тега показывает, насколько широкая черта на самом деле. Поэтому возможно иметь штрихи разной длины на каждой граничной стороне.
источник
Посмотрите документы MDN для доступных значений для
border-style
:Помимо этих вариантов, невозможно повлиять на стиль стандартной границы.
Если возможности там вам не по вкусу, вы можете использовать CSS3,
border-image
но учтите, что поддержка браузеров для этого все еще не очень удобна.источник
Построение 4-х краевого решения на основе ответа @ Eagorajose с сокращенным синтаксисом:
источник
Это старая, но все еще очень актуальная тема. Топовой ответ работает хорошо, но только для очень маленьких точек. Как уже отмечал Бходжна Раунияр в комментариях, для более крупных (> 2px) точек точки выглядят квадратными, а не круглыми. Я нашел эту страницу в поисках расставленных точек , а не расставленных квадратов (или даже тире, как некоторые ответы здесь используют).
Опираясь на это, я использовал
radial-gradient
. Также, используя ответ от Ukuser32 , точечные свойства можно легко повторить для всех четырех границ. Только углы не идеальны.В
radial-gradient
ожидает :Здесь я хотел получить точку диаметром 5 пикселей (радиус 2,5 пикселя), в 2 раза больше диаметра (10 пикселей) между точками, добавив до 15 пикселей.
background-size
Должны соответствовать этим.Две остановки определены так, чтобы точка была красивой и гладкой: сплошной черный для половины радиуса и затем градиент для полного радиуса.
источник
Это действительно старый вопрос, но он имеет высокий рейтинг в Google, поэтому я добавлю свой метод, который может работать в зависимости от ваших потребностей.
В моем случае я хотел получить толстую пунктирную границу с минимальным разрывом между штрихами. Я использовал генератор шаблонов CSS (например, http://www.patternify.com/ ), чтобы создать шаблон шириной 10 на 1 пиксель. 9px - сплошной штрих, 1px - белый.
В моем CSS я включил этот шаблон в качестве фонового изображения, а затем увеличил его, используя атрибут background-size. Я закончил с повторением 20px на 2px, 18px из которых было сплошной линией и 2px белым. Вы могли бы увеличить его еще больше для действительно толстой пунктирной линии.
Хорошая вещь заключается в том, что изображение закодировано как данные, у вас нет дополнительного внешнего HTTP-запроса, так что нет проблем с производительностью. Я сохранил свое изображение как переменную SASS, чтобы использовать его на своем сайте.
источник
Краткий ответ: вы не можете.
Вам придется использовать
border-image
собственность и несколько изображений.источник
Так много людей говорят: «Ты не можешь». Да, ты можешь. Это правда, что не существует правила css для контроля промежутка между штрихами, но у css есть и другие возможности. Не спешите говорить, что ничего нельзя сделать.
По сути, высота верхней границы (в данном случае 5px) - это правило, которое определяет «ширину» желоба. Конечно, вам нужно настроить цвета в соответствии с вашими потребностями. Это также небольшой пример для горизонтальной линии, используйте левую и правую, чтобы сделать вертикальную линию.
источник
Я сделал функцию JavaScript для создания точек с SVG. Вы можете настроить расстояние между точками и размер в коде JavaScript.
источник
Если вы ориентируетесь только на современные браузеры, И вы можете иметь свою границу на отдельном элементе от вашего контента, тогда вы можете использовать масштабное преобразование CSS, чтобы получить большую точку или тире:
Требуется много настроек позиционирования, чтобы выстроиться в линию, но это работает. Изменяя толщину границы, начальный размер и масштабный коэффициент, вы можете получить примерно необходимое соотношение толщины к длине. Единственное, чего вы не можете коснуться - это соотношение тире к разрыву.
источник
scale(8)
это то, что я сделал - используйте изображение введите описание изображения здесь
источник
AFAIK нет способа сделать это. Вы можете использовать пунктирную границу или немного увеличить ширину границы, но просто получить больше разнесенных точек невозможно с помощью CSS.
источник
Вы можете создать холст (с помощью JavaScript) и нарисовать пунктирную линию внутри. В пределах холста вы можете контролировать длину черты и промежуток между ними.
источник