Пробовал сделать с помощью
transform: perspective(7px) rotateX(2deg);
и вроде получилось с первым пунктом но вот остальные не получается подогнать пожалуйста помогите и дайте как можно развернутый ответ.
Вариант с использованием clip-path
* {
padding: 0;
margin: 0;
box-sizing: border-box;
}
body {
background: orange;
}
.menu {
display: flex;
justify-content: center;
}
.menu>li {
position: relative;
list-style: none;
filter: drop-shadow(0 2px 4px rgba(0, 0, 0, .75));
}
.menu>li+li {
margin-left: -15px;
}
.menu>li:nth-of-type(1) {
z-index: 1;
}
.menu>li:nth-of-type(3) {
z-index: 2;
}
.menu>li:nth-of-type(4) {
z-index: 1;
}
.menu>li>a {
display: flex;
align-items: center;
justify-content: center;
background: #fff;
width: 120px;
height: 70px;
-webkit-clip-path: polygon(0 0, 100% 0, 85% 100%, 15% 100%);
clip-path: polygon(0 0, 100% 0, 85% 100%, 15% 100%);
}
.menu>li:nth-of-type(2)>a,
.menu>li:nth-of-type(4)>a {
-webkit-clip-path: polygon(0 0, 100% 0, 80% 100%, 15% 100%);
clip-path: polygon(0 0, 100% 0, 80% 100%, 15% 100%);
}
.menu>li:nth-of-type(3)>a {
z-index: 1;
}
.menu>li:nth-of-type(3)>a,
.menu>li:nth-of-type(6)>a {
-webkit-clip-path: polygon(0 0, 100% 0, 90% 100%, 10% 90%);
clip-path: polygon(0 0, 100% 0, 90% 100%, 10% 90%);
}
.menu>li:hover {
z-index: 5;
}
<ul class="menu">
<li><a href="#">Menu 1</a></li>
<li><a href="#">Menu 2</a></li>
<li><a href="#">Menu 3</a></li>
<li><a href="#">Menu 4</a></li>
<li><a href="#">Menu 5</a></li>
<li><a href="#">Menu 6</a></li>
</ul>
Вот собрал на svg
+d3.js
формы блоков генерируются более менее случайным образом
let d = "Alle tekst komt van schrijvers die".split(" ");
let left = 0;
let groups = d3.select('svg')
.selectAll('g')
.data(d)
.enter()
.append('g')
.attr('transform', d => {
let t = `translate(${20+left*10}, -1)`;
left += d.length+1;
return t;
})
.on('click', function() {
d3.selectAll('g').classed('active', false);
d3.select(this).raise().classed('active', true);
});
groups.append('path')
.attr('d', d => `
M${-10-rnd(10)},0
L${rnd(-10)},${20+rnd(10)}
L${d.length*10},${20+rnd(10)}
L${d.length*10+rnd(10)},0 Z
`)
function rnd(base){
return Math.random()*base;
}
groups.append('text')
.text(d => d)
.attr('y', 15)
body {
margin:0;
background-color: rgba(255,222,0,1);
}
path {
stroke: black;
fill: white;
cursor: pointer;
filter:url(#shadow);
transition: 200ms;
}
path:hover {
fill: lightgray;
}
text {
pointer-events:none;
font-family: monospace;
cursor: pointer;
}
g.active path {
fill: wheat;
}
g.active path:hover {
fill: lightgray;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
<svg viewbox="0 0 500 150">
<defs>
<filter id="shadow" height="130%">
<feGaussianBlur in="SourceAlpha" stdDeviation="3"/>
<feOffset dx="2" dy="2" result="offsetblur"/>
<feComponentTransfer>
<feFuncA type="linear" slope="0.5"/>
</feComponentTransfer>
<feMerge>
<feMergeNode/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
</defs>
</svg>
Используйте ntc-child. Например если вы используйте transform: perspective(7px) rotateX(2deg);
для div с классом menu, то код будет таким:
div.menu:nth-child(1) {
transform: perspective(7px) rotateX(2deg);
}
Далее вам надо, чтобы код для остальных отличался, тогда далее:
div.menu:nth-child(2) {
transform: ...
}
div.menu:nth-child(3) {
transform: ...
}
и т.д.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть несколько таких блоков кода, как при нажатии на кнопку отправить присвоить классу mainli ещё один класс active?