Я новичок в html и css, я начал создавать веб-сайт, поэтому начал с правильного размещения логотипа и фона, теперь проблема в том, что я не могу вертикально центрировать свой логотип.
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" type="text/css" href="css/style.css">
<title>Insert title here</title>
</head>
<body>
<div class="bg">
<div class="menu">
<div class="logo"></div>
</div>
</div>
</body>
</html>
CSS:
body {
background:url(../img/bg.png) no-repeat center center fixed;
-moz-background-size: cover;
-webkit-background-size: cover;
-o-background-size: cover;
background-size: cover;
z-index:1000;
}
body {
margin:0 ;
padding:0;
height: 100%;
width: 100%;
}
.menu {
background:url(../img/MenuBar.png) ;
height:150px;
width:1242px;
position:relative;
}
.logo {
background:url(../img/Untitled-1.png) no-repeat center;
width:262px;
height:80px;
margin:0 auto;
}
Это должно сделать трюк.
.menu {
background:url(../img/MenuBar.png) ;
height:150px;
width:1242px;
position:relative;
display: table;
}
.logo{
background:url(../img/Untitled-1.png) no-repeat center;
width:262px;
height:80px;
margin:0 auto;
display: table-cell;
vertical-align: middle;
}
margin:0 auto;
, поэтому margin-left
и margin-right
являются бессмысленными повторениями. Блок display:block
должен быть уже установлен по умолчанию с помощью div
, но это может повлиять на нечетное правило CSS, поэтому это может сработать.
Учитывая, что вы хотите, чтобы работа была центрирована по вертикали, единственным ответом на данный момент является дать .menu
styling vertical-align:middle
. Это не сработает. Чтобы центрировать по вертикали, вам нужно использовать трюк position
. Вы даете позиции position:absolute
, тогда вы говорите ей, что она должна быть top:50%
, которая поместит верхнюю часть этого предмета на 50% вниз.
Мы хотим, чтобы центр предмета находился в центре контейнера, но не сверху, чтобы быть в центре. Поэтому мы, наконец, добавляем margin-top
отрицательного значения. Это отрицательное значение составляет половину высоты объекта, в этом случае 80px
/2 = 40px
. Чтобы центрировать по горизонтали, нам нужно будет сделать то же самое. margin:0 auto
не будет работать, учитывая, что он позиционируется абсолютно.
В итоге вы измените это:
.logo {
background:url(../img/Untitled-1.png) no-repeat center;
width:262px;
height:80px;
margin:0 auto;
}
К этому:
.logo {
background:url(../img/Untitled-1.png) no-repeat center;
width:262px;
height:80px;
position:absolute;
top:50%;
margin-top:-40px;
left:50%;
margin-left:-131px;
}
.menu
является объектом фиксированной ширины. Это означает, что он не отзывчив и не изменится. На небольших экранах вы получите горизонтальные полосы прокрутки. Тем не менее, логотип всегда, независимо от размера экрана, будет центрирован внутри .menu
. Вы даже можете, если хотите, изменить .menu
на гибкую, и приведенный выше код будет работать.
Создайте содержащий div, используя тот же метод "margin-left: auto; margin-right: auto"
или "margin: 0 auto"
вы использовали. Как это:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" type="text/css" href="css/style.css">
<title>Insert title here</title>
<style>
body{
-moz-background-size: cover;
-webkit-background-size: cover;
-o-background-size: cover;
background-size: cover;
z-index:1000;
}
#container {
}
#bg {
margin: 0 auto;
width: 25%;
}
#menu{
background-color: green;
height:150px;
width:600px;
}
#logo{
background-color: blue;
width:262px;
height:80px;
margin:0 auto;
}
</style>
</head>
<body>
<div id="container">
<div id="bg">
<div id="menu">
<div id="logo"></div>
</div>
</div>
</div>
</body>
</html>
<div class="bg">
, но ваш стиль применяется непосредственно кbody
, поэтому он вам не нужен. Во-вторых, вам не нужно разделять стили, применяемые кbody
, все они могут сочетаться. В-третьих,body
имеетz-index
, который ничего не будет делать, если только у него нетposition:relative
илиposition:absolute
.