Można użyć czegoś, co nazywa skew
w deklaracji transformacji CSS:
.fontToTransform {
font-size: 40px;
transform: skewX(15deg);
-webkit-transform: skewX(15deg);
-moz-transform: skewX(15deg);
-o-transform: skewX(15deg);
-ms-transform: skewX(15deg);
}
To będzie cię z kłopotów faktycznie manipulowania samej czcionki. Spowoduje to przekształcenie całego bloku, w którym znajduje się twój tekst. Możesz potrzebować jakiegoś sprawdzania poprawności, aby sprawdzić każdą linię podziału i oddzielić je za każdym razem od nowych tagów. Ponieważ może to nie być prawdziwe rozwiązanie, możesz wziąć to pod uwagę, jeśli chcesz ścinać krótszy (jednoliniowy) tekst.
Edit
To veeeery daleko idące, ale tutaj jest brudny przykład, który dowiaduje się poszczególnych linii w bloku tekstu i umieszcza każdą z nich w nowym span
, co spowoduje, że każdy wiersz będzie oddzielnie stylizowany w stylu skewX
. Proszę bardzo:
CSS
#fontTransform {
font-size: 40px;
margin-right: 30px;
text-align: right;
}
#fontTransform span {
display: block;
transform: skewX(15deg);
-webkit-transform: skewX(15deg);
-moz-transform: skewX(15deg);
-o-transform: skewX(15deg);
-ms-transform: skewX(15deg);
}
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>HTML</title>
<script src="jquery.js" type="text/javascript"></script>
<script src="main.js" type="text/javascript"></script>
<link rel="stylesheet" href="main.css" type="text/css" />
</head>
<body>
<p id="fontTransform">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p>
</body>
</html>
main.js
'use strict';
$(document).ready(function(){
var d = document.getElementById('fontTransform');
var t = d.innerHTML;
var w = t.split(' ');
var lines = [];
d.innerHTML = w[0];
var height = d.clientHeight;
var tmp_line = [];
for (var i = 0; i < w.length; i++) {
d.innerHTML = d.innerHTML + ' ' + w[i];
tmp_line[tmp_line.length] = w[i];
if (d.clientHeight > height) {
height = d.clientHeight;
console.log(w[i-1]);
delete tmp_line[tmp_line.length-1];
lines[lines.length] = tmp_line;
tmp_line = [];
}
}
// Destroy d.innerHTML
d.innerHTML = '';
var tmp_html = '';
// Refill the lines within spans
for (var i = 0; i < lines.length-1; i++) {
tmp_html = '<span>';
for (var x = 0; x < lines[i].length-1; x++) {
tmp_html = tmp_html + lines[i][x] + ' ';
}
tmp_html = tmp_html.trim();
tmp_html = tmp_html + '</span>';
d.innerHTML = d.innerHTML + tmp_html;
}
});
Można rozważyć usin g jQuery's resize()
wiązanie do aktualizacji bloków tekstu o szerokościach percentyla. Nie jestem też pewien, co dzieje się z długimi słowami, które nie mieszczą się w jednej linii. Nie żeby tak się stało, ale pamiętaj, że nie jest testowany i może spowodować utratę słów. Naprawdę trzeba zrobić więcej testów dla rzeczywistego publikowania.
Czy deklarując text-kierunek: RTL? –
@Diodeus yes Jestem – shnisaka
http://jsfiddle.net/vPLkE/ kierunek nie działa –