html - 两个边缘不同倾斜的 Div
问题描述
这是我想要实现的目标:
倾斜的div:
HTML:
<span class="container">
<span class="element">some dummy text</span>
</span>
CSS:
.container .element {
font-size: 24px;
background-color: gray;
padding: 5px;
position: relative;
}
.container .element:before {
content: " ";
position: absolute;
display: block;
width: 100%;
height: 100%;
top: 0;
left: 0;
z-index: -1;
background: gray;
transform-origin: bottom left;
-ms-transform: skew(-20deg, 0deg);
-webkit-transform: skew(-20deg, 0deg);
transform: skew(-20deg, 0deg);
}
.container .element:after {
content: " ";
position: absolute;
display: block;
width: 100%;
height: 100%;
top: 0;
left: 0;
z-index: -1;
background: gray;
transform-origin: bottom left;
-ms-transform: skew(0deg, -1deg);
-webkit-transform: skew(0deg, -1deg);
transform: skew(0deg, -1deg);
}
https://jsfiddle.net/mktcany9/
即使有很多关于类似 div 的主题,我也无法真正做到像图像上那样。
解决方案
这可能会帮助你。
变换原点属性允许伪元素从右下角倾斜,溢出的部分用 隐藏overflow:hidden;
。
div {
position: relative;
display: inline-block;
padding: 1em 5em 1em 1em;
overflow: hidden;
color: #fff;
}
div:after {
-webkit-transform-origin: 100% 0;
-ms-transform-origin: 100% 0;
transform-origin: 100% 0;
-webkit-transform: skew(-45deg);
-ms-transform: skew(-45deg);
transform: skew(-45deg);
z-index: -1;
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #000;
}
body {
background: #fff;
}
<div>slanted div text</div>
<div>
slanted div text<br/> on several lines<br/> an other line
</div>
<div>wider slanted div text with more text inside</div>
推荐阅读
- wpf - Microsoft Blend 2019 中的无资源窗口 .Net Core WPF 项目
- python - 如何在 Google Text to Speech API 中调整发音音高
- firebase - 向主题发送通知,特定订阅的令牌火力库除外
- r - 使用 R 中的特定条件聚合 nc 文件
- php - Nginx、PHP 和 Docker 的 Gettext 问题
- reactjs - TypeError:无法读取 null 的属性(读取“用户”)Reactjs
- php - CSV文件和特殊字符具有相同键和不同值的多个PHP数组
- mysql - 无法以所需格式更新表中的数据
- python - 使用 Python 解析 .xlsx 并从行和列中收集内容的统计信息
- php - PHP Firebase 验证与 Twitter 获取用户信息