css 伪类实现弧形

06月11日 收藏 0 评论 2 前端开发

css 伪类实现弧形

在实现页面五花八门的有特色的ui时,我们有时会遇到要用实现一个弧形,而这样的弧形要怎么实现呢?用图片?好像不大现实,因为这样就要无故多加载一张图片了,这里我们来说说怎么用css的after伪类来实现弧形。

先是一写元素,再给这个元素设置样式和伪类样式

1
<view class="pure_top"></view>

比如说这个pure_top元素(因为这里是小程序所以用的是view,h5也是一样实现的啦),我设置的样式如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
.pure_top {
  width: 100%;
  height: 100px;
  position: relative;
  z-index: -1;
  overflow: hidden;
}
 
.pure_top::after {
  content: '';
  width: 140%;
  height: 100px;
  position: absolute;
  left: -20%;
  top: 0;
  z-index: -1;
  border-radius: 0 0 50% 50%;
  background: #1496f1;
}

如何在元素后追加一个after,当然是元素自身定位为relative,伪类设置content:‘’,并相对定位为absolute,再设置下left ,top 值,使伪类元素的位置摆放的合理就行了。
这里需要注意的是我把z-index值设为-1,因为弧形一般是作为背景图的,所有层级自然要放低些。
实现效果如下图:

上面的图看起来好像弧度太大,几乎要看不出。依上面的实现原理,弧度要多少可以是自己微调。看上面的伪类.pure_top::after { content: '';width: 140%;}宽度为140%,难怪弧度那么大呢?半径越大,弧度就越大(我应该没记错吧哈哈哈哈哈哈),那我们是不是可以减小半径来达到变小弧度的需求?看下图的实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
.gradient_top {
  width:100%;
    height: 330rpx;
  position: relative;
  z-index: -1;
  overflow: hidden;
}
.gradient_top::after {
  content: '';
  width: 100%;
  height: 330rpx;
  position: absolute;
  left: 0;
  top:0;
  z-index: -1;
  border-radius: 0 0 80% 80%;
  background: linear-gradient(160deg,#1496f1, #E0F0FA);
}

这里把伪类的宽设为100%,left , top值自然就为0了。
这里可以看到,如果要设置渐变,把background设为渐变就可以了,但是注意,我都是把颜色设置在伪类上的。
学会了就快去实现你丰富多彩的界面吧~




C 2条回复 评论
Amusi

正在研究redis,感谢,太赞了!!!!!

发表于 2021-12-12 23:00:00
0 0
coderpwh

这问题真不好答

发表于 2021-09-11 13:00:00
0 0
Ciszewski

我是前年在培训班学的平面设计,总的来说只能教你一些最基础的,真正有用的东西都是在实际工作中加上自身空闲时间的摸索来学会的。

发表于 2021-09-10 08:40:00
0 0