Как я могу создать пунктирную линию из двух цветов: серого и светло-серого?

Я хочу создать пунктирную линию, как на изображении ниже, используя только CSS и HTML с минимальным количеством кода. Процент распределения тире между двумя цветами может варьироваться в зависимости от другой переменной CSS, поэтому я должен иметь возможность установить (процент серого) и (100% — (процент серого)) для светло-серого. Я также хочу иметь возможность устанавливать ширину и высоту тире, а также ширину промежутков между ними.

И сколько бы я ни пытался повторить(), сетку и т. д., я не могу этого добиться.

Я также прочитал эти два, но не смог внести изменения в соответствии со своими потребностями: Как создать пунктирную границу с двумя чередующимися цветами?Градиентная линия с пунктирным узором

Ребята, пожалуйста, помогите мне решить эту задачу?

Я пробовал использовать атрибуты фонового изображения, фонового размера, фонового положения и фонового повторения с комбинацией функций линейного градиента () и повторяющегося линейного градиента (), но мне не удалось использовать их в любой комбинации. с разными значениями.

я ожидаю этого

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
0
54
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Одна из идей состоит в том, чтобы использовать два линейных градиента: один отображает пунктирную линию, другой разделяет процент осветления 70% и накладывает на них режим наложения lighten. Все это можно извлечь как настраиваемое свойство для удобного управления.

.dashed-line {
  width: 100%;
  height: 6px;

  --lighten-percentage: 70%;
  --dash-width: 18px;
  background-image: repeating-linear-gradient(to right, #ffff 0% 40%, #454f5b 40% 100%), linear-gradient(to right, #0000 0% round(down, var(--lighten-percentage), var(--dash-width)), #bbb round(down, var(--lighten-percentage), var(--dash-width)) 100%);
  background-size: var(--dash-width) 100%, 100% 100%;
  background-blend-mode: lighten;
}
<div class = "dashed-line"></div>

Я бы использовал маску и фон. Для демонстрации я использую красный и синий цвета, но вы можете легко изменить их на нужные цвета.

.line {
  height: 10px;
  /* adjust the 30px to control the size of the dash and the 50% to control the gap */
  mask: linear-gradient(90deg,#000 50%,#0000 0) 0/30px;
  /* adjust the 70% to control the percentage of red */
  background: linear-gradient(90deg,red 70%,blue 0);
}
<div class = "line"></div>

@yahya Думаю, это намного чище, чем мое решение! Это также позволяет создавать прозрачные зазоры. Я планировал обновить свое решение, чтобы вместо этого использовать маску, но вчера у меня не было времени. Вместо этого вам следует использовать это решение. При необходимости можно использовать round(70%,30px), чтобы предотвратить появление красного процента в середине тире. (Хотя round() не поддерживается в старых браузерах.)

SyndRain 04.09.2024 16:26

Другие вопросы по теме