Наклоните только одну сторону до и после, чтобы получить плоскую стрелку - PullRequest
0 голосов
/ 02 января 2019

Я создал несколько пустышек.1-й шаг крошки должен иметь нормальную плоскую границу слева, что и делается.И при наведении курсора мне нужно показывать черную рамку для каждого элемента крошки.

Но единственная проблема - при наведении курсора, для 1-го шага крошки я не получаю эту плоскую границу слева, как ожидалось,

Вот что ожидается при наведении:

enter image description here

Вот мой код:

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>

1 Ответ

0 голосов
/ 02 января 2019

Вы можете настроить источник преобразования, затем скрыть переполняющуюся часть наклонного элемента и изменить левую границу первого дочернего элемента при наведении:

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>
...