Радиальный градиент фона

Я пытаюсь добиться эффекта ниже с помощью чистого CSS3. Я думаю, что повторяющийся радиальный градиент - это правильный путь, но я не могу понять, как заставить радиальный градиент идти «от большого к меньшему» по горизонтали. Любой совет?

Это самое близкое, что я получил jsfiddle. Это близко, но это не идет "от большого к малому" по горизонтали.

.dotted {
  padding: 2.25em 1.6875em;
    background-color: #ffb55d;
  background-image: -webkit-repeating-radial-gradient(center center, #ff9d4b, #ff9d4b 2px, transparent 2px, transparent 100%);
  background-image: -moz-repeating-radial-gradient(center center, #ff9d4b, #ff9d4b 2px, transparent 2px, transparent 100%);
  background-image: -ms-repeating-radial-gradient(center center, #ff9d4b, #ff9d4b 2px, transparent 2px, transparent 100%);
  background-image: repeating-radial-gradient(center center, #ff9d4b, #ff9d4b 2px, transparent 2px, transparent 100%);
  -webkit-background-size: 5px 5px;
  -moz-background-size: 3px 3px;
  background-size: 5px 5px;
}

фон


person Joel Worsham    schedule 23.12.2014    source источник
comment
Сомнительно, возможно ли это с градиентом CSS, поскольку на самом деле он не повторяет LTR.   -  person Paulie_D    schedule 23.12.2014
comment
Согласен с Paulie_D в этом. Если бы речь шла только о повторении круглой формы, то это можно было бы сделать либо с помощью repeating-radial-gradient (как вы уже сделали), либо с помощью маленького background-size и установки опции повторения на обычное radial-gradient.   -  person Harry    schedule 23.12.2014
comment
самый простой вариант, который сейчас приходит на ум, — установить это в качестве фона (это плохо или просто лень?)   -  person jbutler483    schedule 23.12.2014
comment
отчасти это возможно fiddle   -  person Vitorino fernandes    schedule 23.12.2014
comment
Нашли это на codepen, если это поможет?   -  person jbutler483    schedule 23.12.2014
comment
@jbutler483: Хорошая находка, приятель. Просто показывает, что приложив усилия (а их довольно много), этого можно было бы добиться. Но я бы сказал, что это слишком много усилий для фона, который можно создать с помощью изображений.   -  person Harry    schedule 23.12.2014
comment
@ jbutler483 Да, технически это ответ, хотя, как сказал Гарри, это слишком много усилий. Спасибо хоть! Мне просто, возможно, придется прибегнуть к фоновому изображению. Это был первоначальный план, я просто надеялся, что это можно сделать с помощью CSS, потому что фоновое изображение не будет очень отзывчивым (максимальная ширина).   -  person Joel Worsham    schedule 23.12.2014


Ответы (3)


Гораздо ближе к тому, что вы ищете:

.dotted {
    height:100px;
    width:100%;
    background: radial-gradient(orange 15%, transparent 16%) 1px 1px,
    radial-gradient(orange 15%, transparent 16%) 8px 8px,
    radial-gradient(rgba(255,255,255,.1) 15%, transparent 20%) 0 1px,
    radial-gradient(rgba(255,255,255,.1) 15%, transparent 20%) 8px 9px;
    background-color:#ffb55d;
    background-size:16px 16px;
}
person Afsar Ahmad    schedule 23.12.2014
comment
Спасибо за ответ. Не совсем то, что я ищу, но определенно ближе - person Joel Worsham; 24.12.2014

Модифицированная находка jbutler483 на codepen (просто для удовольствия) (с Chrome):

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div style="background: rgba(0,0,0,1);">
  <div class='halftone' height='100px'></div>
  <div class='halftone2' height='100px'></div>
</div>

<style>
  * {
    margin: 0;
    padding: 0;
    position: relative;
    box-sizing: border-box;
  }
  html,
  body {
    height: 100%;
  }
  div {
    height: 100%;
    background-color: 0;
  }
  .halftone {
    /*
      size progressively decreasing 
    */
    background-image: radial-gradient(circle, dodgerblue 85%, transparent 0), radial-gradient(circle, dodgerblue 80%, transparent 0), radial-gradient(circle, dodgerblue 75%, transparent 0), radial-gradient(circle, dodgerblue 70%, transparent 0), radial-gradient(circle, dodgerblue 65%, transparent 0), radial-gradient(circle, dodgerblue 60%, transparent 0), radial-gradient(circle, dodgerblue 55%, transparent 0), radial-gradient(circle, dodgerblue 50%, transparent 0), radial-gradient(circle, dodgerblue 45%, transparent 0), radial-gradient(circle, dodgerblue 40%, transparent 0), radial-gradient(circle, dodgerblue 35%, transparent 0), radial-gradient(circle, dodgerblue 30%, transparent 0), radial-gradient(circle, dodgerblue 25%, transparent 0), radial-gradient(circle, dodgerblue 20%, transparent 0);
    /*
      change all other values when changing this.
      I suppose this'd be easier to do in Sass.
    */
    background-size: 1em 1em;
    /*
      If you want a vertical pattern change to repeat-x, also remember to  switch the background-positions' values. Eg. "2em 0" becomes "0 2em".
    */
    background-repeat: repeat-y;
    /*
      based on background-size value
    */
    background-position: 0 0, 1em 0, 2em 0, 3em 0, 4em 0, 5em 0, 6em 0, 7em 0, 8em 0, 9em 0, 10em 0, 11em 0, 12em 0, 13em 0;
  }
  .halftone2 {
    /*
      size progressively increasing 
    */
    background-image: radial-gradient(circle, dodgerblue 20%, transparent 0), radial-gradient(circle, dodgerblue 25%, transparent 0), radial-gradient(circle, dodgerblue 30%, transparent 0), radial-gradient(circle, dodgerblue 35%, transparent 0), radial-gradient(circle, dodgerblue 40%, transparent 0), radial-gradient(circle, dodgerblue 45%, transparent 0), radial-gradient(circle, dodgerblue 50%, transparent 0), radial-gradient(circle, dodgerblue 55%, transparent 0), radial-gradient(circle, dodgerblue 60%, transparent 0), radial-gradient(circle, dodgerblue 65%, transparent 0), radial-gradient(circle, dodgerblue 70%, transparent 0), radial-gradient(circle, dodgerblue 75%, transparent 0), radial-gradient(circle, dodgerblue 80%, transparent 0), radial-gradient(circle, dodgerblue 85%, transparent 0);
    /*
      change all other values when changing this.
      I suppose this'd be easier to do in Sass.
    */
    background-size: 1em .8em;
    /*
      If you want a vertical pattern change to repeat-x, also remember to  switch the background-positions' values. Eg. "2em 0" becomes "0 2em".
    */
    background-repeat: repeat-y;
    /*
      based on background-size value
    */
    background-position: 0 0, 1em 0, 2em 0, 3em 0, 4em 0, 5em 0, 6em 0, 7em 0, 8em 0, 9em 0, 10em 0, 11em 0, 12em 0, 13em 0;
  }
  .halftone {
    animation: rt 4s infinite;
    animation-direction: alternate;
  }
  .halftone2 {
    animation: rt2 4s infinite;
    animation-direction: alternate;
  }
  @keyframes rt {
    0% {
      opacity: 0;
      transform: rotateY(0deg);
    }
    25% {
      opacity: 1
    }
    50% {
      opacity: 0;
      transform: rotateY(180deg);
    }
    75% {
      opacity: 1
    }
    100% {
      opacity: 0;
      transform: rotateY(360deg);
    }
  }
  @keyframes rt2 {
    0% {
      opacity: 1;
      transform: rotateY(0deg) translateY(-405px);
    }
    25% {
      opacity: 0
    }
    50% {
      opacity: 1;
      transform: rotateY(180deg) translateY(-405px);
    }
    75% {
      opacity: 0
    }
    100% {
      opacity: 1;
      transform: rotateY(360deg) translateY(-405px);
    }
  }
</style>

person dwn    schedule 23.12.2014
comment
Ха-ха, да, это работает, но не очень отзывчиво. Спасибо. - person Joel Worsham; 24.12.2014

Хорошо, похоже, это невозможно с помощью CSS3. Однако я заставил его работать с изображением, так что я думаю, что это лучший ответ.

person Joel Worsham    schedule 23.12.2014