CSS3 边框

CSS3 边框新增的属性

一.border-radius 创建圆角,圆角弧度最多可指定四个参数

语法:

border-radius: 10px;    /*所有角*/

border-radius: 10px 20px;     /*左上角和右下角   右上角和左下角 */

border-radius: 10px 20px 10px;     /*左上角   右上角和左下角   右下角*/

border-radius: 10px 20px 10px 20px;     /*左上角   右上角   右下角   左下角*/

例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <style>
        .myCircle {
            width: 100px;
            height: 100px;
            margin: 100px;
            background: green;
            border-radius: 10px;/*此处设置圆角弧度*/
        }
    </style>
</head>
<body>
    <div class="myCircle"></div>
</body>
</html>

效果如下:

如果想要一个圆形 ,可将上面代码中的 border-radius:10px;改为 border-radius:50%;

效果如下:

二.box-shadow 添加阴影,可以设置一个或多个下拉阴影的框

语法:

box-shadow: h-shadow v-shadow blur spread color inset;

说明
h-shadow必需的,水平阴影的位置,允许负值
v-shadow必需的,垂直阴影的位置,允许负值
blur可选,模糊距离,该值可以使阴影部分过渡柔和
spread可选,阴影的扩展大小
color可选,阴影的颜色
inset可选,从外侧阴影变为内侧阴影

例:

1.先理解阴影的扩展大小,即阴影的扩展宽度(spread)

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <style>
        .myCircle {
            width: 100px;
            height: 100px;
            margin: 100px;
            background: green;
            box-shadow: 0 0 0 30px #888888;/*阴影的扩展大小为30px*/
        }
    </style>
</head>
<body>
    <div class="myCircle"></div>
</body>
</html>

效果图如下:

如果阴影的扩展大小设置为0,那阴影的大小就与上图中的绿色正方形的大小一样了。

 

2.阴影的水平位移和垂直位移(h-shadow v-shadow )

将上面代码中的 box-shadow: 0 0 0 30px #888888; 改为 box-shadow: 30px 30px 0 30px #888888;

效果如下:

3.阴影的模糊距离(blur)

将上面代码中的 box-shadow: 0 0 0 30px #888888; 改为 box-shadow: 0 0 10px 30px #888888;

效果如下:

目前只知道值越大越模糊,最大值的极限是什么不清楚,只能边调边看效果了。

3.阴影的颜色(color)

设置阴影的颜色。

4.阴影的扩展方向(inset)

将上面代码中的 box-shadow: 0 0 0 30px #888888; 改为 box-shadow: 0 0 0 30px #888888 inset;

效果如下:

如果加了 inset 属性,阴影的扩展方向就从由绿色正方形往外扩展变为由绿色正方形往里扩展,阴影遮盖在了绿色的正方形上面。

三.border-image 指定元素周围边框的图像

描述
border-image-source指定用于绘制边框的图像源
border-image-slice图像边界向内偏移
border-image-width图像边界的宽度
border-image-outset用于指定在边框外部绘制 border-image-area 的量
border-image-repeat用于设置图像边界是否应重复(repeat)、拉伸(stretch)或铺满(round)。

1.border-image-source,指定边框的背景图片源

语法:

border-image-source: url("图片地址");

2.border-image-slice,指定顶部,右,底部,左边缘的图像向内切割成9块。

假设有一张图片(90px*90px),每个小正方形边长为30px,如下:

语法:

border-image-slice: 30; /*顶部,右边,底部以及左边四个边向内切割30px,注意:属性中的px不写*/

切割如下:

可以设置顶部,右边,底部以及左边四个边向内切割的长度不同,如下(不看效果,先理解)

border-image-slice: 30 10;    /*顶部和底部向内切割30px,右边和左边向内切割10px*/

border-image-slice: 30 10 15;    /*顶部向内切割30px,右边和左边向内切割10px,底部向内切割15px*/

border-image-slice: 30 10 15 20;    /*顶部向内切割30px,右边向内切割10px,底部向内切割15px,左边向内切割20px*/

值除了以上的设置,还可以:

border-image-slice: 30%;/*相当于四个边向里切割背景图片的30%*/

以上的切割将图像源分割成了9块,图像源分割后就可以将这些分割出来的小块进行重组了。

边框是如何用我们切割的图像源进行重组的?举个例子:

假设我们有一个红色的正方形,想给这个正方形添加一个边框,红色的正方形和边框图像源(30px*30px)如下:

切割就按照 border-image-slice: 30; 来进行切割,如下图是切割后的9块,

接下来是将切割后的图片用来重组边框了,首先是将图像源的第1块,第3块,第7块和第9块作为边框的四个角,这个是固定不变的,至于边框的宽度,我们可以通过 border-image-width 来进行设置,

3.border-image-width 设置边框的宽度的

我将边框的宽度设置为30px,刚好可以放下边框的四个角,如下图

注意:我用 border-image-width 来设置边框的宽度,效果达不到预期,边框把红色的正方形盖住了,这个实在是搞不懂为什么会这样,所以我用了别的方式设置边框的宽度,如:border-width:30px;

接着是拼凑其余空白边框部分了,将图像源的第2块,第4块,第6块和第8块分别拼在上图的a,b,c,d部分,这时发现:不够拼啊!

别急,接下来还有一个属性就是解决这个问题的,

4.border-image-repeat 设置图像源的第2块,第4块,第6块和第8块在边框的a,b,c,d部分的排布方式

1) border-image-repeat:stretch;   /*拉伸*/

效果如下:

2) border-image-repeat:repeat;   /*重复*/

效果如下:


 

3) border-image-repeat:round;   /*铺满*/

效果如下:

该属性的 repeat 和 round 值区别在于:repeat只是简单的将图像源块平铺上去,不对图像源块的宽或高进行调整,超出的部分剪掉,而round会自动调整图像源的宽或高以适应边框,所以用repeat会造成某些图片块的缺失,而用round的全部图片块都可以看见

5.border-image-ouset 设置内容与边框的距离

下图是border-image-ouset:0;的效果图,

下图是border-image-ouset:10px;的效果图,

下面贴上图源码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <style>
        /*该方式将border-image的几个属性拆分开来写*/
        .myCircle1 {
            width: 100px;
            height: 100px;
            background: red;
            border:solid;
            border-image-source: url("border.png");
            border-image-slice: 30;
            border-width: 30px;
            border-image-repeat: round;
            border-image-outset: 10px;
        }
        
        /*该方式是border-image的简写*/
        .myCircle2 {
            width: 100px;
            height: 100px;
            background: red;
            border:30px solid yellow;
            border-image: url("border.png") 30  round;
            border-image-outset: 10px;
        }
    </style>
</head>
<body>
    <div class="myCircle1">123</div><br>
    <div class="myCircle2">123</div>
</body>
</html>

我试过将border-image-width和border-image-ouset也简写进去,,不生效,原因未明?????

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值