javascript - 响应式导航栏 - 单击时移动的下拉符号
问题描述
我正在创建一个响应式导航栏,其下拉菜单取代了“主页、关于、服务等”。菜单选项。我要离开这个 W3Schools 示例。
我的问题是fa-caret
下拉图标显示在我的徽标旁边(在小于 750 像素的屏幕上),但是当我单击该图标时,它会跳转到页面的右侧。
我尝试将下拉选项分成 div 并使用 flexbox 并浮动图标,但似乎没有任何效果。我需要将公司徽标放在左侧,并希望菜单保持固定在右侧。
body {
margin: 0;
background: rgb(17, 58, 93);
}
* {
box-sizing: border-box;
margin-right: auto;
margin-left: auto;
font-family: 'Lato', sans-serif;
}
/* Social Nav */
.social-nav {
height: 25px;
background: rgb(255, 231, 113);
position: fixed;
width: 100%;
z-index: 1;
display: flex;
align-items: center;
justify-content: space-between;
}
.social-nav-text {
font-size: 14px;
color: rgb(17, 58, 93);
font-family: 'Montserrat', sans-serif;
}
.social-nav-text a {
text-decoration: none;
color: rgb(17, 58, 93);
}
.social-nav-icon {
height: 12px;
margin: auto 5px;
}
.social-nav-social {
margin: 0 auto 0 25px;
display: none;
}
.social-nav-phone {
margin: 0 25px 0 auto;
}
/* Main Nav */
.main-nav {
overflow: hidden;
position: fixed;
z-index: 1;
}
.main-nav a {
float: left;
display: block;
color: #ffffff;
text-align: center;
padding: 14px 16px;
text-decoration: none;
font-size: 14px;
}
.main-nav-logo {
height: 95px;
margin-top: 35px;
}
.main-nav a:hover {
color: rgb(255, 231, 113);
font-weight: bold;
}
.main-nav a.active {
color: rgb(17, 58, 93);
}
.main-nav .icon {
display: none;
margin-top: 90px;
}
/* Mobile Style */
@media only screen and (max-width: 400px) {
.main-nav a:not(:first-child) {
display: none;
}
.main-nav a.icon {
float: right;
display: block;
}
.main-nav.responsive {
position: relative;
}
.main-nav.responsive .icon {
position: absolute;
right: 0;
top: 0;
}
.main-nav.responsive a {
float: none;
display: block;
text-align: left;
}
}
/* Tablet Style */
@media only screen and (min-width: 401px) and (max-width: 750px) {
.main-nav a:not(:first-child) {
display: none;
}
.main-nav a.icon {
float: right;
display: block;
}
.main-nav.responsive {
position: relative;
}
.main-nav.responsive .icon {
position: absolute;
right: 0;
top: 0;
}
.main-nav.responsive a {
float: none;
display: block;
text-align: left;
}
}
/* Desktop Style */
@media only screen and (min-width: 751px) {
/* Social Nav */
.social-nav {
height: 35px;
}
.social-nav-text {
font-size: 16px;
}
.social-nav-icon {
height: 14px;
}
.social-nav-social {
display: flex;
}
/*Main Nav */
.main-nav-logo {
margin: 50px auto auto 25px;
}
.main-nav-page {
margin-top: 100px;
}
}
<div class="social-nav">
<div class="social-nav-social">
<p class="social-nav-text"><i>FOLLOW US! <a href="http://instagram.com/profeservice" target="_blank"> <img class="social-nav-icon" src="images/icons/instagram-icon.png" alt="Instagram" /> /profeservice</a> <a href="https://www.facebook.com/The-Service-Professional-110770558329" target="_blank"> <img class="social-nav-icon" src="images/icons/facebook-icon.png" alt="Facebook" /> /The-Service-Professional</a></i></p>
</div>
<div class="social-nav-phone">
<p class="social-nav-text"><i>Call us now! <a href="tel:+18055241526"><img class="social-nav-icon" src="images/icons/telephone-icon.png" alt="Telephone" />(805) 524-1526</a></i></p>
</div>
</div>
<div class="main-nav" id="main-navigation">
<a href="" class="active"><img class="main-nav-logo" src="images/logo/Logo.svg" alt="Logo" /></a>
<a href="" class="main-nav-page">Home</a>
<a href="about.html" class="main-nav-page">About</a>
<a href="services.html" class="main-nav-page">Services</a>
<a href="products.html" class="main-nav-page">Products</a>
<a href="contact.html" class="main-nav-page">Contact</a>
<a href="javascript:void(0);" class="icon" onclick="myFunction()">
<i class="fa fa-bars"></i>
</a>
</div>
<script type="text/javascript">
function myFunction() {
var x = document.getElementById("main-navigation");
if (x.className === "main-nav") {
x.className += " responsive";
} else {
x.className = "main-nav";
}
}
</script>
我希望下拉图标保持固定在页面的右侧,无论它是否处于活动状态。
解决方案
是什么原因导致position: fixed
的.main-nav
。使用时,必须显式设置width
.
添加width: 100%
到.main-nav
它应该可以按预期工作。
推荐阅读
- android - 在 Android Studio 中更改 Google App Script 代码时是否需要更新 Play Store 应用程序?
- bash - v 开关在 bash 函数中不起作用(-v 开关)
- python - Tensorflow:model.fit() 第一个 epoch 需要很长的初始化时间
- xamarin - 使用 aries-mobileagent-xamarin / aries-framework-dotnet 创建凭据请求时出错
- java - Spring Security 错误:没有名为“springSecurityFilterChain”的 bean
- javascript - 如何使用 ES6 为隐藏的输入字段添加值
- version-control - 当没有任何更改时,Mercurial 合并失败并出现“未提交的更改”
- java - java.lang.IncompatibleClassChangeError:Primitives 没有实现请求的接口 org.apache.beam.vendor.grpc.v1p21p0.com.google.protobuf
- javascript - 在 html datalist 中加载本地 xml 文件
- google-cloud-platform - 面临创建存储桶的问题