3D текст, расположенный по кругу с помощью HTML5

Используем HTML5 для создания текста с эффектами 3D (с помощью теней) и расположения его по кругу. Также будет выполняться анимация движения букв.

 

 

Разметка HTML

Для демонстрации создаем простую страницу с элементом canvas

 <!DOCTYPE html>
<html lang="ru" >
    <head>
        <meta charset="utf-8" />
        <title>Текст по кругу с эффектом 3D на HTML5 | Материалы сайта RUSELLER.COM</title>
        <link href="/css/main.css" rel="stylesheet" type="text/css" />
        <script type="text/javascript" src="/js/script.js"></script>
    </head>
    <body>
        <header>
            <h2>Текст по кругу с эффектом 3D на HTML5</h2>
            <a href="http://www.ruseller.com" class="stuts" target="_blank">Материалы сайта <span>RUSELLER.COM</span></a>
        </header>
        <div class="container">
            <div class="contr">
                <input type="radio" name="mode" onchange="bPlay = false" checked /><label>Стоп</label>
                <input type="radio" name="mode" onchange="bPlay = true" /><label>Пуск</label>
            </div>
            <canvas id="panel" width="600" height="600"></canvas>
        </div>
    </body>
</html>

 

JavaScript

Весь функционал нашего примера реализован в коде JavaScript. Основная функция разделяет строку текста на отдельные символы и выводит их с необходимыми трансформациями:

// Переменные
var canvas, ctx;
var bPlay = false;
var iAngle = 0;
var sText = 'Привет! 3D текст по кругу. ';

// Функции рисования
function clear() { // Очистка элемента canvas
    ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
}

function drawScene() { // Основная функция вывода сцены
    if (bPlay == 1) {
        clear(); // Очистка элемента canvas

        // Заполняем фон
        ctx.fillStyle = '#d7e8f1';
        ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height);

        // Меняем угол
        iAngle+=0.005;

        // и выводим текст по кругу с радиусом 200 в центре элемента canvas
        draw3DTextCircle(sText, canvas.width / 2, canvas.height / 2, 200, Math.PI / 2 - iAngle);
    }
}

function draw3DTextCircle(s, x, y, radius, iSAngle){

    // Радиан на символ
    var fRadPerLetter = 2*Math.PI / s.length;

    // Сохраняем контекст, переводим и вращаем его
    ctx.save();
    ctx.translate(x,y);
    ctx.rotate(iSAngle);

    // Количество дополнительных нижних слоев
    var iDepth = 4;

    // Устанавливаем темно-зеленый цвет для дополнительных слоев
    ctx.fillStyle = '#168d1e';

    // Обрабоатываем каждый символ строки
    for (var i=0; i<s.length; i++) {
        ctx.save();
        ctx.rotate(i*fRadPerLetter);

        // Выводим дополнительные слои
        for (var n = 0; n < iDepth; n++) {
            ctx.fillText(s[i], n, n - radius);
        }

        // Параметры тени
        ctx.fillStyle = '#00d50f';
        ctx.shadowColor = 'black';
        ctx.shadowBlur = 10;
        ctx.shadowOffsetX = iDepth + 2;
        ctx.shadowOffsetY = iDepth + 2;

        // выводим символы
        ctx.fillText(s[i], 0, -radius);
        ctx.restore();
   }
   ctx.restore();
}

// Привязываем событие onload
if (window.attachEvent) {
    window.attachEvent('onload', main_init);
} else {
    if(window.onload) {
        var curronload = window.onload;
        var newonload = function() {
            curronload();
            main_init();
        };
        window.onload = newonload;
    } else {
        window.onload = main_init;
    }
}

function main_init() {

    // Создаем элемент canvas и объект context
    canvas = document.getElementById('panel');
    ctx = canvas.getContext('2d');

    // Инициализуем строку текста
    ctx.font = '64px Verdana';
    ctx.textAlign = 'center';
    ctx.textBaseline = 'middle';

    // Заполняем фон
    ctx.fillStyle = '#d7e8f1';
    ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height);

    // Выводим текст по кругу с радуисом 200 по центру элемента canvas
    draw3DTextCircle(sText, canvas.width / 2, canvas.height / 2, 200, Math.PI / 2 - iAngle);

    setInterval(drawScene, 40); // Выводим сцену
}

Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/c5YIf6ulWuo/lessons.php

Читать комменты и комментировать

Добавить комментарий / отзыв



Защитный код
Обновить

3D текст, расположенный по кругу с помощью HTML5 | | 2012-06-19 11:54:20 | | Статьи Web-мастеру | | Используем HTML5 для создания текста с эффектами 3D (с помощью теней) и расположения его по кругу. Также будет выполняться анимация движения букв.  Разметка HTMLДля демонстрации создаем простую | РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
 
Поделиться с друзьями: