问题描述
限时送ChatGPT账号..我创建了一些虚拟的面包屑步骤.第一个面包屑步骤需要在左侧有一个正常的平面边框,这就完成了.在悬停时,我需要为每个面包屑项目显示黑色边框.
但唯一的问题是悬停时,对于第一个面包屑步骤,我没有按预期在左侧获得平坦的边框.
以下是悬停时的预期:
这是我的代码:
body {填充:0;边距:0;}.面包屑 {背景颜色:白色;宽度:100%;填充:0 1rem;字体大小:0;保证金:1rem;}.breadcrumbs .breadcrumb-step {显示:内联块;宽度:12.33%;高度:5rem;文字装饰:无;颜色:黑色;}.step-title {显示:无;}.breadcrumb-step:before {内容: '';显示:块;变换:倾斜(30度);边框:1px纯浅灰色;边框底部:无;高度:50%;宽度:100%;}.breadcrumb-step:after {内容: '';显示:块;变换:倾斜(-30度);边框:1px纯浅灰色;边框顶部:无;高度:50%;宽度:100%;}.breadcrumb-step:hover:before {边框颜色:黑色;}.breadcrumb-step:hover:after {边框颜色:黑色;}.breadcrumb-step:nth-child(1):before {变换:无;边界右:无;}.breadcrumb-step:nth-child(1):after {变换:无;边界右:无;}.breadcrumb-step:nth-child(1):hover:before {变换:倾斜(30度);右边框:1px纯黑色;}.breadcrumb-step:nth-child(1):hover:after {变换:倾斜(-30度);右边框:1px纯黑色;}/*.breadcrumb-step:nth-child(1) {边框:1px纯浅灰色;}.breadcrumb-step:nth-child(1):before {变换:无;边界:无;}.breadcrumb-step:nth-child(1):after {变换:无;边界:无;}*/
<a class="breadcrumb-step" href="#"><span class="step-title">首页</span></a><a class="breadcrumb-step" href="#"><span class="step-title">关于</span></a><a class="breadcrumb-step" href="#"><span class="step-title">联系我们</span></a>
解决方案 您可以调整transform-origin然后隐藏倾斜元素的溢出部分并在悬停时更改第一个孩子的左边框:
body {边距:0;}.面包屑 {背景颜色:白色;宽度:100%;填充:0 1rem;字体大小:0;保证金:1rem;}.breadcrumbs .breadcrumb-step {显示:内联块;宽度:12.33%;高度:5rem;文字装饰:无;颜色:黑色;}/*添加这个*/.breadcrumbs .breadcrumb-step:first-child {宽度:15.33%;溢出:隐藏;左边框:1px 纯色浅灰色;}/**/.step-title {显示:无;}.breadcrumb-step:before,.breadcrumb-step:after {内容: '';显示:块;高度:50%;box-sizing:border-box;宽度:100%;边框:1px纯浅灰色;}.breadcrumb-step:before {变换:倾斜(30度);变换原点:右下角;/*添加这个*/边框底部:无;}.breadcrumb-step:after {变换:倾斜(-30度);变换原点:右上;/*添加这个*/边框顶部:无;}/*添加这个*/.breadcrumb-step:hover:before,.breadcrumb-step:hover:after,.breadcrumbs .breadcrumb-step:first-child:hover{边框颜色:黑色;}
<a class="breadcrumb-step" href="#"><span class="step-title">首页</span></a><a class="breadcrumb-step" href="#"><span class="step-title">关于</span></a><a class="breadcrumb-step" href="#"><span class="step-title">联系我们</span></a>
I've created some dummy breadcrumb-steps. The 1st breadcrumb-step need to have a normal flat border on the left, which is done. And on hover, I need to show the black border for each breadcrumb item.
But the only problem is on hover, for the 1st breadcrumb-step, I don't get that flat border on the left as expected.
Here's what is expected on hover:
Here's my code:
body {
padding: 0;
margin: 0;
}
.breadcrumbs {
background-color: white;
width: 100%;
padding: 0 1rem;
font-size: 0;
margin: 1rem;
}
.breadcrumbs .breadcrumb-step {
display: inline-block;
width: 12.33%;
height: 5rem;
text-decoration: none;
color: black;
}
.step-title {
display: none;
}
.breadcrumb-step:before {
content: '';
display: block;
transform: skew(30deg);
border: 1px solid lightgrey;
border-bottom: none;
height: 50%;
width: 100%;
}
.breadcrumb-step:after {
content: '';
display: block;
transform: skew(-30deg);
border: 1px solid lightgrey;
border-top: none;
height: 50%;
width: 100%;
}
.breadcrumb-step:hover:before {
border-color: black;
}
.breadcrumb-step:hover:after {
border-color: black;
}
.breadcrumb-step:nth-child(1):before {
transform: none;
border-right: none;
}
.breadcrumb-step:nth-child(1):after {
transform: none;
border-right: none;
}
.breadcrumb-step:nth-child(1):hover:before {
transform: skew(30deg);
border-right: 1px solid black;
}
.breadcrumb-step:nth-child(1):hover:after {
transform: skew(-30deg);
border-right: 1px solid black;
}
/*
.breadcrumb-step:nth-child(1) {
border: 1px solid lightgrey;
}
.breadcrumb-step:nth-child(1):before {
transform: none;
border: none;
}
.breadcrumb-step:nth-child(1):after {
transform: none;
border: none;
}
*/
<div class="breadcrumbs">
<a class="breadcrumb-step" href="#"><span class="step-title">Home</span></a>
<a class="breadcrumb-step" href="#"><span class="step-title">About</span></a>
<a class="breadcrumb-step" href="#"><span class="step-title">Contact Us</span></a>
</div>
解决方案
You can adjust the transform-origin then hide the overflowing part of the skewed element and change the left border of the first child on hover:
body {
margin: 0;
}
.breadcrumbs {
background-color: white;
width: 100%;
padding: 0 1rem;
font-size: 0;
margin: 1rem;
}
.breadcrumbs .breadcrumb-step {
display: inline-block;
width: 12.33%;
height: 5rem;
text-decoration: none;
color: black;
}
/*added this*/
.breadcrumbs .breadcrumb-step:first-child {
width: 15.33%;
overflow:hidden;
border-left:1px solid lightgrey;
}
/**/
.step-title {
display: none;
}
.breadcrumb-step:before,
.breadcrumb-step:after {
content: '';
display: block;
height: 50%;
box-sizing:border-box;
width: 100%;
border: 1px solid lightgrey;
}
.breadcrumb-step:before {
transform: skew(30deg);
transform-origin:right bottom; /*added this*/
border-bottom: none;
}
.breadcrumb-step:after {
transform: skew(-30deg);
transform-origin:right top; /*added this*/
border-top: none;
}
/*added this*/
.breadcrumb-step:hover:before,
.breadcrumb-step:hover:after,
.breadcrumbs .breadcrumb-step:first-child:hover{
border-color: black;
}
<div class="breadcrumbs">
<a class="breadcrumb-step" href="#"><span class="step-title">Home</span></a>
<a class="breadcrumb-step" href="#"><span class="step-title">About</span></a>
<a class="breadcrumb-step" href="#"><span class="step-title">Contact Us</span></a>
</div>
这篇关于仅倾斜 before & 的一侧在获得扁平箭头之后的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
更多推荐
[db:关键词]
发布评论