2016-09-16 24 views
4

見出し要素内のスパンとして、いくつかの縦書きのテキストを再生しています。問題は、垂直スパンとテキストコンテンツの残りの部分の間に作られたスペースを排除する方法を見つけることができないことです。縦書きのテキストを横書きのテキストに整列する

フィドルを見て、私は小さなものでSの隣に「We're Just A」、ビッグフィールでは「B」の隣にある「Striving For A」をタックしています。

は、それが今のように見えるもの:私は the goal

を行うために探しています何 Non-working version

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-daywhite-space: nowrap;を追加することで、テキストを有名な8emを超えても、それでもニックにすることさえできますエリーと活字このデモのように、ベースラインで揃え: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の重みにも感銘を受けました(そして、小さなテキスト長さのすべてのケースを処理します) –

関連する問題