Абзац текста в круге с использованием CSS
Я искал подходящее и быстрое решение о том, как разместить абзац текста внутри круга. Я нашел, что есть два решения.
Решение 1
Поместить несколько div той же высоты, что и текст слева справа от текста, и, изменив divs width, вы отредактируете оставшееся пространство для текст.
Решение 2
Используйте генератор для той же самой вещи, http://www.csstextwrap.com/index.php.
БОНУС (не часть проблемы, просто подсказка)
Я не ищу этого, но, возможно, кому-то это может понадобиться, и я думаю, что его приятно иметь в качестве ссылки > http://csswarp.eleqtriq.com/ Его веб-интерфейс генератор, который поможет вам обернуть текст вокруг круга.
Вопрос?
Есть ли более простое решение для помещения абзаца текста внутри круга без необходимости добавления плавающего div и дополнительной разметки. Повреждение изображения, которое содержит этот текст, не является решением. В лучшем случае решение будет иметь чистую HTML-разметку с небольшими изменениями в CSS.
Ответы
Ответ 1
Книга Эрика Мейера "Эрик Мейер о CSS" рассказывает об этом (проект 10) и решениях для обертывания текста, которые вы нашли, используют тот же принцип.
Использование простого border-radius: 50%
не влияет на форму окна содержимого, которые в это время являются прямоугольными. Например, см. демо Кайла Севеноакса.
В разработке находится модуль CSS3, который решает эту проблему:
http://dev.w3.org/csswg/css-shapes
Однако эта спецификация все еще находится в режиме черновика и в настоящее время не поддерживается, возможно, год или два.
Короткий ответ - нет, но, надеюсь, комментарии предоставят некоторое представление.
Ответ 2
привет, я думаю, что без js я думаю, что это невозможно, поэтому используйте js и css3
.badge {
position: relative;
width: 400px;
border-radius: 50%;
-webkit-transform: rotate(-50deg);
-moz-transform: rotate(-50deg);
-ms-transform: rotate(-50deg);
-o-transform: rotate(-50deg);
transform: rotate(-50deg);
}
h1 span {
font: 26px Monaco, MonoSpace;
height: 200px;
position: absolute;
width: 20px;
left: 0;
top: 0;
-webkit-transform-origin: bottom center;
-moz-transform-origin: bottom center;
-ms-transform-origin: bottom center;
-o-transform-origin: bottom center;
transform-origin: bottom center;
}
.char1 {
-webkit-transform: rotate(6deg);
-moz-transform: rotate(6deg);
-ms-transform: rotate(6deg);
-o-transform: rotate(6deg);
transform: rotate(6deg);
}
.char2 {
-webkit-transform: rotate(12deg);
-moz-transform: rotate(12deg);
-ms-transform: rotate(12deg);
-o-transform: rotate(12deg);
transform: rotate(12deg);
}
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="http://css-tricks.com/examples/BlurredText/js/jquery.lettering.js"></script>
<script>
$(function() {
$("h1").lettering();
});
</script>
</head>
<body>
<div id="page-wrap">
<div class="badge">
<h1>Established 2012</h1>
</div>
</div>
</body>
</html>
Ответ 3
<!DOCTYPE HTML>
<html>
<head>
<style>
body {
margin: 0px;
padding: 0px;
}
</style>
</head>
<body>
<canvas id="myCanvas" width="578" height="250"></canvas>
<script>
function drawTextAlongArc(context, str, centerX, centerY, radius, angle) {
var len = str.length, s;
context.save();
context.translate(centerX, centerY);
context.rotate(-1 * angle / 2);
context.rotate(-1 * (angle / len) / 2);
for(var n = 0; n < len; n++) {
context.rotate(angle / len);
context.save();
context.translate(0, -1 * radius);
s = str[n];
context.fillText(s, 0, 0);
context.restore();
}
context.restore();
}
var canvas = document.getElementById('myCanvas'),
context = canvas.getContext('2d'),
centerX = canvas.width / 2,
centerY = canvas.height - 30,
angle = Math.PI * 0.8,
radius = 150;
context.font = '30pt Calibri';
context.textAlign = 'center';
context.fillStyle = 'blue';
context.strokeStyle = 'blue';
context.lineWidth = 4;
drawTextAlongArc(context, 'Text along arc path', centerX, centerY, radius, angle);
// draw circle underneath text
context.arc(centerX, centerY, radius - 10, 0, 2 * Math.PI, false);
context.stroke();
</script>
</body>
</html>
ЩЕЛКНУТЬ ЗДЕСЬ для другого решения (jsfiddle).
Ответ 4
orignal (?)... cover!
function writeInCircle(phrase, cx, cy, fontSize) {
var num = phrase.length
var r = num * fontSize / 6
var d = $("<div>").addClass("writeInCircle").appendTo("body")
$(d).css({position:"absolute",
width: (2*r) + "px",
height: (2*r) + "px",
left: (cx-r) + "px",
top: (cy-r) + "px"})
for (var i=0; i < num; i++) {
var s = $("<span>").html( phrase.charAt(i)).appendTo(d)
a = i/num *2*Math.PI
var x = cx + r*Math.cos(a)
var y = cy + r*Math.sin(a)
$(s).css({"position":"absolute",
left: x + "px", top: y + "px",
"fontSize": fontSize, "transform":"rotate(" + a + "rad)" })
console.log(z.charAt(i) + " " + x + "," + y)
}
}
см. http://jsfiddle.net/alemarch/42o8hqb7/ http://jsfiddle.net/alemarch/42o8hqb7/1/ http://jsfiddle.net/alemarch/42o8hqb7/2/ http://jsfiddle.net/alemarch/42o8hqb7/3/
Ответ 5
Наиболее подходящий ответ, который я нашел, можно найти здесь:
Легче использовать этот метод, а затем просто скрыть текст переполнения/использования, который подходит, а не переполняется.
Вырезать фигуру (треугольник) из div и показать фон позади