2016-09-16 117 views
4

我正在使用某個垂直文本作爲標題元素中的一個範圍。問題是我無法弄清楚如何消除在垂直跨度和其他文本內容之間創建的空間。將垂直旋轉的文本與水平文本對齊

看着小提琴,我正在找一個小小的S旁邊的「我們只是一個」,在Big Feel的「B」旁邊的「爭取A」。

什麼它看起來像現在: Non-working version

我正在尋找做 the goal

的HTML:

<h2> 
<span class="smallVertical orangeText">We're Just A</span> 
Small<br/>Company<br/> 
<span class="smallVertical">Striving For A</span> 
<span class="orangeText">Big Feel</span> 
</h2> 

的CSS:

@import 'https://fonts.googleapis.com/css?family=Oswald'; 

h2 { 
    text-align:right; 
    font-family:'Oswald', sans-serif; 
    text-transform:uppercase; 
    font-size:8em; 
    line-height:1.1em; 
} 

h2 span.smallVertical { 
    font-size:12%; 
    transform: rotate(-90deg); 
    letter-spacing:0.1em; 
    float:left; 
} 

h2 span.orangeText { 
    color:#FF9900; 
} 

Fiddle

所以基本上:如何消除旋轉和不可旋轉使用文本CSS之間的水平空間?

+0

把每個跨度並按照div標籤的文本行,立場是絕對正確的,位置跨度絕對保留。 – Sarcoma

+0

我會很快發佈一個例子。 – Sarcoma

回答

5

這是很和好像你在這裏需要一些實實在在的幫助:)
我會盡量在代碼解釋:

@import 'https://fonts.googleapis.com/css?family=Oswald'; 
 

 
h2 { 
 
    text-align: right; 
 
    font-family: 'Oswald', sans-serif; 
 
    text-transform: uppercase; 
 
    font-size: 8em; 
 
    line-height: 1.1em; 
 
} 
 

 
h2 span.smallVertical { 
 
    font-size: 12%; 
 
    letter-spacing: 0.1em; 
 
    
 
    /*float: left;     /* NOOOOOOOOOOOO :) */ 
 
    display: inline-block;   /* use this instead of float:left */ 
 
    transform: rotate(-90deg) translateY(50%); /* Add: translateY 50% */ 
 
    width: 8em;     /* same as font size (OR A BIT SMALLER) */ 
 
    text-align:center;    /* to center text inside the red thing */ 
 
    vertical-align:top;   /* top to "center" span... (yeah I know...) */ 
 
    background:rgba(255,0,0,0.1); /* just to see what the heck we're doing */ 
 
    white-space: nowrap;   /* prevent small text wrap at 8em */ 
 
} 
 

 
h2 span.orangeText { 
 
    color: #FF9900; 
 
}
<h2> 
 
    <span class="smallVertical orangeText">We're Just A</span> 
 
    Small<br/>Company<br/> 
 
    <span class="smallVertical">Striving For A</span> 
 
    <span class="orangeText">Big Feel</span> 
 
</h2>

提示-的-tha-day:通過添加white-space: nowrap;你甚至可以使文本超過着名的8em,並仍然使它成爲nic伊利和基線對齊排版在這個演示:https://jsfiddle.net/jf5kwh3t/8/

要對齊「基線」(像的jsfiddle的演示最後一行)只需使用
text-align: left;所有小的文本。

+0

我的第一個想法是,這比我的解決方案更好,但它不是沒有出過問題。文本可以在文本的垂直線和大文本之間斷開(也許一個'nbsp;'可以工作?)。而這種類型並不排列上下,它看起來是以中心爲中心的?我也有問題。 – Sarcoma

+0

@Sarcoma我在這裏看不到任何問題:https://jsfiddle.net/jf5kwh3t/9/。你能說出一些光明嗎? –

+0

行內塊看起來更合適,我可以看到這在響應式設計方面更加靈活。 – Sarcoma

0

這是做你要求的,但也維護文本的順序。

通過包裝div標籤中的單詞,我們可以將這些跨度定位在它們的左側並進行絕對定位。

HTML:

<h2> 
<div class="top"> 
    <span class="smallVertical orangeText">We're Just A</span> 
    Small 
</div> 
<div class="mid"> 
    Company 
</div> 
<div class="bottom"> 
    <span class="smallVertical">Striving For A</span> 
    <span class="orangeText">Big Feel</span> 
</div> 

CSS:

@import 'https://fonts.googleapis.com/css?family=Oswald'; 
h2 { 
    position: relative; 
    text-align: right; 
    font-family: 'Oswald', sans-serif; 
    text-transform: uppercase; 
    font-size: 8em; 
    line-height: 1.1em; 
} 

h2 div { 
    position: absolute; 
    right: 0; 
} 

.top { 
    top: 0; 
} 

.mid { 
    top: 135px; 
} 

.bottom { 
    top: 270px; 
} 

h2 span.smallVertical { 
    font-size: 12%; 
    transform: rotate(-90deg); 
    letter-spacing: 0.1em; 
    position: absolute; 
    top: 0; 
    left: -66px; 
} 

.bottom .smallVertical { 
    left: -76px 
} 

h2 span.orangeText { 
    color: #FF9900; 
} 

https://jsfiddle.net/jf5kwh3t/7/

+0

這是錯誤的**導致文本和第一個大字符之間的距離是由小文字長度決定的...... –

+0

是的,這是一個艱難的。就像我說過的,我認爲我已經擁有了,但現在已經很晚了。我以前沒有使用過像這樣的旋轉文字。我確實想知道爲什麼左邊緣沒有了。 – Sarcoma

+0

完全同意。我還對爲了完成這項工作而需要添加的額外CSS權重留下了深刻的印象(並處理所有小文本長度的情況) –