企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
CSS3中的盒子,有如下几点加强: 盒子阴影 边框可设定圆角; 可用图片做边框; 背景图可进一步设定定位原点和大小; 背景图可进行裁切; 背景图可使用渐变色。 ## 20.1.1.盒子阴影box-shadow * 属性: box-shadow * 作用: 用于设定一个盒子的阴影效果 * 形式: box-shadow:水平偏移值 垂直偏移值 [模糊值] [外延值] [颜色] [inset]; * 说明: 1,至少设置两个长度值,分别表示阴影的水平偏移量和垂直偏移量,可以为负; 2,模糊值是设定阴影的模糊效果的宽度,可以不设置,则默认为0; 3,外延值是设定阴影再“扩大”的宽度,可以不设置,则默认为0; 4,inset表示设置“内阴影”,可以不设置,则默认为外阴影。 * 举例: ``` .box1{ box-shadow: 2px 2px red; } .box2{ box-shadow: 2px 5px 2px #00FFFF; } .box3{ box-shadow: 2px 5px 2px 3px rgba(33, 33, 33, 0.5); } .box4{ box-shadow: 2px 5px rgba(66,66,66,0.5) inset; } ``` ![](https://img.kancloud.cn/fc/6e/fc6e5a6cceab48e9deb1d0e2dd2197a6_794x268.png) ## 20.1.2.圆角边框border-radius * 属性: border-radius * 作用: 用于设定一个盒子的圆角特性。 * 形式: border-radius: 水平圆角半径 [/ 垂直圆角半径]; * 说明: 1,垂直半径可以省略,则其同水平半径的值。 2,半径设置可以提供1~4个值,具体如下。 提供1个:4个角都为该值; 提供2个:第1个表示上左和下右,第2个表示上右和下左; 提供3个:第1个表示上左,第2个表示上右和下左;第3个表示下右; 第供4个:分别代表4个角上的半径(依次上左,上右,下右,下左) * 举例: ``` border-radius: 5px; //4个角半径均为5px; border-radius: 5px/15px; //4个角水平半径为5px,垂直半径为15px; border-radius: 5px 6px 7px 8px; //四个角半径分别是5px,6px,7px,8px; border-radius: 5px 6px 7px 8px/15px 16px 17px 18px; ``` 有关水平半径和垂直半径的图示: 代码为: ``` border-radius: 40px 20px / 25px 15px; ``` ![](https://img.kancloud.cn/81/f3/81f315e52cea8dfa48ca429fef418c48_353x153.png) ![](https://img.kancloud.cn/46/85/4685817db7ddf2208c7ceab5ac4005bc_737x219.png) ## 20.1.3.图像边框border-image ### 20.1.3.1.原理说明 图像边框是指使用一张图片来作为一个盒子的边框。其实就是将图片作为背景图铺上到“边框区域”上去。 但这个铺设到边框的图片,并非像常规背景图那样简单直接地铺设上去,而是有其特定的规则。 边框上铺设图片的基本原理如下图所示: ![](https://img.kancloud.cn/46/4b/464b8cc7fad540140e67af93f070316f_992x491.png) 其铺设原理是: 将要作为背景的图片,分割为9个部分(如上图所示),然后4个角4个边分别铺设对应部分,中间区域就铺设背景图片的中间部分。其中4个边和中间区域,可以类似常规背景一样进行“平铺(repeat)”,或进行拉伸(缩放)。从而达到整个盒子的完美背景呈现。 其主要用于实现类似下面这类“可变内容”的盒子背景: ![](https://img.kancloud.cn/83/5f/835fbb3ca87506193d024a8b8ed76906_189x52.png) ![](https://img.kancloud.cn/3b/d9/3bd9e84fd2254d1e77cc730197c031da_92x58.png) ### 20.1.3.2.主要属性 边框背景的主要属性有: border-image-source: 设置作为边框背景的图片源; border-image-slice: 设置要将边框背景图片进行“切割”的分割方式。形式为: border-image-slice: 数值 [fill]; //特别注意:这里的数值不带单位! 其中“数值”可以是1-4个值,分别代表上右下左4个方向的“切割厚度”。 fill代表“填充”,用于中间区域填充到盒子内容区。 border-image-width: 设置图片边框的宽度,也可以设定1-4个值。 通常设定为auto(自动),此时就会使用border-image-slice所设定的切割厚度。 border-image-repeat: 设置边框背景的填充方式,可以设定1-2个值,表示横向和纵向的填充方式。 可用值如下: stretch: 指定用拉伸方式来填充边框背景图,这是默认值,也最常用,推荐使用。 repeat: 指定用重复平铺方式来填充边框背景图。类似背景图的repeat,背景图不改变大小。 round: 指定用平铺方式来填充边框背景图。图片会根据边框的尺寸动态调整图片的大小直至正好可以铺满整个边框。 space: 指定用平铺方式来填充边框背景图。图片会根据边框的尺寸动态调整图片的之间的间距直至正好可以铺满整个边框。 注:有的浏览其中应用边框图属性需同时设定border属性。 ### 20.1.3.3.案例 使用这个图片作为边框背景图: ![](https://img.kancloud.cn/17/f0/17f06c4431d610ecac4361df5845b817_29x46.png) 来实现如下效果: ![](https://img.kancloud.cn/3b/d9/3bd9e84fd2254d1e77cc730197c031da_92x58.png) 案例演示: ![](https://img.kancloud.cn/cd/58/cd586a92f37d7723394c968b032f71d2_600x376.png) 效果如下: ![](https://img.kancloud.cn/ac/f4/acf42b70abd2921883d94d543e24359b_135x129.png) ### 20.1.4.背景图高级特性 前面有关一个盒子的背景设置,我们主要学习了这几个基本属性: background-color: 设置背景颜色。 background-image: 设置背景图像源文件。 background-repeat: 设置背景图像的重复性,可用值:repeat, no-repeat, repeat-x, repeat-y。 background-position: 设置背景图片起始位置或定位位置。 background: 上述几个属性的综合属性。 有关盒子的背景设置,在CSS3中,又增加了几个属性,如下所示: background-attachment: 设置背景图像的滚动特性,可用值有: scroll: 相对于当前盒子固定(盒子滚动,则背景图也会滚动),这是默认值。 local: 相对于当前盒子的内容固定(内容滚动,则背景图也会滚动)。 fixed: 相对于当前浏览器窗体固定(类似固定定位,即它会始终在窗口的某个位置)。 background-origin: 设置背景图像的参考原点(位置),实际就是背景出现的范围。可用值有: border-box: 在boder区域范围内(含border)。 padding-box:在padding区域范围内(含padding),这是默认值。 content-box: 在内容区域范围内。 此属性主要是跟background-position的位置计算有关。 background-clip: 设置背景图像向外裁剪的区域,裁剪范围以外就被裁剪了(不显示)。可用值有: border-box: 从border区域外沿(即不含border)开始向外裁剪背景,这是默认值。 padding-box:从padding区域外沿(即不含padding)开始向外裁剪背景。 content-box: 从content区域外沿开始向外裁剪背景。 background-size: 值1 [, 值2] 设置背景图像的大小,可设置2个值,分别表示横向和纵向的大小。可用值有: 长度: 用长度值指定背景图像大小。不允许负值。 百分比: 用百分比指定背景图像的缩放大小。不允许负值。 auto: 背景图像的真实大小。 cover: 将背景图像等比缩放到完全覆盖容器,背景图像有可能超出容器。 contain: 将背景图像等比缩放到宽度或高度与容器的宽度或高度相等,背景图像不超出容器。 演示案例: ![](https://img.kancloud.cn/0d/6b/0d6b3015abeab05a0f97b765ec0f89e7_507x497.png) 背景重复性的值在C3中多两个可用的值:round,space ![](https://img.kancloud.cn/88/f2/88f247fcb47104e0f35278d09da56d8b_497x222.png) 效果: ![](https://img.kancloud.cn/1b/de/1bde378bdeaecf8c3e3f47de0996c392_364x142.png) space的情况: ![](https://img.kancloud.cn/c0/ff/c0ff6232798ae4ab7ea9e341dd4fbbd5_479x214.png) ![](https://img.kancloud.cn/93/b8/93b82d699727c37a8b3e870b96ea578a_373x146.png) ## 20.1.5.渐变背景gradient 渐变背景其实是设置background-image属性的值,设置的不是一个单一颜色,而是多个颜色,并按给定方式进行渐变。 ### 20.1.5.1.线性渐变linear-gradient 含义: 线性渐变是让背景颜色按照某个方向(角度)的方式来进行过渡变化。 类似这样:![](https://img.kancloud.cn/54/1d/541d46c89070ac933614f9675c43e1a0_206x103.png) 语法: ``` background-image:linear-gradient([角度,] 颜色1,颜色2 [,颜色n...] ); ``` 说明: 1,角度以从下到上(12点整的方向)为0度,顺时针为正角度,默认为180度。 2,角度还可以使用to left,to right,to top, to bottom这几个关键字; 2,至少设置2个颜色(这样才能实现渐变);可设置多个颜色,都能自动实现渐变; 3,每个颜色还可以设置“截止位置”,表示该颜色在渐变中的“关键点”(位置),形式为:颜色 位置,比如:red 30px; 或 #00ff00 20%; 举例: ``` background-image:linear-gradient(red, blue); //从上到下由红色转蓝色 background-image:linear-gradient(90deg, red, blue); //从左到右由红色转蓝色 background-image:linear-gradient(90deg, red, blue, green); //从左到右由红色转蓝色再转绿色 background-image:linear-gradient(45deg, red, blue 30%, green ); //从左下角到右上角,由红色转蓝色到30%位置,然后再渐变为绿色终止 ``` 演示代码1: ![](https://img.kancloud.cn/d9/95/d9955609962aaef56734939fbc01723b_788x243.png) 结果: ![](https://img.kancloud.cn/0c/cc/0ccc86fe2935020abb4b4e3e35ac07cd_366x197.png) 代码2: ![](https://img.kancloud.cn/b8/5d/b85d0f9943b45a9808c04ec5486be8ea_801x113.png) ![](https://img.kancloud.cn/28/18/28188b75757c2816da3d76b1d7f95e0e_370x201.png) 代码3: ![](https://img.kancloud.cn/91/24/9124145d8a5df01de74479cd04117e14_906x148.png) ![](https://img.kancloud.cn/a7/3d/a73d3e14f04d5163276938faf247410e_367x199.png) ### 20.1.5.2.径向渐变radial-gradient 含义: 径向渐变是让背景颜色从某个中心点以圆或椭圆向外扩散的方式来进行过渡变化。 类似这样:![](https://img.kancloud.cn/de/b2/deb2af03f1a655576829915809c08fe1_204x103.png) 或这样: ![](https://img.kancloud.cn/77/2d/772d55f39ee9bc7789d3f838527948eb_173x86.png) 语法: ``` background-image:radial-gradient( [形状] [大小] [at 位置,] 颜色1,颜色2 [,颜色n...]) ``` 说明: 1,形状可以是circle(圆)或ellipse(椭圆),默认是跟随盒子(可能是圆,也可能是椭圆); 2,大小是指渐变从圆心开始向外进行过渡变化的距离(半径),圆用一个值,椭圆用2个值(空格隔开); 大小还可以使用如下4个关键字: farthest-corner: 最远角,表示从圆心开始,渐变到最远的角的位置。下面也类似; farthest-side: 最远边; closest-corner: 最近角; closest-side: 最近边; 3,位置可以是一个值(表示横坐标,纵坐标默认居中),或2个值(横纵坐标,空格隔开);位置还可以使用top, right, bottom,left,center这5个关键字; 4,颜色至少包含2个,每个颜色还可以设定“截止位置”; 举例: ``` background-image: radial-gradient(red, green, white); //默认为适应盒子,并在中心 background-image: radial-gradient(circle,red, green, white); //设定为圆形 background-image: radial-gradient(circle at 60px 30px, red, green, white); //圆心位置为(60,30) background-image: radial-gradient(farthest-side at 60px 30px, red, green, blue); //渐变到最远角 background-image: radial-gradient(circle closest-side, red, green, blue);//圆形,渐变到最近的边 background-image: radial-gradient(100px, red, green, blue);//大小为100px(圆形),默认在中心位置 background-image: radial-gradient(100px 50px, red, green, blue);//大小为100px和50px(椭圆形) ``` ![](https://img.kancloud.cn/aa/9c/aa9c2bf1fcce9cada43ffbd2f18ef766_944x489.png) ![](https://img.kancloud.cn/6d/61/6d617025eb991798bb5f7ef788d76dce_260x168.png)