[英]Off center flexbox nav item
我在頁腳中的中央導航項偏離中心,因此我不確定如何居中,同時仍保持鏈接之間的空間相同。 我將其居中的方法是添加margin-right: 45px
,如在css文件的最底部所示(在codepen中已注釋掉)。 額外的余量會拋出均勻的間距。
在中間鏈接居中放置的同時,如何在所有三個鏈接之間保持均勻間距的同時,使nav容器保持柔韌性?
我什至不確定我要做什么會看起來不錯。 由於左右鏈接的文本長度不同,這可能會使整個導航欄看起來偏離中心。我很沮喪,因為我無法弄清楚該怎么做。
https://codepen.io/pmc222/full/bxzGyy/
的HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="wedding-index.css">
<link href="https://fonts.googleapis.com/css?family=Great+Vibes" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700" rel="stylesheet">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css" integrity="sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU" crossorigin="anonymous">
<title>Mc-Stamm Wedding</title>
</head>
<body>
<header class="main-header">
<i class="fas fa-heart"></i>
<a class="main-header__link" href="index.html">The Mc-Stamm Wedding</a>
<i class="fas fa-heart"></i>
</header>
<main class="main-container">
<div class="main-container__image main-container__image-one"><img src="http://www.freegreatpicture.com/files/146/25102-colorful-high-resolution-background.jpg" alt="Walking down beach to the proposal"></div>
<div class="main-container__image main-container__image-two"><img src="http://www.freegreatpicture.com/files/146/25102-colorful-high-resolution-background.jpg" alt="Close to the proposal spot"></div>
<div class="main-container__image main-container__image-three"><img src="http://www.freegreatpicture.com/files/146/25102-colorful-high-resolution-background.jpg" alt="Before kneeling"></div>
<div class="main-container__image main-container__image-four"><img src="http://www.freegreatpicture.com/files/146/25102-colorful-high-resolution-background.jpg" alt="Proposing"></div>
<div class="main-container__image main-container__image-five"><img src="http://www.freegreatpicture.com/files/146/25102-colorful-high-resolution-background.jpg" alt="She said yes!"></div>
<div class="main-container__image main-container__image-six"><img src="http://www.freegreatpicture.com/files/146/25102-colorful-high-resolution-background.jpg" alt="Hugging"></div>
<div class="main-container__image main-container__image-seven"><img src="http://www.freegreatpicture.com/files/146/25102-colorful-high-resolution-background.jpg" alt="Kissing"></div>
<div class="main-container__image main-container__image-eight"><img src="http://www.freegreatpicture.com/files/146/25102-colorful-high-resolution-background.jpg" alt="Dramatic kiss"></div>
<div class="main-container__image main-container__image-nine"><img src="http://www.freegreatpicture.com/files/146/25102-colorful-high-resolution-background.jpg" alt="Walking back down beach"></div>
<div class="main-container__image main-container__image-ten"><img src="https://us.123rf.com/450wm/portocala/portocala1612/portocala161200021/67690040-abstract-geometric-background-circle-generic-backdrop-for-design-square-template-vector.jpg?ver=6" alt="Engaged couple"></div>
<p class="main-container__paragraph main-container__paragraph-one">Please join us</p>
<p class="main-container__paragraph main-container__paragraph-two">September 28, 2019</p>
</main>
<footer class="main-footer">
<nav class="main-nav">
<a class="main-nav__link" href="venue-information.html">Venue Information</a>
<a class="main-nav__link" href="accommodations.html">Accommodations</a>
<a class="main-nav__link" href="wedding-party.html">Wedding Party</a>
</nav>
</footer>
</body>
</html>
的CSS
/* Wedding Index CSS */
/* browser reset */
html {
box-sizing: border-box;
font-size: 16px;
}
*, *:before, *:after {
box-sizing: inherit;
}
body, h1, h2, h3, h4, h5, h6, p, ol, ul {
margin: 0;
padding: 0;
font-weight: normal;
}
img {
max-width: 100%;
height: auto;
}
/* end of browser reset */
body {
width: 100vw;
height: 100vh;
max-width: 100%;
overflow-x: hidden;
overflow-y: hidden;
}
/* Makes <header> element a flexbox */
.main-header {
display: flex;
justify-content: center;
align-items: baseline;
height: auto;
width: 100%;
background: rgb(255, 255, 255);
}
/* Styles index link */
.main-header__link {
text-decoration: none;
font-family: 'Great Vibes', cursive;
font-size: 2rem;
letter-spacing: 0.1em;
color: rgb(0, 0, 0);
}
/* Styles and positions icons */
.fas {
font-size: 1.8rem;
padding: 15px;
}
/* Makes <main> element a grid-box */
.main-container {
display: grid;
grid-template: repeat(28, auto) / repeat(100, 1fr);
width: 100%;
background: linear-gradient(rgb(42, 136, 212), rgb(255, 255, 255), rgb(42, 136, 212));
padding: 20px;
}
/* Transition: scale() duration for div containing images */
.main-container__image {
transition: ease .3s;
}
/* Styles images inside div's */
.main-container__image img {
border: 2px solid rgb(255, 255, 245);
border-radius: 20px;
}
/* Positions div's on grid and controls overlap depth */
.main-container__image-one {
grid-area: 1 / 1 / 9 / 13;
z-index: 1;
}
.main-container__image-two {
grid-area: 6 / 12 / 14 / 24;
z-index: 2;
}
.main-container__image-three {
grid-area: 11 / 23 / 19 / 35;
z-index: 3;
}
.main-container__image-four {
grid-area: 16 / 34 / 24 / 46;
z-index: 4;
}
.main-container__image-five {
grid-area: 21 / 45 / 29 / 57;
z-index: 5;
}
.main-container__image-six {
grid-area: 16 / 56 / 24 / 68;
z-index: 4;
}
.main-container__image-seven {
grid-area: 11 / 67 / 19 / 79;
z-index: 3;
}
.main-container__image-eight {
grid-area: 6 / 78 / 14 / 90;
z-index: 2;
}
.main-container__image-nine {
grid-area: 1 / 89 / 9 / 101;
z-index: 1;
}
.main-container__image-ten {
grid-area: 1 / 43 / 16 / 59;
}
/* End of positioning rules */
/* Makes primary image a circle */
.main-container__image-ten img {
border-radius: 50%;
}
/* Set scale size and depth of hovered image div's */
.main-container__image:hover {
transform: scale(3.9);
z-index: 6;
}
/* The following rules position scaled image div's on hover */
.main-container__image-one:hover {
transform-origin: 0% 3%;
}
.main-container__image-two:hover {
transform-origin: 30% 25%;
}
.main-container__image-three:hover,
.main-container__image-seven:hover {
transform-origin: 50% 47%;
}
.main-container__image-four:hover,
.main-container__image-six:hover {
transform-origin: 50% 69%;
}
.main-container__image-five:hover {
transform-origin: 50% 92%;
}
.main-container__image-eight:hover {
transform-origin: 70% 25%;
}
.main-container__image-nine:hover {
transform-origin: 100% 3%;
}
.main-container__image-ten:hover {
transform-origin: 50% 7%;
transform: scale(2); /* Changed scale for primary image div */
}
/* End of positioning rules for scaled image div's */
/* Changes primary image border shape from circle to same as other image div's on hover */
.main-container__image-ten:hover img {
border-radius: 20px;
}
/* Styles "Please join us" and "September 28, 2019" */
.main-container__paragraph {
color: rgb(255, 255, 255);
font-family: "Great Vibes", cursive;
font-size: 2.5rem;
letter-spacing: 0.1em;
}
/* Positions "Please join us" on grid */
.main-container__paragraph-one {
grid-area: 23 / 9 / 27 / 26;
}
/* Positions "September 28, 2019" on grid */
.main-container__paragraph-two {
grid-area: 23 / 72 / 27 / 97;
}
/* Style and positons <footer> element */
.main-footer {
width: 100%;
height: auto;
background: rgb(255, 255, 255);
padding-top: 30px;
}
/* Makes <nav> container a flexbox and positions flex items */
.main-nav {
display: flex;
height: auto;
width: 100%;
justify-content: space-evenly;
align-items: center;
}
/* Styles link flex items */
.main-nav__link {
text-decoration: none;
color: rgb(0, 0, 0);
font-family: "Montserrat", sans-serif;
letter-spacing: 0.3em;
}
/* .main-nav__link:nth-of-type(2) {
margin-right: 45px; /* pushed middle link more toward center, but disrupted space-evenly positioning */
} */
您可以將中間鏈接居中,並在項目之間保持均勻的間距,如下所示:
.main-nav__link:not(:nth-of-type(2)) { flex: 1; }
.main-nav__link:first-child { text-align: right; }
.main-nav__link:nth-of-type(2) { margin: 0 10%; } /* Or any other value */
.main-nav__link:last-child { text-align: left; }
並刪除.main-nav
:
justify-content: space-evenly;
flex: 1;
屬性會告訴您的物品占用剩余空間。 由於使用此代碼,您的第一個項目和最后一個項目都具有此屬性,因此它們將平均分配剩余空間,從而將中間項目推到中間。
請注意,使用此解決方案時,由於中間項目上設置了margins
,因此響應可能會有點破損。 如果您希望它具有完全響應性,則可能需要使用media-query
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.