Display:inline-blockの要素がありますが、margin-topを受け入れないようです。これは、要素がまだインライン要素として扱われているためですか?
「はい」の場合、回避策はありますか?
編集#1:
私のCSSは非常に簡単です:
.label {
background: #ffffff;
display: inline-block;
margin-top: -2px;
padding: 7px 7px 5px;
}
結局、コンテンツを別のdivにラップし、それをマージントップにした。しかし、それは多くの余分なマークアップを引き起こし、私のコードをあまり明確にしません。
編集#2:
margin-top
&margin-bottom
on inline-block
要素は、正の値でのみ機能するようです。
display: table
を使用しました。インラインブロックのコンテンツフィッティングプロパティがありますが、負のマージンもサポートしており、それに合わせてコンテンツをシフトアップします。おそらくあなたはそれをどのように使用すべきかではありませんが、動作します。
負のマージンを次のように置き換えることもできます
.label{
position:relative;
top:-2px;
}
残りの.label
スタイル
次のようにvertical-align
を試すことができます:
.label {
background: #ffffff;
display: inline-block;
margin-top: -2px;
vertical-align: 2px;
padding: 7px 7px 5px;
}
Jsfiddleで例を作成しました: http://jsfiddle.net/zmmbreeze/X6BjK/ 。
ただし、IE6/7では垂直方向の配置はうまく機能しません。また、opera(11.64)レンダリングのバグがあります。
そのため、代わりにposition:relative
を使用することをお勧めします。
確かにそうです。マージンの代わりに、パディングを使用できます。別の解決策は、要素にコンテナdivを使用することです。そのdivを作成しますinline-block
、および現在の要素をそのコンテナ内のブロックにします。次に、要素にマージンを与えることができます。
できればjsfiddle.netなどで具体的な例を入手すると役立ちます。ここに私のような一般的な説明だけを含めるのではなく、回答をより具体的にすることも役立ちます。 ;)