Центрируйте теги внутри навигационной панели div

#html #css

Вопрос:

Поэтому я создаю эту панель навигации, но у меня возникли некоторые проблемы с выравниванием элементов, позже на странице также появятся значки svg в этой панели навигации. Но я пытаюсь выровнять его вот так, но как?

Вероятно, это очень легко исправить, но я пытался выровнять по вертикали и другие вещи, но они не перемещаются туда, куда я хочу.

введите описание изображения здесь

 /*  Navigation */  .topnav {  overflow: hidden;  background: none !important; }  .topnav button {  border: none;  cursor: pointer; }  .topnav a {  color: #0f1;  text-align: center;  padding: 14px 16px;  text-decoration: none;  font-size: 17px; }  .floatLeft {  float: left; }  .floatRight {  float: right; }  .topnav a:hover {  color: #000; }  .topnav a.active {  color: #000; } 
 <!DOCTYPE html> <html lang="en"> <head>  <meta charset="UTF-8">  <meta http-equiv="X-UA-Compatible" content="IE=edge">  <meta name="viewport" content="width=device-width, initial-scale=1.0">  <title>Grundfos Metrics</title>  <link href="https://fonts.googleapis.com/css?family=Montserrat:600" rel="stylesheet">  <link rel="stylesheet" href="./css/site.scss">  <script type="text/javascript" src="./js/toggletheme.js" defer></script> </head> <body>  <header>  <div class="topnav">  <a class="floatLeft" href="#news"><h1>Website Title</h1></a>  <a class="floatRight" href="#contact">Coverage</a>  <a class="floatRight" href="#news">Archives</a>  <a class="active floatRight" href="#home">Home</a>  </div>   </header> </body> </html> 

Комментарии:

1. Удалите все поплавки и создайте это с помощью flexbox, это значительно облегчит вашу жизнь.

2. Помните, что h1 поставляется с полем по умолчанию в HTML. Переопределите его, установив значение поля 0 пикселей. Но я согласен с клонированным. Должно быть проще с flexbox

3. Вы должны научиться flex тому, что это значительно облегчает создание подобных вещей. Если вы хотите, я могу сделать вашу навигационную панель с помощью flex?

Ответ №1:

Для этого вы можете использовать flexbox.

Просто добавьте display: flex; и align-items: center; к .topnav этому .

И чтобы выровнять содержимое слева или справа, вы можете использовать два контейнера и a justify-content: space-between; на .topnav .

Это приведет к выравниванию первого контейнера по самому левому краю, а второго-по самому правому.

Но если вы добавите еще один контейнер, середина будет посередине ! А два других будут на том же месте, что и раньше

Выравнивание правой части с помощью flex также приведет к изменению порядка элементов в обратном порядке ! Так что не забудьте изменить и это тоже.

Я сделал пример для вашей навигационной панели, не стесняйтесь спрашивать, понимаете ли вы мое решение.

 /*  Navigation */  .topnav {  overflow: hidden;  background: none !important;  display: flex;  align-items: center;  justify-content: space-between; }  .topnav button {  border: none;  cursor: pointer; }  .topnav a {  color: #0f1;  text-align: center;  padding: 14px 16px;  text-decoration: none;  font-size: 17px; }  .topnav a:hover {  color: #000; }  .topnav a.active {  color: #000; } 
 <!DOCTYPE html> <html lang="en"> <head>  <meta charset="UTF-8">  <meta http-equiv="X-UA-Compatible" content="IE=edge">  <meta name="viewport" content="width=device-width, initial-scale=1.0">  <title>Grundfos Metrics</title>  <link href="https://fonts.googleapis.com/css?family=Montserrat:600" rel="stylesheet">  <link rel="stylesheet" href="./css/site.scss">  <script type="text/javascript" src="./js/toggletheme.js" defer></script> </head> <body>  <header>  <div class="topnav">  <div class="leftpart">  <a href="#news"><h1>Website Title</h1></a>  </div>  <div class="rightpart">  <a href="#contact">Coverage</a>  <a href="#news">Archives</a>  <a class="active" href="#home">Home</a>  </div>  </div>   </header> </body> </html> 

Ответ №2:

Попробуйте добавить это в свой css.

 .topnav a { line-height:17px; }  

Ответ №3:

 .topnav {  overflow: hidden;  background: none !important;  display: flex;  justify-content: space-between;  align-items: center; }  .topnav a {  color: #0f1;  padding: 14px 16px;  text-decoration: none;  font-size: 17px; }  .topnav a h1 {  margin: 0; }  .topnav a:hover {  color: #000; }  .topnav a.active {  color: #000; } 
 <body>  <header>  <div class="topnav">  <div>  <a href="#news">  <h1>Website Title</h1>  </a>  </div>  <div>  <a class="active" href="#home">Home</a>  <a href="#news">Archives</a>  <a href="#contact">Coverage</a>  </div>  </div>  </header> </body> 

В этом случае вам нужно использовать flexbox, сначала вы удаляете весь CSS с плавающей точкой и его класс, а затем используете flexbox, чтобы использовать два разных раздела для первого логотипа и второй ссылки.