CSS网格导航栏!如何对齐中间附近的2个div,并在网站延伸范围的最左边和右边有1列?

问题描述 投票:0回答:1

我对Web开发还很陌生,但是我很开心。我只是在努力弄清楚如何有效地做到这一点。我正在尝试使用CSS网格制作响应式导航栏,尽管我尚未真正了解响应式功能。目前,我有2个Divs,navbar(我的导航链接)和settings(尚不确定我在做什么),其中包括选项,例如主题选项),我需要将这2个div居中,并在左右两边有一个列,当窗口被拉伸得足够远时,该列会跨越。

[如果可能,我还需要一些样式设置导航链接,即使添加了[[text-decoration:none;,我仍在努力摆脱下划线。这也是我第一次使用StackOverflow,所以请告诉我我在这里做错了什么。

HTML

<head> <title>EminaReads</title> <link id="theme" rel="stylesheet" /> </head> <body onload="CheckTheme()"> <div hidden id="loading-wrapper"> <header> <nav> <ul> <li> <a class="active" href="#">Homepage</a> </li> <li> <a href="#">Follow</a> </li> <li> <a href="#">Info</a> </li> </ul> </nav> <div class="settings"> <select id="theme-select"> <option hidden>Select Theme</option> <option onclick="SwapTheme('./styles/Dark.css')" value="Dark"> Dark </option> <option onclick="SwapTheme('./styles/Light.css')" value="Light"> Light </option> </select> </div> </header> <main> <div class="blog"> <h2>Blog update1</h2> <h2>Blog update2</h2> </div> <aside> <p>Discord Link</p> <p>Music Player</p> </aside> </main> <footer> <p>Testing Footer</p> </footer> </div> <p id="js-alert">JAVASCRIPT</p> </body> </html>
CSS

html { scroll-behavior: smooth; } body { margin: 0; font-family: Arial, Helvetica, sans-serif; background-color: rgb(119, 119, 119); } /* Navigation System */ header { position: sticky; top: 0px; display: grid; grid-template-columns: repeat(5, 1fr); grid-template-rows: 1fr; background-color: rgb(59, 59, 59); box-shadow: 0 4px 2px -2px rgba(0, 0, 0, 0.25); } nav { margin: 0; padding: 0; grid-area: 1 / 2 / 2 / 4; } nav li { display: inline; } nav li a.active { background-color: #4caf50; } nav li a:hover:not(.active) { background-color: #111; } /* Settings */ .settings { grid-area: 1 / 4 / 2 / 6; } /* Content */ main { display: grid; grid-template-columns: repeat(8, 1fr); grid-template-rows: repeat(8, 1fr); } .blog { grid-area: 2 / 2 / 8 / 7; } aside { grid-area: 2 / 7 / 8 / 9; } footer { margin-top: 1000px; background-color: grey; }
Javascript

function CheckTheme() { if (localStorage.savedtheme !== null) { document .getElementById("theme") .setAttribute("href", localStorage.savedtheme); console.log("if"); } else { document.getElementById("theme").setAttribute("href", "./styles/Dark.css"); console.log("else"); } console.log("other"); document.getElementById("loading-wrapper").removeAttribute("hidden"); document.getElementById("js-alert").style.display = "none"; } function SwapTheme(style) { document.getElementById("theme").setAttribute("href", style); localStorage.setItem("savedtheme", style); } 参见SakuraYagami的笔 EminaReads@SakuraYagami)在CodePen上。

javascript html css navigationbar
1个回答
0
投票
我需要将这2个div居中,并且在左右两边都有一列,当窗口被拉伸得足够远时,该列会跨越。

为此,您必须添加2个元素,一个在导航上方,一个在div下方,并带有“设置”类,然后使用网格区域为它们提供一些尺寸。请记住,网格只能与显示:声明网格的元素的直接子代一起使用。

就删除下划线而言,CSS是正确的,只需确保使用以下方法选择正确的元素即可:

nav ul li { text-decoration: none; }

希望这会有所帮助!
© www.soinside.com 2019 - 2024. All rights reserved.