Как вертикально центрировать элементы в Zurb Foundation?
Я создаю форму для входа, и я хочу, чтобы поля имени пользователя и пароля были квадратными в середине экрана. Я также использую пакет Zurb Foundation для создания этой формы. У меня много проблем с точки зрения вертикали.
Вот мой код:
<!DOCTYPE html>
<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
<meta charset="utf-8" />
<!-- Set the viewport width to device width for mobile -->
<meta name="viewport" content="width=device-width" />
<title>
Registration
</title>
<!-- Included CSS Files (Compressed) -->
<link rel="stylesheet" href="stylesheets/foundation.min.css">
<link rel="stylesheet" href="stylesheets/app.css">
<link rel="stylesheet" href="stylesheets/main.css">
<script src="javascripts/modernizr.foundation.js"></script>
<!-- IE Fix for HTML5 Tags -->
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<nav class="top-bar">
<ul>
<li class="name"><h1><a href="#">Title</a></h1></li>
<li class="toggle-topbar"><a href="#"></a></li>
</ul>
<section>
<ul class="left">
<li><a href="#">Link</a></li>
</ul>
<ul class="right">
<li><a href="#">Link</a></li>
</ul>
</section>
</nav>
<body>
<div class="row" id="parent">
<div class="six columns" id="child">
<form id = "register">
<input type="text">
</form>
</div>
</div>
<script src="javascripts/jquery.foundation.topbar.js"></script>
<!-- Included JS Files (Compressed) -->
<script src="javascripts/jquery.js"></script>
<script src="javascripts/foundation.min.js"></script>
<!-- Initialize JS Plugins -->
<script src="javascripts/app.js"></script>
</body>
</html>
И некоторые CSS, с которыми я играл, но еще не приступили к работе:
body {
/*background-image: url('../images/gplaypattern.png');*/
background: red;
}
#register {
background-color: black;
width:80%;
}
#parent {
position: absolute;
left: 50%;
top: 50%;
height: 80px;
}
#child {
height: 75px;
position:absolute;
top: 50%;
background: green;
}
Сложно, если я изменяю высоту чего-то динамического (т.е. height: 30%;
), это не работает, почему?
Ответы
Ответ 1
UPDATE
Эта функция включена в качестве компонента (xy-center) в будущую версию Foundation. Подробнее о Github.
Если вы используете более старую версию Foundation, используя метод CSS Tricks centering, вертикально и горизонтально центрировать форму входа с помощью минимальное количество разметки CSS/HTML.
HTML
<div class="row" >
<div class="small-12 medium-6 columns" id="login">
<form >
<div class="row collapse">
<div class="small-12 medium-5 columns">
<input type="text" name="username" placeholder="Username" />
</div>
<div class="small-12 medium-5 columns">
<input type="password" name="password" placeholder="Password" />
</div>
<div class="small-12 medium-2 small-centered medium-uncentered columns">
<a href="#" class="button postfix">Go</a>
</div>
</div>
</form>
</div>
</div>
CSS
#login {
position: absolute;
left: 50%;
top: 50%;
/*
* Where the magic happens
* Centering method from CSS Tricks
* http://css-tricks.com/centering-percentage-widthheight-elements/
*/
transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
}
Результат
Форма входа останется центрированной по вертикали и горизонтали независимо от экрана. Вот скриншот результата.
![enter image description here]()
И работающий jsFiddle
Ответ 2
Фонд не справляется с вертикальным выравниванием: https://github.com/zurb/foundation/issues/411.
Вы можете аппроксимировать его с помощью вертикальной прокладки, но для динамического содержимого нет аккуратного пути.
Следующий jsFiddle (не созданный мной) показывает, как он должен работать, используя
div {
display: table-cell;
vertical-align: middle;
height: 50px;
border: 1px solid red;
}
http://jsfiddle.net/53ALd/6/ - но это не будет связано с остальной частью CSS-основы.
Ответ 3
Проблема в том, что HTML/CSS не справляется с вертикальным центрированием. Zurb Foundation не собирается вам помогать или причинять вам боль в этом отношении.
См. этот очень похожий вопрос Создание вертикального и горизонтально центрированного html-div