CSS3 边框

  • Post author:
  • Post category:其他



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也简写进去,,不生效,原因未明?????



版权声明:本文为weixin_42194517原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。