Попытка создать настраиваемый фон в горошек, используя только CSS

#html #css

#HTML #css

Вопрос:

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

  • цвет фона
  • цвет точки
  • размер точки
  • пробел между точками

Если нет лучшего решения, я думаю, что единственный способ добиться этого — использовать чистый CSS. Я немного осмотрелся, и пока самое близкое, что я нашел, — это использование радиального градиента. Однако у меня возникли проблемы; Я не смог найти решение, которое позволило бы мне настраивать как размер точки, так и расстояние между точками, сохраняя при этом форму круга. Я приблизился, но в итоге мои точки выглядят как бриллианты вместо кругов. Вот что я придумал до сих пор:

https://jsfiddle.net/yzpuydtn/

 body {
  background-image: radial-gradient(black 2px, white 2px);
  background-size:40px 40px;
}
 

У кого-нибудь есть какие-либо предложения? Изначально я хотел бы, чтобы мои точки были размером 2x x 2px и 40 пикселей друг от друга. Есть ли лучший способ сделать это, или я просто неправильно настраиваю свой градиент? Я думаю, что я близок, но в зависимости от того, как я увеличиваю масштаб, они выглядят как круги, ромбы или квадраты, и мне нужно, чтобы они всегда выглядели как круги.

Комментарии:

1. Я бы просто использовал SVG; тогда он масштабируемый и не должен деформироваться при масштабировании.

2. Если я использую SVG, могу ли я настроить цвета и размеры на лету?

3. Вы можете взаимодействовать с SVG через DOM так же, как и с HTML.

Ответ №1:

Используя %: https://jsfiddle.net/yzpuydtn/11/
Использование vw: http://jsfiddle.net/otwhu0uk/2/

Вот пример. Я действительно надеюсь, что это поможет вам.

 body {
  /* Controls size of dot */
  background-image: radial-gradient(black 5%, white 0%);
  /* Controls Spacing, First value will scale width, second, height between dots */
  background-size:5% 10%;
}
 

Комментарии:

1. Пожалуйста, прочитайте еще раз вопрос. И чем объяснить в своем ответе, как вам удалось получить идеальные круги любого размера и расстояния.

2. Извините, поспешил с ответом. Причина, по которой они являются идеальными кругами, заключается в том, что я использую проценты вместо пикселей в качестве единиц измерения. Я постараюсь правильно ответить на ваш вопрос.

3. Извините, но я не понимаю, как настраивается ваш код ответа и как % это может иметь какое-либо значение jsfiddle.net/yzpuydtn/1

4. Мне нужно, чтобы точки были размером 2x x 2px. Если это 20%, это не так, верно? Есть ли какой-нибудь способ указать, к какому числу относятся 20%?

5. Извините, устройство называется vw. Это единица измерения, которая равна 1% от ширины области просмотра. с другой стороны, % не соответствует ширине контейнера.