Bir div içindeki bir yayılma öğesini nasıl yatay olarak ortalayabilirim


123

Çevreleyen div içinde 'web sitesini görüntüle' ve 'projeyi görüntüle' bağlantısını ortalamaya çalışıyorum. Birisi bunun işe yaraması için ne yapmam gerektiğini söyleyebilir mi?

JS Fiddle: http://jsfiddle.net/F6R9C/

HTML

<div>
  <span>
    <a href="#" target="_blank">Visit website</a>
    <a href="#">View project</a>
  </span>
</div>

CSS

div { background:red;overflow:hidden }

span a {
    background:#222;
    color:#fff;
    display:block;
    float:left;
    margin:10px 10px 0 0;
    padding:5px 10px
}


Bir div içindeki öğeleri dikey, yatay veya her ikisinde birden (saf CSS) ortalamanın iki basit yöntemi: stackoverflow.com/a/31977476/3597276
Michael Benjamin

Yanıtlar:


134

Bir seçenek, <a>bir görüntü vermek inline-blockve ardından text-align: center;içeren bloğa uygulamaktır (şamandırayı da kaldırın):

div { 
    background: red;
    overflow: hidden; 
    text-align: center;
}

span a {
    background: #222;
    color: #fff;
    display: inline-block;
    /* float:left;  remove */
    margin: 10px 10px 0 0;
    padding: 5px 10px
}

http://jsfiddle.net/Adrift/cePe3/


1
Biraz hacklemem gereken orta derecede karmaşık bir temada bu benim için hile yaptı. JSFiddle'a olan bağlantı, test etmeme izin vermek için harikaydı. Bu girişi "overflow: hidden" ı "overflow: hidden;" olarak değiştirecek şekilde düzenledim.
.. çekti

1
Çok temiz bir çözüme benziyor.
Jim Aho

Aşağıdaki Ahmed Bahtity cevabına bakın, style = "text-align: center", çok daha özlü.
Wallace Howery


10
<div style="text-align:center">
    <span>Short text</span><br />
    <span>This is long text</span>
</div>

8

Merkezlenecek inline-blocköğeye uygulamak text-align:centerve ana bloğa uygulamak benim için hile yaptı.

<span>Etiketlerde bile çalışır .


1

Aralıklarla başa çıkmak biraz zor olabilir. Öğretme aralığının genişliğini ayarlarsanız, kullanabilirsiniz

margin: 0 auto;

onları ortalamak için, ancak daha sonra farklı çizgilerde sona eriyorlar. Yapınıza farklı bir yaklaşım denemenizi öneririm.

İşte kafamın tepesinden çıkardığım jsfiddle : jsFiddle

DÜZENLE:

Adrift'in cevabı en kolay çözüm :)


0

Kemanınıza göre onları iki ayrı çizgide değil, tek bir hatta ortalamak istediğinizi varsayıyorum. Durum buysa, aşağıdaki css'yi deneyin:

 div { background:red;
      overflow:hidden;
}
span { display:block;
       margin:0 auto;
       width:200px;
}
span a { padding:5px 10px;
         color:#fff;
         background:#222;
}

Ortalamak istediğiniz için kayan noktayı kaldırdım ve sonra bunlara margin: 0 auto ekleyerek bağlantıları çevreleyen aralığı ortaladım. Son olarak, açıklığa statik bir genişlik ekledim. Bu, bağlantıları kırmızı div içindeki bir satırda ortalar.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.