2014-10-03 4 views
0

Я уже много лет борется с этим. По-видимому, использование% ширины и высоты недостаточно?Как сделать круглые круглые ссылки отзывчивыми в css?

Прямо сейчас я установил ширину и высоту 100 пикселей, а радиус границы - половину, чтобы он выглядел кругом. Высота линии устанавливается равной 100px, поэтому текст будет отображаться вертикально в середине этих кругов. Я понятия не имею, как вертикально центрировать текст по-другому ...

Как сделать это меню чувствительным, чтобы оно стало меньше по мере изменения размера экрана?

HTML:

<div id="menu"> 
<ul> 
    <li><a href="#">Link</a></li> 
    <li><a href="#">Link</a></li> 
    <li><a href="#">Link</a></li> 
    <li><a href="#">Link</a></li> 
    <li><a href="#">Link</a></li> 
</ul> 
</div> 

CSS:

#menu ul {list-style-type: none; padding: 0; margin: 0;} 
#menu li {display: inline; float: left;} 
#menu a { 
    display: block; 
    width: 100px; 
    height: 100px; 
    -moz-border-radius: 50px; 
    border-radius: 50px; 
    border: 1px #a2a2a2 solid; 
    text-transform: uppercase; 
    text-decoration: none; 
    font-size: 1em; 
    text-align: center; 
    line-height: 100px; 
    margin: 5%; 
} 
+0

узнать о '@ media' типов CSS;) –

+0

, чтобы выровнять текст по вертикали просто удалить' дисплей: блок; line-height: 100px; 'и добавить ' display: table-cell; vertical-align: средний; ' – BastianW

ответ

6

Если вы хотите истинного 'отзывчивость' вы можете использовать vw блоки, которые непосредственно связаны с шириной окна просмотра.

Jsfiddle Demo

поддержка не плохо: CanIUse.com

#menu ul { 
 
    list-style-type: none; 
 
    padding: 0; 
 
    margin: 0; 
 
} 
 
#menu li { 
 
    display: inline-block; 
 
} 
 
#menu a { 
 
    display: block; 
 
    width: 15vw; 
 
    height: 15vw; 
 
    border-radius: 50%; 
 
    border: 1px #a2a2a2 solid; 
 
    text-transform: uppercase; 
 
    text-decoration: none; 
 
    font-size: 4vw; 
 
    text-align: center; 
 
    line-height: 15vw; 
 
    margin: 5%; 
 
}
<div id="menu"> 
 
    <ul> 
 
    <li><a href="#">Link</a> 
 
    </li> 
 
    <li><a href="#">Link</a> 
 
    </li> 
 
    <li><a href="#">Link</a> 
 
    </li> 
 
    <li><a href="#">Link</a> 
 
    </li> 
 
    <li><a href="#">Link</a> 
 
    </li> 
 
    </ul> 
 
</div>

+0

Wow. Это точно так, как я этого хотел :) – ynef

+0

+1 самая простая техника. Для поддержки IE8 можно использовать технику заполнения, чтобы сохранить соотношение сторон в круге, но будет сложной задачей и потребует больше элементов HTML. –

+0

Очень приятный ответ :) IE 7 и 8 всегда неприятны. – Harry

Смежные вопросы