Как перекосить элемент, но сохранить текст нормальным (не подверженным курку)
Можно ли воспроизвести это изображение, используя только CSS?
![enter image description here]()
Я хочу применить это к своему меню, поэтому коричневый фон появляется на hover
экземпляре
Я не знаю, как это сделать, у меня есть только:
.menu li a:hover{
display:block;
background:#1a0000;
padding:6px 4px;
}
Ответы
Ответ 1
skew
родительский элемент (LI
) и обратный косой элемент children
![CSS Menu skewed buttons diagonal borders]()
nav li {
display:inline-block;
transition: background 0.2s;
transform: skew(20deg); /* SKEW */
}
nav li a {
display:block;
text-decoration:none;
padding: 5px 10px;
font: 30px/1 sans-serif;
transform: skew(-20deg); /* INVERSE SKEW */
color: #0bf;
}
nav li.active,
nav li:hover{
background:#000;
}
<nav>
<ul>
<li><a href="#">Home</a></li>
<li class="active"><a href="#">Products</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
Ответ 2
Вот скрипка для использования в разных браузерах - я создал через пару минут.
Попробуйте сыграть с аргументами, для этого я использовал :before
и :after
.
https://jsfiddle.net/DTBAE/
Ответ 3
Вы можете использовать свойство transform: skew(X, Y)
для достижения этого. Создавая перекошенный внешний контейнер, затем перекосите противоположную величину на внутреннем контейнере, чтобы перекосить текст назад, чтобы быть прямым. См. Эту скрипту, например:
http://jsfiddle.net/UZ6HL/4/
Из того, что вы сказали, я считаю, что это то, что вы хотите, если не проясните, когда элемент должен отображать фон.
Ответ 4
Для поддержки IE просто добавьте -ms-transform: skew(20deg, 0deg);
рядом со всеми другими transform: skew(20deg, 0deg);
s.
Ответ 5
.skew {
background: green;
color: #fff;
padding: 50px;
transform: skewX(-7deg);
font-size: 20px;
font-weight: 700;
}
.skew p {
transform: skewX(7deg);
}
<div class="skew">
<p>This is caption</p>
</div>
Ответ 6
[используя Компас и Сасс] Этот небольшой микс может быть полезен:
=add_skew($skew_deg_x, $skew_deg_y)
+skew($skew_deg_x, $skew_deg_y)
.content_wrapper
+skew(-$skew_deg_x, -$skew_deg_y)
Haml/html выглядит примерно так:
// haml / html
.skew
.content_wrapper
// your content
Затем просто добавьте его с необходимыми значениями:
// sass
.skew
// other .skew styles
+add_skew(-10deg, 0deg)