中心のCSS:コンプリートガイド(翻訳)

ここに記事を書くための主な参照CHRIS COYIERある(参照してくださいするにはここをクリック主にCSSレベルについて話しました、)、いくつかの方法が縦方向に各メソッドは、デモを持って後ろに、あなたは、オンラインで結果を表示することができ、中心。

1つのレベル

水平方向のセンターは、インライン要素は、テキスト、画像、リンクなどを持って、インライン要素とブロック要素を持っている;ブロック要素は、主のdiv、pと他のブロック要素です。

1.1 行内元素

インライン要素は、水平方向の中心(使用して達成することができるため、オンラインデモを見ると):

.blocklist1_1 {    
    text-align: center;
}    

この方法は、インライン、インライン、ブロック、インラインテーブルなどに有効です。

1.2要素

ブロック要素のためのこのようなどのマージン左自動マージン右、(提供されてもよいオンラインビューデモ)。

.blocklist1_2 .div1 {    
    margin: 0px auto;
}    

かかわらず、ブロック要素の幅が知られているかどうかの、水平中心実現することができます。

1.3複数の要素を

あなたは、水平方向のニーズを中心に複数のブロック要素を持っている場合は、あなたが達成できる2つの方法があります。一つは、インラインブロック、フレックスによる他の手段です。第1の方法は以下のように使用することができるため(オンラインデモ見インラインブロック、親要素の中間レベル:設けブロック要素が表示され、):

..blocklist1_3 .div1 {    
    text-align: center;    
}    
.blocklist1_3 .div1 div {    
    display: inline-block;    
}

フレックスブロックと親要素は、以下のスタイルを(追加する必要がある場合は、オンラインデモを表示します):

.blocklist1_3 .div2 {    
    display: flex;    
    justify-content: center;    
}    

縦2

垂直中心はまた、インライン要素とブロック要素に分割されているが、比較が垂直中心状況はここでもう少し議論を必要とし、水平中心、我々は、以下の一つ一つを分析しました。

2.1 行内元素

2.1.1単一ライン

インライン要素の単一の行のために、我々は(に等しいそのパディングトップとパディング・ボトム値を設定する必要がオンラインデモを見ます):

.blocklist2_1_1 .div1 {    
    padding-top: 20px;    
    padding-bottom: 20px;    
}    

私たちが集合パディングをすることができない場合は、インライン要素(高さ=は50px)の高さが知られている、あなたは、行の高さ=高さを設定することができ、垂直センタリング要素(達成オンラインデモを見ると):

.blocklist2_1_1 .div2 {    
    line-height: 50px;    
    height: 50px;    
}    

2.1.2マルチライン

複数行の要素のために我々は、垂直方向のセンタリングを達成するための4つの方法があります。

  • 垂直中央値を提供することによって達成されるものに等しくなる、上記(等パディングトップパディング底できるDemo- 1):

.blocklist2_1_2 .div1 {   
    padding: 20px 0px;  
}    
  • 垂直-alignプロパティによってBを垂直中心実現することができる(デモ-2 ):

.blocklist2_1_2 .div2 {   
    display: table;    
}    
.blocklist2_1_2 .div2>div {    
    display: table-cell;    
    vertical-align: middle;    
}    
  • 。Cの技術は、単に次のパターン(追加、垂直中心フレックスの手段によって実現することができる。Demo- 3):

.blocklist2_1_2 .div3 {    
    display: flex;    
    justify-content: center;   
    flex-direction: column;    
    height: 400px;   
}    
  • ダミー素子容器内に配置され、次いで垂直に整列テキストに設定されているの完全な高さD(Demo- 4。 ):

.blocklist2_1_2 .div4 {    
    position:relative;    
}    
.blocklist2_1_2 .div4::before {    
    content: ' ';    
    display: inline-block;    
    height: 100%;    
    width: 1%;    
    vertical-align: middle;    
}    
.blocklist2_1_2 .div4>div {    
    display: inline-block;    
    vertical-align: middle;    
}    

2.2要素

2.2.1ブロック要素既知の高さ

ページは時々我々は時々我々が知らない、要素の高さを知っているレイアウト。ブロック要素の既知の高さは、垂直方向の中心(達成するように構成することができるデモ)。

.blocklist2_2_1 .div {    
    position: relative;    
}   
.blocklist2_2_1 .div div {    
    position: absoulte;
    top: 50%;    
    height: 100px;
    margin-top: -70px; //这里70px是height*1/2 + padding    
    padding: 20px;    
}    

2.2.2ブロック要素の高さは不明

時には我々は、変換時に使用できるブロック要素の高さは、実装されている(知らないデモを):

.blocklist2_2_2 .div {    
    position: relative;    
}    
.blocklist2_2_2 .div div {    
    transform: translateY(-50%);    
    top: 50%;    
    position: absoulte;    
}    

2.2.3達成フレックスの使用

これら二つのオプションに加えて、あなたも(達成するためにフレックスに使用できるデモを):

.blocklist2_2_3 .div {    
    display: flex;    
    flex-direction: column;    
    justify-content: center;    
}    

タテ3

時には、我々はまた、希望が水平垂直方向に中央揃え中央に配置されていないだけで、上記の例と組み合わせることができるという希望は、達成するために組み合わせて、次の三つの側面に分けられます。

3.1既知の素子の高さ、幅

要素の高さと幅が知られている場合、それは絶対に要素を配置することができる、50センターの%、および(次のように達成マージンの負のオフセット値デモ)。

.blocklist3_1 .div {    
    position: relative;    
}    
.blocklist3_1 .div div {    
    position: absoulte;
    top: 50%;    
    left: 50%;    
    margin: -120px 0px 0px -220px;    //height一半,width一半,另外加上padding值
    height: 200px;    
    width: 400px;    
    padding: 20px;    
}    

3.2要素の高さ、幅不明

要素の高さと幅は、それが不明な場合は、我々は二つの方向に負の50%を付与し、transformプロパティを使用することができ、など(次のデモを):

.blocklist3_2 .div {   
    position: relative;    
}    
.blocklist3_2 .div div {    
    position: absolute;     
    top: 50%;    
    left: 50%;    
    transform: translate(-50%, -50%);    
}    

3.3使用のフレキシボックスを達成します

2つの中央Flexプロパティ(使用する必要性を実装するとデモを):

.blocklist3_3 .div {     
    display: flex;    
    justify-content: center;    
    align-items: center;
}    

おすすめ

転載: www.cnblogs.com/10manongit/p/12642730.html