CSS实现平行四边形布局

摘要:
CSSShapes实现平行四边形布局的关键不在于平行四边形本身,而在于左上角和右下角的两个三角形。

如何实现下图所示的平行四边形布局效果?

平行四边形效果示意截图

一、skewX的局限

一提到平行四边形,条件反射般的就会想起CSStransform中的skew()/skewX()/skewY()方法,可以让元素斜切,从而实现平行四边形效果

然而,一开始的布局不仅后面的白色背景形成平行四边形,整段文字内容也按照平行四边形的格式进行了排版,如果文字内容也应用skewX,所有文字内容就会表现为倾斜,如下所示:

<div style="260px; padding: 10px;transform: skewX(-10deg);border:1px solid #ccc;border-radius:4px;">

我是一段文字内容,我应用了transform属性中的skewX,看看我现在的表现是怎样子的……

</div>

CSS实现平行四边形布局第2张

我们的预期应该是文字都是正立显示,而不是这样子的倾斜。我们可能第一反应是对里面的文字进行反向的skewX,但那需要对每一行文字单独处理,或者对每一个字符单独进行处理,成本有些高,不太实际。

这就是skewX方法的局限,那有没有什么其他方法可以实现平行四边形的布局效果呢?有,可以借助CSS Shapes布局实现。

二、CSS Shapes布局与三角

然而你就算熟悉了CSS Shapes布局的每一个CSS属性,这里的平行四边形布局效果你还不一定会实现得出来,因为需要借助一点逆向思维

CSS Shapes实现平行四边形布局的关键不在于平行四边形本身,而在于左上角和右下角的两个三角形

HTML结构如下:

<div class="shape-left"></div>
<!-- 右三角 -->
<div class="shape-right"></div>
<content class="content">
<p>内容内容内容内容内容内容内容内容内容内容内</p>
<p>内容内容内容内容内容内容内容内容内容内容内</p>
<p>内容内容内容内容内容内容内容内容内容内容内</p>
<p>内容内容内容内容内容内容内容内容内容内容内</p>
</content>

CSS代码如下:

.shape-left{
float:left;
100px;height:200px;
shape-outside:polygon(0 0,100% 0,0 100%);
}
.shape-right{
float:right;
100px;height:200px;
shape-outside:polygon(100% 0,100% 100%,0 100%);
}
.content{
display:block;
}
.content::after{
content:'';
position:absolute;
left:40px;right:40px;
top:0;bottom:80px;
background:#987;
transform:skewX(-20deg);
z-index:-1;
}

实现代码很简单,关键是思路。

效果:

CSS实现平行四边形布局第3张

CSS实现平行四边形布局第4张

三、平行四边形布局与实战

不规则形状的广告更能引起用户的注意力,从而提高广告点击率。

于是对于平行四边形布局,左上角和右下角的三角空缺正好可以用来放两个三角形广告,既充分利用空间,又有高收益。

前端开发通常与公司的业务收入直接关联不大,但是这里却不一样,如果你实现的新颖的布局效果能够大幅提高公司的收入,证明了你在这一块的价值,相信对你的绩效会很不错,可以在项目中试一试。

然而实际开发的时候,展示的文字内容有多有少,走平行四边形并不合适,因为会导致三角很小,或者右下角的三角位置无法确定的问题,因此,推荐实现的布局形状是下图这样子的。

真实项目靠谱的布局方式

免责声明:文章转载自《CSS实现平行四边形布局》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇附10 kibana创建新的index patterns父类转换子类下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

CSS实用的代码段

摘抄的一些代码还有自己总结的常用的代码~ 1>浏览器样式统一 1 *{ 2 margin:0px; 3 padding:0px; 4 } 浏览器样式统一 2>清除浮动的方法 3>跨浏览器设置透明度 1 .transparent{ 2 filter:alpha(opacity=50); /*IE*/ 3 -khtml...

通过CSS3伪类,美化Radio按钮样式

CSS3样式: /* RADIO */.button-holder {100%;}.regular-radio {display: none;}.regular-radio + label {-webkit-appearance: none;background-color: #fafafa;border: 1px solid #cacece;box-sh...

在网页中用JavaScript控制DIV进行预览打印

function doPrint(){ var article; var css; var strAdBegin=""; var strAdEnd=""; var strTmp; var str="<html> <meta http-equiv='content-type' content=...

关于webpack打包js和css

废话不多说,直接贴出代码,大家瞅瞅:其中要引用css的话是要用css-loader。用了之后再webpack。config。js里面配置相应的代码,并且在相应的js文件里面引用即可啦,不知道有哪位大神指导我的webstorm为什么不支持es6的写法吗?我试了很多方法和设置,都没用,但是整个项目部报错,- -!!!!...

浅谈css中浮动和清除浮动带来的影响

有很多时候,我们都会用到浮动,而我们有时候对浮动只是一知半解,却不是太清楚它到底是怎么回事,不知道各位有没有和我一样的感觉,只知道用它,却不知道它到底是怎么回事,所以,在学习的过程中,就要把一个概念不是很清晰的问题把它弄清楚了,便于我们以后的使用。早些时候,W3C规定出来的浮动实际并不是为了布局所用,当时是为了做文字环绕才使用到浮动,后来有人发现用它来做布...

CSS布局属性

一、CSS布局属性 Width:设置对象的宽度(widteight:设置对象的高度(Height:45px;)。ackground:设置对象的背景颜色、背景图像。 1.背景颜色 background:#09F; 2.背景图像 background:url(file:///C|/Users/Administrator/Desktop/huipu.jpg) r...