Почему радиальные градиенты CSS и SVG не совпадают?
результат градиентов не должен быть одинаковым? Почему они такие разные... Я что-то упускаю?
работ
SVG
<radialGradient cx="50%" cy="50%" r="100%" spreadMethod="pad" id="radGrad">
<stop offset="0" stop-color="#fff"/>
<stop offset="0.5" stop-color="#00f"/>
</radialGradient>
в CSS
background: radial-gradient(ellipse at center, #fff 0%,#00f 50%);
2 ответов
градиент CSS проходит от центра к боковая. Градиент SVG проходит от центра к угол. Таким образом, радиус градиента SVG в 1,414 (√2) раза больше радиуса градиента CSS.
Я не нашел способ сделать градиент SVG размером со стороны, а не с угла. Поэтому, чтобы соответствовать остановке градиента CSS на 50%, я рассчитал остановку градиента SVG вручную:
(CSS gradient radius / SVG gradient radius / 2)
или (1 / 1.414 / 2)
.
это означает, что: <stop offset="0.3536" stop-color="#00f"/>
http://codepen.io/anon/pen/emLqy/
... В Google Chrome все еще есть небольшая разница (предположительно нет дизеринг) в том, как отображаются градиенты. В Firefox и Safari оба градиента выглядят гладкими.
когда вы определяете радиус радиального градиента как " 100%", это означает 100% в единицах objectBoundingBox: которые являются %'s квадратный корень из суммы квадратов высоты и ширины границ окна. Градиентные остановки определяются относительно этого размера.