border php,你所不知道的border用法

前面的话:

在看这篇文章之前你可能会觉得border只是简单的绘制边框,看了这篇文章,我相信你也会跟我一样说一句“我靠,原来css中的border还可以这样玩”。这篇文章主要是很早以前看了别人用纯CSS绘制三角形后自己的一些思路的整理,文中会介绍几种小图标的效果。

用css中的border绘制鸡蛋形状:

是的你没看错,这里是要做绘制一个类似于鸡蛋的效果。

思路:我们先用p绘制一个正方形,然后利用设置border-radius: 50%;,这样我们就可以得到一个圆形的效果,代码如下:

html代码:

css代码:

.p {

width: 100px;

height: 100px;

line-height: 100px;

background-color: aqua;

text-align: center;

border-radius: 50%;

}

结果如图:

2093024945f0528dd207bc84f0926073.png

思考:分析鸡蛋型结构,鸡蛋有点椭,但是它分大头和小头。我们有没有什么办法先让之前的圆变为椭圆呢?

思路:我们改变p的宽度或高度,让它们不一致,看能不能得到我们想要的效果。

实现:我们分别改变width:50px;或height:50px;(只改变其中的一个),这时我们得到的效果分别为:

c3c8e9cc8d227e478cbd28d11e6b475b.png

思考:我们已经得到椭圆效果了,接下来我们如何实现大头和小头的效果呢?

思路一:我们再把椭圆进行分割然后控制宽度不一致。(此种方法不成功)

思路二:我们设置border-radius的百分比。当border-radius: 100%;与前一种方法的截图如下:

9db54f7cb77c7ea24074bca09a925d48.png

再次尝试将border-radius的百分比的值进行分离(不要简写,直接写成4个),然后控制百分比不一致。关键代码:

border-radius: 50% 50% 50% 50% / 62% 62% 38% 38%;

此时得到的效果截图:

665fb1018776d56dcc2653c1f9ea4e3f.png

用css中的border画三角形:

相信大家都知道border-color是控制边框颜色的,但是你可能没这样试过,来看下面的代码:

html:

css:

.p {

width: 100px;

height: 100px;

border: 50px solid transparent;

border-color: yellow green red aqua;

}

这样的结果为:

194854edf10a0d27a28ad89c3e688089.png

思考一:如果该p没有宽高会怎样?

实现结果:

224eda7671e7317c0cc8ced12a261548.png

思考二:前面的效果得到的是四个三角形,我们有没有什么办法将三角形从那个p中分离出来呢?

思路:目前没有接触过有关p分离的(具体也应该不存在吧),但是我们来扣一扣CSS的定义“层叠样式”,转换我们的思维,我们有没有什么方法将我们不想要的三角形覆盖掉?

具体做法:将我们需要的那边的颜色设置为我们的背景色–白色,对的这样就可以得到我们想要的效果。代码如下(以想要上边的三角形为例):

border-color: yellow white white white;

是不是这样就算完成我们的三角形效果了呢?

我们可以试试修改整个body的背景颜色为黑色,看有什么变化:

662d311b04a1e0a68c207044ac6297a8.png

发现该p仍占据着那么大的空间,并且背景颜色设置为白色并不是最科学

思考四:我们该如何将不想要的颜色设置为消失呢?

思路:我们将不想要表现出来的颜色设置为父级容器的背景色,border-color: yellow transparent transparenttransparent;

结果如下:

88721c0567370919cf5bcf5a1709b258.png

思考三:我们如何将p设置不占那么大的空间呢?

思路:直接将想要的三角形的对边的border的宽度去掉

具体做法:(这次以想要下面的三角形为例),代码如下:

p{

width:0px;

height: 0px;

border-bottom: 50px solid red;

border-left: 50px solid transparent;

border-right: 50px solid transparent;

}

结果如图:

6bb30d1229bd200089d16aa8619b613f.png

关于三角形的扩展的一些思考:

思考一:我们平时的三角形有锐角三角形,钝角三角形,直角三角形,等边三角形,等腰三角形等,我们有什么办法让我们直接得到的就是我们想要的三角形效果不?

思路:当底边和水平线平行时,我们直接通过控制宽高比来实现我们想要的三角形效果;当与水平线不重合时这个时候就比较复杂了,就需要用到宽高比和CSS3中的transform属性和rotate相结合,让我们的三角形呈现出我们想要的效果(这里只是介绍思路,不去具体实现,其中有涉及到数学方面的知识可以自己百度)。

思考二:我们能不能用多个三角形在一起拼出更多的形状?

(这个可以有,比如说我们可以用两个三角形和一个长方形拼成平行四边形,甚至说我们用多个p在一起拼成简单的小木屋效果……)

补充:

1、在我们思考一的前面那张图,我们可以看到其实那中间的几个分别是梯形,用同样的方法,我们可以得到梯形的效果(具体做法不再另外介绍)。

2、通过旋转,我们可以将我们的正方形变成菱形的效果

多边形的制作(以六边形为例)

首先我们分析一下六边形,看能不能把它分解成我们前面有说过的简单的图形,下面看图:

b5fe1b7e191e9cef8bb0caea423504b2.png

分析:以上面的为例,我们可以看出六边形由两个三角形和一个矩形构成。

思考一:我们有没有什么方法将这三个图形拼在一起?

思路:用伪元素:after和:before,然后在各自的区域绘制图形

参考代码如下:

六边形的制作

#hexagon {

width: 100px;

height: 55px;

background: #fc5e5e;

position: relative;

margin: 100px auto;

}

#hexagon:before {

content: "";

width: 0;

height: 0;

position: absolute;

top: -25px;

left: 0;

border-left: 50px solid transparent;

border-right: 50px solid transparent;

border-bottom: 25px solid yellow;

}

#hexagon:after {

content: "";

width: 0;

height: 0;

position: absolute;

bottom: -25px;

left: 0;

border-left: 50px solid transparent;

border-right: 50px solid transparent;

border-top: 25px solid aqua;

}

(当然这里知识介绍了一种情况,也可以尝试三角形所在的边不一样)

多角星的制作(以六角星为例)

分析:试着用前面的方法,我们分析六角星的结构,我们可以理解为一个六角星是由两个三角形一起重叠而成的,接下来就好办了,我们直接看代码:

六角星

p {

width: 0;

height: 0;

display: block;

position: absolute;

border-left: 100px solid transparent;

border-right: 100px solid transparent;

border-bottom: 200px solid #de34f7;

margin: 10px auto;

}

p:after {

content: "";

/*content插入内容*/

width: 0;

height: 0;

position: absolute;

border-left: 100px solid transparent;

border-right: 100px solid transparent;

border-top: 200px solid #de34f7;

margin: 60px 0 0 -100px;

}

最终实现效果如图:

e60266a80d74c526bda119306a37606b.png

五角星的制作(实际操作起来比六角星困难):我们先自己画一个五角星,然后将其分割为三个,然后利用前面的步骤去实现,这里我只是列出一种方法作为参考(其中有几个细节的处理有点复杂),分析图如下:

84a88350839b8fc3019be196d8a2f08d.png

参考代码如下:

#star{

width: 0px;

height: 0px;

margin: 50px 0;

color: red;

position: relative;

display: block;

border-bottom: 70px solid red;

border-left: 100px solid transparent;

border-right: 100px solid transparent;

-webkit-transform: rotate(35deg);

}

#star:before{

content: '';

width: 0px;

height: 0px;

margin: 50px 0;

color: yellow;

position: relative;

display: block;

border-bottom: 80px solid yellow;

border-left: 30px solid transparent;

border-right: 30px solid transparent;

-webkit-transform: rotate(-35deg);

top: -45px;

left: -65px;

}

#star:after{

content: '';

width: 0;

height: 0;

position: absolute;

display: block;

top: 3px;

left: -105px;

color: #fc2e5a;

border-right: 100px solid transparent;

border-bottom: 70px solid #fc2e5a;

border-left: 100px solid transparent;

-webkit-transform: rotate(-70deg);

-moz-transform: rotate(-70deg);

-ms-transform: rotate(-70deg);

-o-transform: rotate(-70deg);

}

CSS小图标效果:

到这里,你是不是还没看过瘾呢?下面在来分享一下自己做的CSS小图标:对话框的制作

对话框的制作:

分析:对话框由一个三角形和一个圆角举行组成

实现:代码如下:

* {

margin: 0px;

padding: 0px;

}

p {

margin: 100px;

}

#comment_bubble {

width: 300px;

height: 100px;

background: #088cb7;

position: relative;

-moz-border-radius: 12px;

-webkit-border-radius: 12px;

border-radius: 12px;

}

#comment_bubble:before {

content: "";

width: 0;

height: 0;

right: 100%;

top: 38px;

position: absolute;

border-top: 13px solid transparent;

border-right: 26px solid #088cb7;

border-bottom: 13px solid transparent;

}

消息提示框可以先制作一个圆角矩形,然后在需要的地方放置一个三角形。

实现结果:

8f4ae9451ffe3c5a9e5e9828b0dc8b82.png

后面的话:

虽然这些效果看上去并不是那么的酷,但是记得自己刚开始学到这个的时候好兴奋好激动的说。当时做了更多的效果(但是前几天电脑换系统以前的那些都没了),所以展示的也只是很简单的效果。现在还能回忆起来的就这么多,后面想到了会陆续补充。大家有什么好的效果欢迎在下面分享。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值