css实现平行四边形、菱形图片效果

摘要:
}.按钮>html<相对的白色位置所容纳之物左边正确的css.picture{margin;img{width;transform;overflow;img{max width;transform;divclass=“parent”>css.parent{widt;}img{width=;transition;

一、平行四边形

1. 使用两个元素实现

html

<a class="button">
  <div>click me</div>
</a>

css

.button{
  margin: 50px;
  display: inline-block;
  background: #404ED3;
  transform: skewX(-45deg);
} 
.button>div{
  padding: 15px;
  color: white;
  font-size: 24px;
  transform: skewX(45deg);
}

效果图

css实现平行四边形、菱形图片效果第1张

原理:

将容器和内容区域做相反方向的变形,就可以使外面的容器变形,同时不会影响内部的元素。

2. 使用伪元素实现

我们可以把所有样式都应用到伪元素上,然后再对伪元素进行变形。因为我们的内容并不是包含在伪元素中,所以内容并不会受到伪元素的影响。同时,我们希望伪元素保持良好的灵活性,可以自动继承宿主元素的尺寸,甚至当宿主尺寸是由其内容来决定时仍然如此。一个简单的办法就是给宿主元素应用position:relative,并且为其伪元素设置position:absolute,然后再把所有偏移量设置为0,以便让他在水平方向和垂直方向都和宿主尺寸相同。

html

<a class="button">click me</a>

css

.button{
  position: relative;
  display: inline-block;
  margin: 50px;
  padding: 15px;
  color: white;
  font-size: 24px;
} 
.button::before{
  background: #404ED3;
  z-index: -1;
  position: absolute;
  content: '';
  top: 0;left: 0;right: 0;bottom: 0;
  transform: skewX(-45deg);
}

值得注意的是:用伪元素生成的方框是重叠在内容上面的,一旦给他设置背景就会遮住内容,为了解决这个问题,我们给伪元素设置了z-index:-1,这样他的堆叠层次就会被推到宿主元素之后。

效果图:

css实现平行四边形、菱形图片效果第2张css实现平行四边形、菱形图片效果第3张 

 二、菱形图片

1. 使用两个元素实现

思路:我们可以将父元素旋转45deg,然后将里面的图片在向相反方向旋转45deg,并且设置父元素的overflow:hidden,子元素的最大宽度为100%。

html

<div class="picture">
  <img src="cat.jpg" alt="">
</div>

css

.picture{
  margin: 100px;
  width: 300px;
  transform: rotate(45deg);
  overflow: hidden;
} 
.picture>img{
  width: 300px;/*100%*/
  transform: rotate(-45deg);
}

效果图

css实现平行四边形、菱形图片效果第4张css实现平行四边形、菱形图片效果第5张

虽然这个八边形看起来也很好看,不过这不是我们想要的,原因在于图片的宽度应该为父元素(正方形)宽度的对角线长度,所以我们可以调整一下

css

.picture{
  margin: 100px;
  width: 300px;
  transform: rotate(45deg);
  overflow: hidden;
} 
.picture>img{
  max-width: 100%;
  transform: rotate(-45deg) scale(1.42);
}

效果图

css实现平行四边形、菱形图片效果第6张

2. 使用clip-path实现

hml

<div class="parent">
    <img src="cat1.jpg" alt="">
</div>

css

.parent{
  width: 300px;
}
img{
  width: 100%;
  clip-path: polygon(50% 0,100% 50%,50% 100%,0 50%);
  transition: 1s clip-path;
}
img:hover{
  clip-path: polygon(0 0,100% 0,100% 100%,0 100%);
}

如此简单的代码就实现了菱形,我们甚至实现了在鼠标悬停的时候平滑的扩展为完整的面积。

效果图

css实现平行四边形、菱形图片效果第7张css实现平行四边形、菱形图片效果第8张css实现平行四边形、菱形图片效果第9张

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

上篇SQL Server 2016 行级别权限控制setTimeout 传参下篇

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

相关文章

通过ANT实现jmeter批量执行脚本、生成报告、发送邮件全套build.xml文件

在开始通过ANT运行build.xml之前,有一步必须要做,那就是将JMeter所在目录下extras子目录里的ant-JMeter-1.1.1.jar复制到Ant所在目录lib子目录之下,这样Ant运行时才能找到"org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"这个类,从而成功触发JMeter脚本...

SuperSlide——再次接触

原来自己很早之前就接触过SuperSlider这个神奇的插件,原谅自己又得了“健忘症”,因此昨天就把自己“坑”了一把: 前言: 交易一期的项目即将上线,在解决测试同事们提出的bug的时候,无意间看到页面有一个神奇的现象: 看着这左右不停变换的图片,心里是不是有点高兴:这样的效果还真不错!可是头疼的却在后面…… 当企业资质下只有一张图片时,它就变成了两张...

用Visual studio 2005打开Visual studio 2008 开发的项目

方法一参考: 1. 用记事本打开解决方案文件(扩展名为*.sln).将Microsoft Visual Studio Solution File, Format Version 10.00# Visual Studio 2008把上面这两句,改成Microsoft Visual Studio Solution File, Format Version 9....

CSS中如何把Span标签设置为固定宽度

一、形如<span>ABC</span>独立行设置SPAN为固定宽度方法如下: span {60px; text-align:center; display:block; } 实际验证结果:IE6 OK, FIREFOX 3 OK。 一、形如<span>ABC</span>DEF格式行设置SPAN为固定宽度的...

vue项目中导出PDF的两种方式

参考大家导出的方式,基本上是如下两种: 1.使用 html2Canvas + jsPDF 导出PDF, 这种方式什么都好,就是下载的pdf太模糊了。对要求好的pdf这种方式真是不行啊!2.调用浏览器自身的方法。window.print() 来打印(打印时可选下载),这种方式打印出来很清楚,但纯在浏览器兼容问题。 谷歌浏览器比较好用点。 两种导出pdf清晰...

4.qml-ECMAScript(Array对象、Math对象)

在上章学习了:3.qml-ECMAScript_03(Object基类对象、String对象) 本章我们来初步学习Array对象和Math对象. Array数组对象 ECMAScript提供了Array数组对象,并且该Array的元素类型还可以各个不同. 创建空数组: var arr1 = new Array(); var arr2 = new Array...