Создать что-то подобное с помощью CSS3?

#javascript #css

#javascript #css

Вопрос:

http://raphaeljs.com/polar-clock.html

Я бы хотел создать это без использования SVC или Canvas. Кто-нибудь может указать мне на примеры, делающие что-то подобное с css?

Спасибо!

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

1. это в значительной степени один из единственных способов сделать это.

2. @kyle ложь, github.com/dnewcome/Donatello

Ответ №1:

Ну, SVG, безусловно, кажется правильным решением для этого (или canvas, но я бы предпочел SVG). И скрипт Raphael будет работать даже в старых версиях IE, поскольку он переключается на VML в IE6 / 7 / 8, поэтому, если вы пытаетесь избежать SVG / Canvas из-за этого, вам не нужно беспокоиться.

Но вы спрашиваете, как это сделать без них, поэтому я посмотрю, что я могу сделать…

Есть несколько людей, которые продемонстрировали рисование некоторых довольно сложных фигур с использованием чистого CSS. Смотрите http://css-tricks.com/examples/ShapesOfCSS / например.

В чистом CSS / HTML единственным реалистичным способом рисования кривых является использование border-radius стиля. Круг, как в примере в вопросе, может быть получен с помощью квадратного элемента с border-radius и толстой рамкой.

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

Теперь самое сложное. Превратить их из окружностей в дуги будет сложнее. Единственный разумный способ, который я могу придумать, это сделать, это наложить еще несколько элементов поверх кругов, окрашенных в тот же цвет, что и фон, чтобы скрыть часть круга. Нам нужно было бы использовать CSS transform , чтобы повернуть их так, чтобы угол отсечения был правильным.

Так что это можно было бы сделать.

Анимировать его (конечно, так же красиво, как в примере) было бы на порядок сложнее, и я бы не хотел даже начинать думать об этом. Просто дайте мне SVN в любой день.

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

1. Согласен, уже есть проверенные и проверенные способы сделать это, делать это в чистом CSS было бы кошмаром. 1

2. Спасибо! Производительность SVG в мобильных браузерах невелика. Если это слишком сложно для css, я, вероятно, использую paper.js (холст).