博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CSS 多边形
阅读量:6999 次
发布时间:2019-06-27

本文共 1982 字,大约阅读时间需要 6 分钟。

平行四边形

我们可以通过skew()的变形属性来对这个矩形进行斜向拉伸。trasnsform:skewX(-45deg);这样会导致内容也发生斜向变形。

嵌套元素方案:我们可以对内容在应用一次反向的skew()变形,从而抵消容器的变形效果。如果想把这个效果应用到一个默认显示为行内的元素,需要把它的displlay属性设置为inline-blick或block,否则变形是不会生效的。这一点对内层的元素也是适用的。

伪元素解决方案:把所有样式(背景,边框等)应用到伪元素上,然后对伪元素进行变形。因为我们的内容并不是包含在伪元素里地,所以内容并不会受到变形的影响。

伪元素应该自动继承其宿主元素的尺寸,甚至当宿主元素的尺寸是由其内容来决定时仍然如此。一个简单地方法是给宿主元素应用position:relative样式,并为伪元素设置position:absolute,然后再把所有偏移量设置为零,以便它在水平和垂直方向上都被拉伸至宿主元素的尺寸。

菱形图片

嵌套元素方案:需要把图片用一个div包裹起来,然后对其应用相反的rotate()变形样式:

clip-path属性把元素裁剪为我们想要的任何形状。polugon()函数指定一个菱形。实际上它允许我们用一系列坐标点来指定任意的多边形。clip-path:poly(50% 0,100% 50%,50% 100%,0 50%);clip-path还可以参与动画,只有我们的动画是在同一形状函数之间进行的。

切角效果

一种方案:使用背景图片盖住元素来达到目的。比如使用三角形盖住元素的顶角来模拟切角效果。

CSS渐变:background: #58a;

background:

    linear-gradient(135deg, transparent 15px, #58a 0)

        top left,

    linear-gradient(-135deg, transparent 15px, #58a 0)

        top right,

    linear-gradient(-45deg, transparent 15px, #58a 0)

        bottom right,

    linear-gradient(45deg, transparent 15px, #58a 0)

        bottom left;

background-size: 50% 50%;

background-repeat: no-repeat;

弧形切角:

background: #58a;

background:

    radial-gradient(circle at top left,

             transparent 15px, #58a 0) top left,

    radial-gradient(circle at top right,

             transparent 15px, #58a 0) top right,

    radial-gradient(circle at bottom right,

             transparent 15px, #58a 0) bottom right,

    radial-gradient(circle at bottom left,

             transparent 15px, #58a 0) bottom left;

background-size: 50% 50%;

background-repeat: no-repeat;

内联SVG与border-image方案:

border: 20px solid #58a;

border-image: 1 url('data:image/svg+xml,\

    <svg xmlns="http://www.w3.org/2000/svg"\

         width="3" height="3" fill="%2358a">\

    <polygon points="0,1 1,0 2,0 3,1 3,2 2,3 1,3 0,2"/>\

    </svg>');

background: #58a;

background-clip: padding-box;

clip-path实现切角

 polygon(20px 0, calc(100% - 20px) 0, 100% 20px, 100% calc(100% - 20px),

      calc(100% - 20px) 100%,

      20px 100%, 0 calc(100% - 20px), 0 20px);

切出一个多边形。个人感觉这种方式实现最方便,只是要考虑浏览器的支持。

梯形标签页

常用方式:使用精心设计的背景图片来实现梯形,或者使用边框来模拟梯形两侧的斜边。

使用3D旋转。

转载于:https://www.cnblogs.com/wlxll/p/7065692.html

你可能感兴趣的文章
对HGE游戏引擎的一次封
查看>>
poj 2051 Argus
查看>>
div内快元素[div,p。。。]居中办法
查看>>
2017届高三(下)高考模拟(理科)数学试题(自己命题与写代码)
查看>>
swagger-editor
查看>>
Groovy与Java集成常见的坑(转)
查看>>
SpringMVC(转)
查看>>
__tostring用法,__call处理调用,__clone克隆对象
查看>>
PHP读取文件
查看>>
免费的区块链学习资料
查看>>
ILSVRC
查看>>
matlab超限像素平滑法_脉冲伏安法理论基础
查看>>
arduino 串口读取字符串_Arduino传感器教程 第24章NRF24L01 控制电舵机
查看>>
状态码202_HTTP状态码(HTTP Status Code)
查看>>
sharepoint 2010 网站集定期备份
查看>>
管理SCCM/MDT中的驱动分类
查看>>
java之HashTable
查看>>
Windows Server 2012体验之配置存储池
查看>>
轻松上手移动互联——百度SiteApp建造日志
查看>>
我从跑步中领悟到了什么?
查看>>