gpt4 book ai didi

html - 响应式设计的两个导航类?

转载 作者:搜寻专家 更新时间:2023-10-31 08:50:52 25 4
gpt4 key购买 nike

<分区>

我已经研究了一个月的网页设计基础知识,并且一直在尝试为一个虚构的网站创建语义正确的响应式 header 。我今天编写的代码创建了我想要的外观,但问题是我不确定代码是否真的很好,我是否走在正确的道路上。

// Sidenav Toggle //
function togNav() {
"use strict";
var side = document.getElementById("sidenav"),
main = document.getElementById("container");

if (side.style.transform === "translateX(0%)") {
side.style.transform = "translateX(-100%)";
main.style.transform = "translateX(0%)";
} else {
side.style.transform = "translateX(0%)";
main.style.transform = "translateX(40%)";
}
}
/* Side Navigation */

#sidenav {
/* Styling */
width: 40%;
height: 100%;
background: #fff;
box-shadow: 0 0 1rem rgba(0, 0, 0, 0.3);
/* Positioning */
top: 0;
z-index: 2;
position: fixed;
/* UX */
transition: 0.3s;
transform: translateX(-100%);
}

#sidenav a {
padding: 3rem;
display: block;
}

#sidenav a:hover {
color: #8cc63e;
transition: 0s;
}


/* /////////////////////////////////////////////////// */
/* ////////////////////// HEADER ///////////////////// */
/* /////////////////////////////////////////////////// */


/* Header - Container */

header {
/* Styling */
height: 50rem;
background: lightblue;
}


/* Header - Small Navigation */

header>nav.small {
/* Styling */
background: #fff;
box-shadow: 0 0 1rem rgba(0, 0, 0, 0.3);
}

header>nav.small>.wrapper {
/* Styling */
height: 8rem;
padding: 0 3rem;
/* Flexbox */
display: flex;
align-items: center;
justify-content: space-between;
}

header>nav.small #burger {
cursor: pointer;
transition: 0.3s;
}

header>nav.small #burger .bar {
/* Style */
width: 2.25rem;
height: 0.3rem;
background: #000;
margin-top: 0.4rem;
}


/* Header - Large Navigation */

header>nav.large {
/* Styling */
background: #fff;
box-shadow: 0 0 1rem rgba(0, 0, 0, 0.3);
}

header>nav.large>.wrapper {
/* Styling */
height: 8rem;
margin: auto;
padding: 0 3rem;
max-width: 96rem;
/* Flexbox */
display: flex;
align-items: center;
justify-content: space-between;
}

header>nav.large ul li {
display: inline-block;
}

header>nav.large ul li a {
padding-left: 4.5rem;
}

header>nav.large ul li a:hover {
color: #8cc63e;
}


/* Header - Media Queries */

@media only screen and (min-width: 600px) {
header>nav.small {
display: none;
}
}

@media only screen and (max-width: 600px) {
header>nav.large {
display: none;
}
}


/* General Styling */

html {
font-size: 62.5%;
}

body,
a {
margin: 0;
color: #333;
font-size: 1.6rem;
font-family: "Source Sans Pro";
text-decoration: none;
}

#container {
transition: 0.3s;
}
<!-- Off Canvas -->
<div id="sidenav">
<a href="#">Link 1</a>
<a href="#">Link 2</a>
<a href="#">Link 3</a>
<a href="#">Link 4</a>
</div>

<!-- On Canvas -->
<div id="container">
<header>
<nav class="small">
<div class="wrapper">
<div id="burger" onclick="togNav()">
<div class="bar bar1"></div>
<div class="bar bar2"></div>
<div class="bar bar3"></div>
</div>
<a href="#" class="logo">
Logo
</a>
</div>
</nav>
<nav class="large">
<div class="wrapper">
<a href="#" class="logo">
Logo
</a>
<ul>
<li><a href="#">Link 1</a></li>
<li><a href="#">Link 2</a></li>
<li><a href="#">Link 3</a></li>
<li><a href="#">Link 4</a></li>
</ul>
</div>
</nav>
</header>
</div>

View on CodePen

如您所见,我使用了两个导航类来为大屏幕创建一个内联导航栏,为小屏幕创建一个带有 Canvas 侧边导航的顶部栏。我使用 Flexbox 来对齐元素和 Javascript 来显示侧面导航。

问题
我的问题是:为一个介绍性标题类使用两个导航类在语义上是否正确?或者,我猜是否有一种更好的方法来获得我试图用更少的代码获得的结果?感觉太不对劲了。

希望我的问题不是太含糊。 Google 和 StackOverflow 上的其他问题并没有真正帮助我找到解决方案,所以我希望你们可以。另外,如果您发现我的其余代码有任何奇怪或不好的地方,请告诉我!我对此很陌生,我真的很想在这方面做得更好。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com