半透明边框
当有容器b在容器a内 容器b用了背景色和半透明边框 则通过半透明边框只能看到容器b的背景色 看不到容器a的背景色,可以在容器b加属性background-clip: padding-box,表示讲容器b边框处的背景色裁掉,就可以半透明看到容器a的背景而不是容器b的背景色
多重边框
box-shadow实现
可以通过bos-shadow属性实现,属性可以跟多个参数,表示多个边框,边框顺序是按从上到下叠加的,也就是每个边框的半径都是基于元素,而不是上一个边框最外围的位置。
格式:box-shadow: 水平偏移 垂直偏移 模糊半径 扩展半径 颜色 内外阴影
例子:box-shadow: 0 0 0 10px #655, 0 0 0 15px deeppink;
bos-shadow不会受到布局影响,需要给容器预留出对应的内边距和外边距,默认是在外面,可以通过设置弄到内边距,但要留出对应的边距
可以在box-shadow的基础上在加一个层表示背景阴影,阴影用透明色实现,扩展半径和上一层元素的一样,模糊半径是作用在扩展半径内的,但因为模糊,在扩展半径外,会多出模糊半径/2的位置能看到模糊
缺点:不能实现丰富样式边框,比如不能实现虚线边框
outline实现
outline只能实现两个边框,一个由border实现,一个由outline实现,三个就不行了。outline和border简写格式类似,outline的border宽度是以border为基准的 不是以padding边缘
背景定位
问题:背景图片精准定位,css2只能用background-position关键字或百分比相对左上角定位,是相对paddingbox的左上角,即以padding左上角为原点,如果想相对右下角 就比较难
方案1:css3的background-position语法支持相对别的角规定,如background-position: right 20px, bottom 40px;如果不支持css3,如果没有别的配置,则背景默认会固定在左上角,可以在background简写中加上默认对左上角的偏移,避免不支持css3时,使用默认配置
方案2:background-origin
background-position默认是在paddingbox左上角对齐,css3有新属性background-origin,可以规定非paddingbox默认对齐,比如可以和contentbox对齐,可节省background-position写入数值的麻烦 直接改padding即可
方案3:calc
background-position: calc(100% - 20px) calc(100% - 10px) 相对左上角
边框内圆角
问题:一个方框,有border,border外是方框,border内是圆角方框,两个元素可以轻松实现,即外容器设置背景,内元素设置圆角,但一个元素怎么做
方案:不行了 教材写的时候 box-shadow跟圆角 但outline不跟圆角 两个叠加可以 现在浏览器outline也跟圆角了 不行了
条纹背景
水平条纹:用线性渐变即可 background: linear-gradient(#fb3 20%, #58a 0%), background-size: 100% 30px; 默认会平铺满
垂直条纹:还用线性渐变,入参加个方向
background: linear-gradient(to right, #fb3 20%, #58a 0%);
background-size: 30px 100%;
斜向条纹:将线性渐变第一个参数改为角度,但直接改会失败,像贴地砖,条纹不重合
background: linear-gradient(45deg, #fb3 25%, #58a 0, #58a 50%, #fb3 0, #fb3 75%, #58a 0);
background-size: 30px 30px;
自定义角度条纹:用repeating-linear-gradient:
background: repeating-linear-gradient(60deg, #fb3, #fb3 15px, #58a 0, #58a 30px)