html - 如何防止 ::after 元素拉伸页面大小?
问题描述
我正在为我的新网站设计一个结构,我需要倾斜的导航栏来匹配我给出的设计。由于我使用 Bootstrap,因此我使用了标准导航栏模板,其中的选项使用ml-auto
. 我还需要最后一个元素在末端有一个垂直边缘。
我是这样实现的:
.main-nav ui{
width: 100%;
height: auto;
}
.main-nav li{
display: inline-block;
margin-right: -4px;
width: 100px;
}
.nav-item a{
position: relative;
background-color: mediumblue;
box-sizing: border-box;
display: block;
transform: skewX(25deg);
width: 100%;
min-height: 3em;
text-align: center;
}
.nav-item:last-of-type a::after{
content:"";
position: absolute;
background: mediumblue;
top:0;
bottom: 0;
left: 82%;
width: 30%;
transform: skewX(-25deg);
}
.main-nav .active a, .main-nav .active a::after {
background-color: blue;
}
.main-nav a:hover, .main-nav a:hover::after{
background-color: dodgerblue;
}
.button-label {
position: absolute;
box-sizing: border-box;
transform: translate(-50%, -50%) skewX(-25deg);
top: 50%;
left: 50%;
}
<div class="collapse navbar-collapse main-nav" id="navbarSupportedContent">
<ul class="navbar-nav ml-auto">
<li class="nav-item active">
<a class="nav-link" href="#"><span class="button-label">Home <span class="sr-only">(current)</span></span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="#"><span class="button-label">Link</span></a>
</li>
<li class="nav-item">
<a class="nav-link disabled" href="#"><span class="button-label">Disabled</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="#"><span class="button-label">About</span></a>
</li>
</ul>
</div>
该解决方案总体上看起来很棒,但是该::after
元素会导致页面变宽。实际上整个网站的右边缘有丑陋的空条,浏览器显示水平滚动条。有没有办法防止它发生?
解决方案
推荐阅读
- split - 我如何在 AnyLogic 中拆分我的代理,以便一个始终使用一项服务,然后其他人使用另一项服务?
- c# - 尝试使用其他表单的功能但无法正常工作
- java - MySQLNonTransientConnectionException:客户端不支持服务器请求的认证协议;考虑升级 MySQL 客户端
- c# - 在音频文件中为给定持续时间添加哔声或静音 || 南音频 || C#
- angular - 获取 Angular 自动完成值
- ios - UIImage 和 prepareforSegue 无法传递图像
- http - Axios 发送错误的 cookie (CORS)
- google-bigquery - Airflow BigQueryOperator:如何将查询结果保存在分区表中?
- unity3d - unity mesh 第一次渲染时为什么会增加内存?
- android - OnDataChange 方法被调用并报告空对象