css 梯形的三种实现方法

转自:https://blog.csdn.net/ChenXvYuan_001/article/details/85016836
https://www.cnblogs.com/linsinan/p/6928734.html
1 利用border加粗方式
这是网上较为常见的方式,其原理就是对一个高度为0px的正方形的div的border-top进行增粗。

HTML:
<div class="d"></div>

CSS:
.d{
    width:80px;
    height: 0;
    border-top:20px solid; 反梯形
    border-left:20px solid transparent;
    border-right:20px solid transparent;
    //border-bottom:20px solid; 正梯形
    box-shadow: 0 0 100px 50px rgba(249, 240, 104,1);
  }

理解代码:
建立一个div,高度为0,宽度400px(可以理解为一个矩形,但矩形的高度为0,自然这个矩形就这垂直方向压缩成了一条线),div上边界粗度或厚度设为100px且为实线,左右边界线厚度也为100px,但设为透明(利用了css的transparent属性)
在这里插入图片描述
其实这里构造的div就和这两个相框一样,这两个相框实质上就是把一个矩形的border 增粗了,div增粗后上下左右的边界效果就是如相框所示的这样,其实上下左右的border加粗以后就成了4个梯形,然后我将相框的高度设为0,此时这个div就是这样:
然后我将左右边界设为透明
自然就成了一个倒梯形。
在这里插入图片描述
2 利用3d旋转和透视3d旋转和透视方式
这种方式是对div进行旋转和透视操作,最终形成一个梯形。

HTML:
<div class="d"></div>

CSS:
.d{
   width:60px;
    height: 60px;
    background-color: rgba(249, 240, 104,0.5);
    transform:perspective(2em) rotateX(10deg);
    margin-left:30px;
  }

perspective:对元素进行透视操作
rotateX:以x轴(横轴)进行旋转(前后仰俯)
在这里插入图片描述
3 两个三角形加一个正方形拼接方式

HTML
<div class='box'></div>
<div class='box2'></div>
<div class='box3'></div>

CSS
.box,.box3 {
    width:0px;
    height:0px;

    border-top:50px solid rgba(0,0,0,0);
    border-right:30px solid  rgba(0,0,0,0);
    border-bottom:50px solid rgba(249, 240, 104,1);
    border-left:30px solid  rgba(0,0,0,0);

    margin-bottom:10px;
    display:inline-block;
  }
  .box2 {
    width:50px;
    height:50px;
    background-color:rgba(249, 240, 104,1);
    display:inline-block;
  }
  .box{
    transform: translate(34px,10px);
    box-shadow: 0 0 100px 100px rgba(249, 240, 104,0.3);
  }
  .box3{
    transform: translate(-34px,10px);
  }

在这里插入图片描述
1,首先,做三个‘小盒子’ 1号,和3号小盒子都做成小三角形,2号小盒子做成一个正方形。
2,有人要问了, 形状是出来了, 但是怎么拼起来呢,这里就要用到css中的定位指示 和 css3 里的transfrom 了。不了解的话,w3c里都有详细的解释,我这里只管实现我们要的效果。
3,先把所有的‘小盒子’排成一排,使块状元素排成一排的方法 :可以给‘小盒子’加 浮动 float,也可以直接设置‘小盒子’的display:inline-block;由于我的习惯是只要加浮动, 就要给父元素清浮动,比较麻烦,我就直接设置‘小盒子’的display:inline-block 了。
4,最后设置一下 1号,和3号小盒子 的位移 就ok了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值