Змейка
by DelphinPRO
HTML
<div class="wrapper">
<div class="block ">
<div class="block__icon">
<div class="icon"></div>
</div>
<div class="block__content">
<div class="block__dot"></div>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quos tenetur, odio ut sint accusantium laudantium modi
voluptatibus in quo neque.
</div>
</div>
<div class="block ">
<div class="block__icon">
<div class="icon"></div>
</div>
<div class="block__content">
<div class="block__dot"></div>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quos tenetur, odio ut sint accusantium laudantium modi
voluptatibus in quo neque.
</div>
</div>
<div class="block active">
<div class="block__icon">
<div class="icon"></div>
</div>
<div class="block__content">
<div class="block__dot"></div>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quos tenetur, odio ut sint accusantium laudantium modi
voluptatibus in quo neque.
</div>
</div>
<div class="block ">
<div class="block__icon">
<div class="icon"></div>
</div>
<div class="block__content">
<div class="block__dot"></div>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quos tenetur, odio ut sint accusantium laudantium modi
voluptatibus in quo neque.
</div>
</div>
<div class="block ">
<div class="block__icon">
<div class="icon"></div>
</div>
<div class="block__content">
<div class="block__dot"></div>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quos tenetur, odio ut sint accusantium laudantium modi
voluptatibus in quo neque.
</div>
</div>
<div class="block ">
<div class="block__icon">
<div class="icon"></div>
</div>
<div class="block__content">
<div...
SCSS
* {
&, &::before, &::after {
box-sizing: border-box;
}
}
$space: 10px;
$border-width: 2px;
$color: #66c5e5;
$color-active: #fcb365;
$background: #ffffff;
body {
padding: 30px;
background: #ffffff;
}
.wrapper {
display: flex;
flex-wrap: wrap;
background: $background;
}
@mixin border($c: $color) {
}
@mixin borderTopRightRadius($c: $color) {
.block__content {
border-top-right-radius: 40px;
border-top-color: $c;
border-right-color: $c;
}
}
@mixin borderBottomRightRadius($c: $color) {
.block__content { border-color: transparent; }
.block__icon {
border-bottom-right-radius: 40px;
border-right-color: $c;
border-bottom-color: $c;
}
}
@mixin borderTopLeftRadius($c: $color) {
.block__content {
border-top-left-radius: 40px;
border-left-color: $c;
border-top-color: $c;
}
}
@mixin borderBottomLeftRadius($c: $color) {
.block__content { border-color: transparent; }
.block__icon {
border-bottom-left-radius: 40px;
border-left-color: $c;
border-bottom-color: $c;
}
}
.block {
$_width: percentage(1/3);
width: calc(#{$_width} - #{$space});
position: relative;
margin: ($space / 2);
.icon {
width: 40px;
height: 40px;
background: $color;
display: block;
margin: auto;
}
&__icon {
height: 60px;
border: $border-width solid transparent;
}
&__content {
position: relative;
border: $border-width solid transparent;
border-top-color: $color;
padding: 15px;
margin-top: -$border-width;
}
&__dot {
position: absolute;
left: 50%;
top: 0;
width: 8px;
height: 8px;
margin: -4px 0 0 -4px;
border-radius: 50%;
border: 2px solid $background;
background: $color;
box-shadow: 0 0 0 2px $color, 0 0 0 7px $background;
}
&:first-child &__content::before,
&:last-child &__content::before {
content: '';
position: absolute;
top: -$border-width;
width: 50%;
height: $border-width;
...