Çapraz tarayıcı (> = IE6,> = Firefox 2, Chrome, Safari veya Opera'nın herhangi bir sürümü) desteği ile tek bir metin kelimesini 90 derece döndürmek istiyorum. Bu nasıl yapılabilir?
Çapraz tarayıcı (> = IE6,> = Firefox 2, Chrome, Safari veya Opera'nın herhangi bir sürümü) desteği ile tek bir metin kelimesini 90 derece döndürmek istiyorum. Bu nasıl yapılabilir?
Yanıtlar:
Bu yanıtı en son bilgilerle güncelledi ( CSS Tricks'ten ). Filtre uygulamasına dikkat çektiği için Matt ve Douglas'a şeref.
.rotate {
-webkit-transform: rotate(-90deg);
-moz-transform: rotate(-90deg);
-ms-transform: rotate(-90deg);
-o-transform: rotate(-90deg);
transform: rotate(-90deg);
/* also accepts left, right, top, bottom coordinates; not required, but a good idea for styling */
-webkit-transform-origin: 50% 50%;
-moz-transform-origin: 50% 50%;
-ms-transform-origin: 50% 50%;
-o-transform-origin: 50% 50%;
transform-origin: 50% 50%;
/* Should be unset in IE9+ I think. */
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
}
Eski cevap:
FF 3.5 veya Safari / Webkit 3.1 için şunlara bakın : -moz-transform (ve -webkit-transform). IE bir Matrix filtresi (v5.5 +) var, ama nasıl kullanılacağından emin değilim. Opera henüz bir dönüşüm yetenekine sahip değil.
.rot-neg-90 {
/* rotate -90 deg, not sure if a negative number is supported so I used 270 */
-moz-transform: rotate(270deg);
-moz-transform-origin: 50% 50%;
-webkit-transform: rotate(270deg);
-webkit-transform-origin: 50% 50%;
/* IE support too convoluted for the time I've got on my hands... */
}
Bir sayfada dikey metin yazmak için aşağıdaki kodu kullanıyorum. Firefox 3.5+, webkit, opera 10.5+ ve IE
.rot-neg-90 {
-moz-transform:rotate(-270deg);
-moz-transform-origin: bottom left;
-webkit-transform: rotate(-270deg);
-webkit-transform-origin: bottom left;
-o-transform: rotate(-270deg);
-o-transform-origin: bottom left;
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
}
Başka bir çözüm kullanmaktır SVG metin düğümü olan en tarayıcılar tarafından desteklenmektedir .
<svg width="50" height="300">
<text x="28" y="150" transform="rotate(-90, 28, 150)" style="text-anchor:middle; font-size:14px">This text is vertical</text>
</svg>
Demo: https://jsfiddle.net/bkymb5kr/
SVG metni hakkında daha fazla bilgi: http://tutorials.jenkov.com/svg/text-element.html
CSS Yazma Modları modülü dikey metin ile ortogonal akışlarını tanıtır.
Sadece writing-mode
istenen değere sahip özelliği kullanın .
span { margin: 20px; }
#vertical-lr { writing-mode: vertical-lr; }
#vertical-rl { writing-mode: vertical-rl; }
#sideways-lr { writing-mode: sideways-lr; }
#sideways-rl { writing-mode: sideways-rl; }
<span id="vertical-lr">
↑ (1) vertical-lr 至<br />
↑ (2) vertical-lr 至<br />
↑ (3) vertical-lr 至
</span>
<span id="vertical-rl">
↓ (1) vertical-rl 至<br />
↓ (2) vertical-rl 至<br />
↓ (3) vertical-rl 至
</span>
<span id="sideways-lr">
↓ (1) sideways-lr 至<br />
↓ (2) sideways-lr 至<br />
↓ (3) sideways-lr 至
</span>
<span id="sideways-rl">
↓ (1) sideways-rl 至<br />
↓ (2) sideways-rl 至<br />
↓ (3) sideways-rl 至
</span>
Bunu http://snook.ca/archives/html_and_css/css-text-rotation adresinden uyarladım :
<Style> .Rotate-90 { Ekran bloğu; pozisyon: mutlak; sağ: -5px; üst: 15 piksel; -webkit-dönüşümü: döndürme (-90 derece); -moz-dönüşümü: döndürme (-90 derece); } </ Style> <! - [IE ise]> <Style> .Rotate-90 { filtre: progid: DXImageTransform.Microsoft.BasicImage (döndürme = 3); Sağ: -15px; En: 5px; } </ Style> <[Endif] ->
Saf CSS ile yapmaya çalışırken sorun yaşadım - yazı tipine bağlı olarak biraz çöp görünebilir. Alternatif olarak bunu yapmak için SVG / VML kullanabilirsiniz. Raphael ve ExtJS gibi tarayıcıyı kolaylıkla çaprazlaştırmaya yardımcı olan kütüphaneler var . ExtJS4'te kod şöyle görünür:
var drawComp = Ext.create('Ext.draw.Component', {
renderTo: Ext.getBody(), //or whatever..
height: 100, width: 100 //ditto..
});
var text = Ext.create('Ext.draw.Component', {
type: "text",
text: "The text to draw",
rotate: {
x: 0, y: 0, degrees: 270
},
x: -50, y: 10 //or whatever to fit (you could calculate these)..
});
text.show(true);
Bu IE6 + ve tüm modern tarayıcılarda çalışacaktır, ancak maalesef en azından FF3.0'a ihtiyacınız olduğunu düşünüyorum.
Bootstrap 3 kullanıyorsanız, karışımlarından birini kullanabilirsiniz:
.rotate(degrees);
Misal:
.rotate(-90deg);
Chrome, Firefox, IE9, IE10'da çalışacak olan çözümüm (Dereceleri gereksiniminize göre değiştirin):
.rotate-text {
-webkit-transform: rotate(270deg);
-moz-transform: rotate(270deg);
-ms-transform: rotate(270deg);
-o-transform: rotate(270deg);
transform: rotate(270deg);
filter: none; /*Mandatory for IE9 to show the vertical text correctly*/
}
CSS yazma modu : sideways-lr
tercih ettiğiniz şeyse ve krom / krom tabanlı tarayıcıda çalışırsınız. Deneyebilirsin
{
writing-mode: vertical-rl;
transform: rotate(180deg);
}
böylece tüm modern tarayıcılar şimdi destekliyor.
başvuru: https://bugs.chromium.org/p/chromium/issues/detail?id=680331#c4