仅倾斜 before & 的一侧在获得扁平箭头之后 [英] Skew only one side of before & after to get flat-arrow

查看:22
本文介绍了仅倾斜 before & 的一侧在获得扁平箭头之后的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了一些虚拟的面包屑步骤.第一个面包屑步骤需要在左侧有一个正常的平面边框,这就完成了.在悬停时,我需要为每个面包屑项目显示黑色边框.

但唯一的问题是悬停时,对于第一个面包屑步骤,我没有按预期在左侧获得平坦的边框.

以下是悬停时的预期:

这是我的代码:

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 {变换:无;边界:无;}*/

解决方案

您可以调整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{边框颜色:黑色;}

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 &amp; 的一侧在获得扁平箭头之后的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆